12.09.2013, 18:03 | #1 |
Участник
|
Ограничение выборки перед открытием формы - как лучше сделать?
Есть форма на основе временной таблицы, она показывает вычисленные значения для каждой номенклатуры(около 15 полей на каждую номенклатуру).
Нужно ограничить количество записей в нее попадающих. Открывать сразу все, а потом накладывать фильтры - не вариант, тк она 100 лет рассчитываться будет + да и пользователю не нужны все записи. Они бы предпочли сразу указывать критерии,т.е какие номенклатуры им нужно рассчитать и показать. Как по бест-практис правильней сделать? Я пока думаю так: 1) класс MyClass- наследник runBase, кот показывает диалог для выбора критериев накладываемых на InventTable. Сформированный запрос по InventTable будет использоваться для ограничения количества номенклатур , попадающих в расчет врем талицы. 2) в его MyClass.run() по X++: new MenuFunction(menuitemdisplaystr(MyForm),MenuItemType::Display); 3) в init() MyForm через MyClass.parmQuery() достать и передать его в метод MyTmpTable:opulate(), который вставляет (на сервере) записи во врем таблицу и передает курсор обратно в форму. Все, вроде, хорошо и должно, думаю, работать, но: 1) Может, лучше просто открывать сразу MyForm, но пустой и сделать кнопку на ней для задания критериев inventTable. По OK в диалоге критериев заполнять врем таблицу и заполнять форму данными. Все-таки для аксапты не оч типично запрашивать критерии запроса перед открытием формы. 2) Не лучше ли в классе runBase сразу же заполнять на основе inventTable буфер врем талицы и уже по сути заполненную таблицу передавать в форму MyForm . (а не передавать запрос inventTable в форму , а потом уже в метод MyTmpTable:opulate, как указано выше). Т.о, если класс на сервере выполняется и врем таблица на сервере создается, то мы избегаем передачи запроса по inventTable на клиент в форму MyForm 3)Еще варианты/предложения/альтернативы? Спасибо AX2009 RU2 Последний раз редактировалось IKA; 12.09.2013 в 19:33. |
|