30.08.2005, 17:41 | #1 |
Гость
|
Интересные вещи в Аксапте
Выберите номенклатуру.
Я уже не спрашиваю, почему метод modified вызывается 2 раза (попробуйте закоментировать строчку ctrlDate.visible(true); Больше всего мне интересно, почему второй Leave - с большой буквы ! |
|
30.08.2005, 18:16 | #2 |
Участник
|
М-да.
Если посмотреть цепочку вызовов, то получится вот что \Forms\Form1\Data Sources\TmpInventClosing\Fields\ItemId\Methods\modified - line 6 \Classes\FormStringControl\modified \Classes\FormStringControl\leave \Forms\Form1\Designs\Design\[Grid:Grid]\StringEdit:TmpInventClosing_ItemId\Methods\leave - line 8 \Classes\FormDateControl\visible \Forms\Form1\Data Sources\TmpInventClosing\Fields\ItemId\Methods\modified - line 6 \Classes\FormStringControl\Modified т.е. при внутри visible() происходит вызов leave() для сфокусированного контрола с последующим вызовом modified() для него. Насчет того, почему различается регист не знаю, но под отладчиком то же самое первый вызов \Forms\Form1\Designs\Design\[Grid:Grid]\StringEdit:TmpInventClosing_ItemId\Methods\leave - line 8 второй вызов \Forms\Form1\Designs\Design\[Grid:Grid]\StringEdit:TmpInventClosing_ItemId\Methods\Leave - line 8 |
|
30.08.2005, 18:17 | #3 |
NavAx
|
А для меня странно, почему M-L-L-M, а не L-M-L-M...
__________________
Isn't it nice when things just work? |
|
30.08.2005, 18:34 | #4 |
Участник
|
Все дело, как ее готовить
Вот цепочка вызовов modified()->visible()->leave()->modified()->visible()->возврат в modified()->"M"->возврат в Leave()->"L"->возврат в visible()->leave()->"L"->возврат в modified()->"M" Получается, что visible() дважды вызывает leave(). Точнее даже не так. В первый раз вызывается leave(), а во второй Leave() |
|
30.08.2005, 18:37 | #5 |
Участник
|
Мне кажется, что можно ставить памятник разработчикам Axapta'ы, за то, что в данной случае она вообще не зациклилась.
|
|
30.08.2005, 18:49 | #6 |
Гость
|
Вы пока осмысляйте, а завтра я вам еще один фокус покажу
|
|
30.08.2005, 19:41 | #7 |
Участник
|
Да, кстати, в посте ниже я оказался прав.
Вызовы действительно так и стоят leave() и Leave(). funcname() возвращает наименование метода в таком же виде, как и написано при вызове. Т.е. если бы стояло LeAvE(), то это мы бы и увидели. 2 ahtoh А что собственно осмыслять? По-моему на все вопросы есть ответы, или не так? А за вопрос спасибо, особенно в конце рабочего дня. PS Извиняюсь, я имел в виду в посте выше |
|
30.08.2005, 20:08 | #8 |
Гость
|
ну, главный вопрос, почему visible вызывает leave, остался открытым =)
|
|
30.08.2005, 21:10 | #9 |
Участник
|
Это удар ниже пояса. Неспортивно.
Для того, что ответить на него точно надо иметь доступ к исходникам FormDateControl |
|
31.08.2005, 16:17 | #10 |
Гость
|
вот пример, где этот косяк вылазиет в Оксапте:
на любой форме, где есть номенклатура и складские аналитики: к примеру: Форма PurchTable: при изменении itemId вызывается \Forms\PurchTable\Data Sources\PurchLine\Fields\ItemId\Methods\modified element.updateDesign(InventDimFormDesignUpdate::FieldChange); inventDimFormSetup.formSetControls(false); в итоге вызывается метод \Classes\InventDimCtrl_Frm\updateControls где есть такая штука: fc.visible(!fc.visible()); дальше сами догадайтесь, что происходит никогда не замечали, почему номенклатура выбирается так долго? |
|
31.08.2005, 16:23 | #11 |
Гость
|
(C) \Forms\PurchTable\Data Sources\PurchLine\Fields\ItemId\Methods\modified - line 18
(C) \Classes\FormStringControl\modified (C) \Classes\FormStringControl\leave (C) \Classes\FormStringControl\visible (C) \Classes\InventDimCtrl_Frm\updateControls - line 26 (C) \Classes\InventDimCtrl_Frm\formSetControls - line 10 (C) \Forms\PurchTable\Methods\updateDesign - line 21 (C) \Forms\PurchTable\Data Sources\PurchLine\Fields\ItemId\Methods\modified - line 18 (C) \Classes\FormStringControl\Modified |
|
02.02.2009, 14:15 | #12 |
Участник
|
Кто-то еще может подтвердить, что данная проблема уже не происходит?
Пробовал, пробовал. Вроде все ОК... |
|
02.02.2009, 14:24 | #13 |
Участник
|
В какой версии? В 3.0 происходило.
__________________
Энергия молодых и неравнодушных способна изменить мир к лучшему. |
|
02.02.2009, 14:33 | #14 |
Участник
|
Ну, меня интересует самая последняя версия. 2009, даже может SP1
|
|
02.02.2009, 16:09 | #15 |
MCITP
|
2009 SP1 - практически сэйм шит, разве что Leave пропал куда-то
Цитата:
Сообщение (14:52:54)
modified leave modified Цитата:
[c] \Forms\Form1\Data Sources\TmpInventClosing\Fields\itemId\Methods\modified
[c] \Classes\FormStringControl\modified [c] \Classes\FormStringControl\leave [c] \Classes\FormDateControl\visible [c] \Classes\FormStringControl\Modified
__________________
Zhirenkov Vitaly |
|
02.02.2009, 16:42 | #16 |
Участник
|
Хмм. Вы уверены?
У меня на 2009 RTM нет таблицы TmpInventClosing, а у вас на SP1 - есть? |
|
02.02.2009, 16:57 | #17 |
MCITP
|
Цитата:
Просто DS называется по старому, на самом деле там таблица TmpInventAge прописана. Сути это не меняет, мне кажется... Проект вложить?
__________________
Zhirenkov Vitaly |
|
02.02.2009, 17:04 | #18 |
Участник
|
Цитата:
Спасибо |
|
02.02.2009, 17:15 | #19 |
MCITP
|
Вложил...
По поводу второго косяка, описанного выше (про форму PurchTable), то я не смог его повторить ни на Ax3 sp3 kr3, на на 2009 sp1. У меня хоть убей при изменении номенклатуры в строчку "fc.visible(!fc.visible());" не входит... Вероятно в том случае были ещё какие-то доп. условия... или может более старый СП или КР так вёл себя...
__________________
Zhirenkov Vitaly |
|
|
За это сообщение автора поблагодарили: kashperuk (5). |
02.02.2009, 17:30 | #20 |
Участник
|
Цитата:
Сообщение от ZVV
Вложил...
По поводу второго косяка, описанного выше (про форму PurchTable), то я не смог его повторить ни на Ax3 sp3 kr3, на на 2009 sp1. У меня хоть убей при изменении номенклатуры в строчку "fc.visible(!fc.visible());" не входит... Вероятно в том случае были ещё какие-то доп. условия... или может более старый СП или КР так вёл себя... А про PurchTable - у тебя в гриде строк закупки отображены аналитики какие-то? Возможно это является необходимым условием.. |
|