29.03.2012, 09:21 | #1 |
Участник
|
Отображение аналитики InventDimParm
Всем добрый день. Ситуация такая: Создана новая форма, источником данных которой является временная таблица, содержащая поле InventDimId. На форму добавлена кнопка Отображение аналитики (как в стандартном функционале). Видимость и скрытие складских аналитик отрабатывает нормально. Проблема в том, что при изменении пользователем настроек по кнопке Отображение аналитики, необходимо запускать пересчет временной таблицы (идет группировка по соответствующим складским аналитикам), но как получить текущие значения InventDimParm я не знаю. Уверенна, что есть стандартные методы, но не знаю какие. При первом запуске формы все отрабатывает корректно inventDimParm = inventDimFormSetupGroup.parmDimParmVisibleGrid(). Однако, после нажатия кнопки этот метод содержит совершенно не те значения, которые были введены.
|
|
29.03.2012, 09:38 | #2 |
Ищущий знания...
|
Цитата:
Сообщение от Mila
Всем добрый день. Ситуация такая: Создана новая форма, источником данных которой является временная таблица, содержащая поле InventDimId. На форму добавлена кнопка Отображение аналитики (как в стандартном функционале). Видимость и скрытие складских аналитик отрабатывает нормально. Проблема в том, что при изменении пользователем настроек по кнопке Отображение аналитики, необходимо запускать пересчет временной таблицы (идет группировка по соответствующим складским аналитикам), но как получить текущие значения InventDimParm я не знаю. Уверенна, что есть стандартные методы, но не знаю какие. При первом запуске формы все отрабатывает корректно inventDimParm = inventDimFormSetupGroup.parmDimParmVisibleGrid(). Однако, после нажатия кнопки этот метод содержит совершенно не те значения, которые были введены.
P.S. желательно с примером кода
__________________
"Страх перед возможностью ошибки не должен отвращать нас от поисков истины." (с) С Уважением, Елизаров Артем |
|
29.03.2012, 10:03 | #3 |
Участник
|
InventDimFormSetup заполняю по аналогии со стандартными формами в методе UpdateDesignGroup, который вызывается при инициализации формы. Вот его код:
X++: void updateDesignGroup(InventDimFormDesignUpdate mode) { InventTable inventTable; ; switch ( mode ) { case InventDimFormDesignUpdate::Init : if ( !inventDimFormSetupGroup ) inventDimFormSetupGroup = new InventDimCtrl_Frm( element ); inventDimFormSetupGroup.parmSkipOnHandLookUp( true ); // do continue case InventDimFormDesignUpdate::Active : inventTable = InventTable::find(ICLtmpProdRoutePlanGroup.itemId ); inventDimFormSetupGroup.formActiveSetup( inventTable.dimGroupId ); inventDimFormSetupGroup.formSetControls( true ); break; case InventDimFormDesignUpdate::FieldChange : inventTable = InventTable::find(ICLtmpProdRoutePlanGroup.itemId ); inventDimFormSetupGroup.formActiveSetup( inventTable.dimGroupId ); inventDimGroup.clearNotSelectedDim( inventDimFormSetupGroup.parmDimParmEnabled() ); inventDimFormSetupGroup.formSetControls( true ); break; default : throw error(strfmt("@SYS54195",funcname())); } } А заполнять InventDimParm я пыталась и так: X++: InventDimParm inventDimParm = inventDimFormSetupGroup.parmDimParmVisibleGrid(); X++: InventDimParm inventDimParm = inventDimFormSetupGroup.parmDimParmVisible(); |
|
29.03.2012, 10:06 | #4 |
Участник
|
Пробовала даже отдельную кнопку сделать Обновить, и по ней запускать пересчет временной таблицы, но для этого все равно нужно получить текущие настройки InventDimParm
|
|
29.03.2012, 10:21 | #5 |
Ищущий знания...
|
Цитата:
Сообщение от Mila
А дальше в методе active источника данных формы пыталась проанализировать изменилось ли содержание inventDimParm, и после нажатия кнопки Отображение аналитики, в методе Clicked.
А заполнять InventDimParm я пыталась и так: X++: InventDimParm inventDimParm = inventDimFormSetupGroup.parmDimParmVisibleGrid(); X++: InventDimParm inventDimParm = inventDimFormSetupGroup.parmDimParmVisible(); правильно я понимаю, что вы заполняете inventDimParm до super() в методе? если вам нужно получить inventDimParm, новый, который пользователь указал на форме, то нужно заполнять inventDimParm после super().
__________________
"Страх перед возможностью ошибки не должен отвращать нас от поисков истины." (с) С Уважением, Елизаров Артем |
|
29.03.2012, 10:48 | #6 |
Участник
|
Я, наверное, неправильно объясняю. InventDimParm у меня заполняется в методе, который вызывается вообще по отдельной кнопке Обновить (можно назвать пересчитать, неважно). На эту кнопку я нажимаю после того, как нажала на кнопку Отображение аналитики (временно пока так сделала). Поэтому super() тут не при чем. Тут похоже проблема в том, что перед заполением InventDimParm нужно вызвать что-то типа
X++: element.updateDesignGroup(InventDimFormDesignUpdate::FieldChange); |
|
29.03.2012, 11:07 | #7 |
Участник
|
Все. Вопрос похоже решился. На самом деле метод inventDimFormSetup.parmDimParmVisibleGrid() правильно все возвращает.
Проблема была в том, что у меня на форме 2 закладки. Для каждой из них свой источник данных, своя аналитика. Я написала 2 метода updateDesign и updateDesignGroup, а кнопка Отображение аналитики только одна. После того как оставила только один метод - все заработало. На обеих вкладках все корректно отображается и InventDimParm получила тоже корректный. Спасибо за помощь |
|
|
Опции темы | Поиск в этой теме |
Опции просмотра | |
|