![]() |
#2 |
Ищущий знания...
|
что то я не понял в чем тут прелесть использования макроса?
гораздо нагляднее и проще вывести на диалог query, где пользователь спокойно может указать диапазон через "..". Более того, в query пользователь сможет, при желании, добавить ещё и свое поле с условием для выборки. Вот такой код, ИМХО, проще для понимания и поддержания: 1. Создаем класс для нашего отчета\функции и наследуем его от RunBase. 2. Перекрываем методы: QueryRun - указываем свой queryRun, который определили в ClassDeclaration; ShowQueryValues - возвращаем true; Pack; UnPack; InitParmDefault. 3. Создаем метод InitQuery в котором пишем запрос для нашего диалога: X++: Query query = new Query(); QueryBuildDataSource qbds; ; qbds = query.addDataSource(tableNum(CustInvoiceTable)); qbds.addRange(fieldNum(CustInvoiceTable, CustGroupId)); qbds.addRange(fieldNum(CustInvoiceTable, CustAccount)); qbds.addRange(fieldNum(CustInvoiceTable, InvoiceAccount)); qbds.addRange(fieldNum(CustInvoiceTable, InvoiceDate)); qbds.addRange(fieldNum(CustInvoiceTable, InvoiceId)); queryRun = new QueryRun(query); // queryRun объявлен в ClassDeclarartion класса и все, при выполнении нашего отчета\функции появиться диалог, в котором пользователь может указать хоть диапазон, хоть одно значение, хоть несколько значений через запятую, хоть вообще добавить свое поле и указать для него значение. потом в Run будет простой перебор X++: while(queryRun.next()) ![]()
__________________
"Страх перед возможностью ошибки не должен отвращать нас от поисков истины." (с) С Уважением, Елизаров Артем |
|
|
За это сообщение автора поблагодарили: mazzy (2). |
|
![]() |
||||
Тема | Ответов | |||
axaptapedia: RunBaseBatch | 0 | |||
axaptapedia: RunBaseBatch | 0 | |||
axaptapedia: Macro | 1 | |||
axaptapedia: Adding only one Dimension in Dialog | 1 | |||
Kashperuk Ivan: 3 Dialog extensions | 4 |
|