11.02.2012, 17:36 | #1 |
Участник
|
Отключить диалог отчета
Добрый день!
Подскажите, пожалуйста, как при запуске отчета отключить диалог выбора параметров? И как тогда передать параметр программно? Спасибо! |
|
11.02.2012, 20:06 | #2 |
Участник
|
За отображение диалога отвечает метод promt(). Если вы вызываете отчёт из кода, просто не вызывайте этот метод. Параметры печати можно задать через printJobSettings.
Смотрите так же Как подавить стандартный progressbar при формировании встроенного отчёта? |
|
|
За это сообщение автора поблагодарили: yahenz (1). |
11.02.2012, 21:07 | #3 |
Участник
|
Спасибо, попробую.
|
|
12.02.2012, 00:00 | #4 |
Ищущий знания...
|
Добавлю, если необходимо запретить вывод диалога с запросом и параметрами печати у стандартного отчета (тот который расположен в АОТ в ветке Reports), тогда необходимо свойство отчета Interactive установить в "No" (по умолчанию там стоит "Yes").
__________________
"Страх перед возможностью ошибки не должен отвращать нас от поисков истины." (с) С Уважением, Елизаров Артем |
|
|
За это сообщение автора поблагодарили: Pustik (3), S.Kuskov (3), yahenz (1). |
20.02.2012, 18:37 | #5 |
Участник
|
Цитата:
X++: public boolean fetch() { QueryRun qr; QueryBuildRange rangeVendInvoice; Boolean ret; qr = new QueryRun(element); rangeVendInvoice=element.query().dataSourceTable(tablenum(VendInvoiceJour)).addRange(fieldnum(VendInvoiceJour, InvoiceId)); rangeVendInvoice.value("МойКритерийОтбора"); rangeVendInvoice.status(RangeStatus::LOCKED); if (qr.prompt() && element.prompt()) { while (qr.next()) { VendInvoiceJour_1= qr.get(tableNum(VendInvoiceJour)); VendInvoiceTrans_1= qr.get(tableNum(VendInvoiceTrans)); if (!VendInvoiceJour_1) { ret = false; break; } if (qr.changed(tableNum(VendInvoiceJour))) { element.send(VendInvoiceJour_1, 1); } if (qr.changed(tableNum(VendInvoiceTrans))) { element.send(VendInvoiceTrans_1, 2); } } ret = true; } else ret = false; return ret; } Как же быть тогда? П.С. Отчет вызывается через menu item. |
|
20.02.2012, 18:42 | #6 |
----------------
|
у Query в отчете есть такое же свойство Interactive.
ну и методы у вас... бедный fetch Последний раз редактировалось Wamr; 20.02.2012 в 18:48. |
|
|
За это сообщение автора поблагодарили: lev (3). |
20.02.2012, 20:53 | #7 |
Участник
|
|
|
20.02.2012, 21:34 | #8 |
Ищущий знания...
|
Цитата:
Сообщение от yahenz
Видимо, чего-то я упустил. Отключить диалог с параметрами печати посредством установки свойства Interactive в No удалось, но следом вызывается еще один диалог с выбором критериев отбора. Его-то мне и надо отключить, т.к. критерий отбора я формирую программно в методе fetch(), примерно так:
X++: public boolean fetch() { QueryRun qr; QueryBuildRange rangeVendInvoice; Boolean ret; qr = new QueryRun(element); rangeVendInvoice=element.query().dataSourceTable(tablenum(VendInvoiceJour)).addRange(fieldnum(VendInvoiceJour, InvoiceId)); rangeVendInvoice.value("МойКритерийОтбора"); rangeVendInvoice.status(RangeStatus::LOCKED); if (qr.prompt() && element.prompt()) { while (qr.next()) { VendInvoiceJour_1= qr.get(tableNum(VendInvoiceJour)); VendInvoiceTrans_1= qr.get(tableNum(VendInvoiceTrans)); if (!VendInvoiceJour_1) { ret = false; break; } if (qr.changed(tableNum(VendInvoiceJour))) { element.send(VendInvoiceJour_1, 1); } if (qr.changed(tableNum(VendInvoiceTrans))) { element.send(VendInvoiceTrans_1, 2); } } ret = true; } else ret = false; return ret; } Как же быть тогда? П.С. Отчет вызывается через menu item. а зачем тогда вот эти строчки в fetch()? X++: if (qr.prompt() && element.prompt())
{...
}
__________________
"Страх перед возможностью ошибки не должен отвращать нас от поисков истины." (с) С Уважением, Елизаров Артем |
|
20.02.2012, 21:39 | #9 |
Участник
|
Если отчет "обернут" в класс RunBaseReport, т.е. используется класс-наследник от этого класса, где в методе lastValueElementName() указано имя вызываемого отчета, то
1. Для подавления вывода кнопки "Выбрать" в диалоговом окне следует перекрыть метод showQuerySelectButton() и вернуть из него false не вызывая super(). Или, более "грубый" способ, аналогичным образом перекрыть метод showQueryValues() 2. Для изменения запроса в зависимости от настроек, сделанных пользователем необходимо перекрыть метод run() и в нем ДО вызова super() выполнить модификации Query, полученного через queryRun.Query() переменная queryRun - это глобальная переменная всех классов наследников от RunBaseReport, в которой, по умолчанию, содержится Query взятый из указанного в методе lastValueElementName() отчета.
__________________
- Может, я как-то неправильно живу?! - Отчего же? Правильно. Только зря... |
|
|
За это сообщение автора поблагодарили: alex55 (3). |
23.02.2012, 20:58 | #10 |
Участник
|
Всех благодарю за участие! Разобрался, все работает!
|
|
|
Опции темы | Поиск в этой теме |
Опции просмотра | |
|