|
![]() |
#1 |
Участник
|
На сколько я понял, автор попытался с помощью макросов сделать своеобразный конструктор диалогов для запроса у пользователя параметров, которые потом можно использовать в условии where запроса.
Также согласен с вами, что использование QueryRun предпочтительнее. В свою очередь могу поделиться собстенным инструментом для запроса у пользователя каких-либо параметров. Использую его, когда нужно создать "на лету" простейший диалог, который не может быть связан с каким-либо источником данных. X++: static container InputBox(container _conFields, caption _caption = '') { Dialog dlg = new Dialog(); container ret = conNull(); int n = conlen(_conFields); int i; List listFields = new list(Types::Class); ListEnumerator enumerator; ; for (i = 1; i <= n; i += 3) { listFields.addEnd( dlg.addFieldValue( conpeek(_conFields, i), conpeek(_conFields, i + 1), conpeek(_conFields, i + 2))); } dlg.caption(_caption); if (dlg.run()) { enumerator = listFields.getEnumerator(); while (enumerator.moveNext()) { ret += enumerator.current().value(); } } return ret; } Пример использования статической функции InputBox X++: static void JobTestInputBox(Args _args) { ItemId ItemId; fromDate fromDate; toDate toDate; container con; ; // Тройки параметров аналогичны параметрам метода DialogRunbase.addFieldValue(...) con = InputBox( [typeid(ItemId), ItemId, '', typeid(fromDate), fromDate, '', typeid(toDate), toDate, ''], 'ТЕСТ'); if (con == conNull()) // Пользователь нажал кнопку "Отмена" { info('Операция прервана пользователем'); return; } [ItemId, fromDate, toDate] = con; info(strfmt('ItemId: %1', ItemId)); info(strfmt('fromDate: %1', fromDate)); info(strfmt('toDate: %1', toDate)); } |
|
![]() |
#2 |
Ищущий знания...
|
Цитата:
Вот Вы к вопросу подошли куда более профессионально, создав свою статическую функцию! Ваш код легко читается, и при поддержке его другим программистом никаких трудностей не возникнет, все достаточно прозрачно и понятно.
__________________
"Страх перед возможностью ошибки не должен отвращать нас от поисков истины." (с) С Уважением, Елизаров Артем |
|
![]() |
#3 |
MCT
|
Это еще цветочки, я работал на проекте, где было жесткое требование в части запросов, что если запрос используется более одного раза, то записывать его макросом. Интересно было было отлаживать такие вещи
![]() И этот человек ушел потом на повышение ![]()
__________________
Axapta book for developer |
|
![]() |
#4 |
Ищущий знания...
|
Цитата:
![]()
__________________
"Страх перед возможностью ошибки не должен отвращать нас от поисков истины." (с) С Уважением, Елизаров Артем |
|
|
За это сообщение автора поблагодарили: MikeR (1). |
|
![]() |
||||
Тема | Ответов | |||
axaptapedia: RunBaseBatch | 0 | |||
axaptapedia: RunBaseBatch | 0 | |||
axaptapedia: Macro | 1 | |||
axaptapedia: Adding only one Dimension in Dialog | 1 | |||
Kashperuk Ivan: 3 Dialog extensions | 4 |
Опции темы | Поиск в этой теме |
Опции просмотра | |
|