|
31.01.2011, 13:11 | #1 |
Участник
|
Запрос с начальным фильтром по-умолчанию
Привет, всем! Подскажите, какое свойство/метод управляет запуском запроса с параметром Выбрать запрос "Используемый запрос" (установленный в коде), а не "Ранее использованный запрос"? При повторном запуске скрипта, используется уже измененный фильтр, а необходимо всегда вызывать установленный по умолчанию
Например, X++: VendTable vendTable; Query query1 = new Query(); QueryBuildDataSource qbds = query1.addDataSource(tablenum(VendTable)); QueryBuildRange qbr = qbds.addRange(fieldnum(VendTable, AccountNum)); QueryRun qr; ; qbds.addOrderByField(fieldnum(VendTable, AccountNum)); qr = new QueryRun(query1); qr.query().dataSourceNo(1).addRange(fieldnum(VendTable, BankAccount)).value("*UA*"); qr.query().dataSourceNo(1).addOrderByField(fieldnum(VendTable, BankAccount)); if (qr.prompt()) { while (qr.next()) {
__________________
YURIY |
|
31.01.2011, 13:26 | #2 |
Участник
|
Судя по коду это метод fetch отчета, хотя могу ошибаться. Скорее всего, результаты последнего запроса сохраняются посредством методов pack() и unpack() либо в самом отчете (queryRun.pack()), либо в вызывающем классе, если таковой есть.
Можно либо не сохранять результаты запроса в этих методах, либо попробовать сделать так: X++: qbds.addOrderByField(fieldnum(VendTable, AccountNum)); qr = new QueryRun(query1); qr.query().dataSourceNo(1).clearRanges(); qr.query().dataSourceNo(1).addRange(fieldnum(VendTable, BankAccount)).value("*UA*"); qr.query().dataSourceNo(1).addOrderByField(fieldnum(VendTable, BankAccount)); if (qr.prompt()) { while (qr.next()) {
__________________
С уважением, Александр. |
|
31.01.2011, 13:42 | #3 |
Участник
|
Спасибо!
clearRanges() - пробовал, не работает, так как этот метод относится к конкретному ds. А указанное свойство относится к запросу в целом. Постараюсь покопатся в pack() и unpack(). Судя по всему именно их необходимо использовать
__________________
YURIY |
|
31.01.2011, 13:50 | #4 |
Аманд
|
В DAX 4.0 была фича, когда форму или запрос заданным фильтром выбираешь в Избранное, то Избранное сохраняет этот запрос и открывает форму уже с запросом пользователя.
В AX2009 пытался повторить - не получилось, может я не то что-то делал. |
|
31.01.2011, 14:04 | #5 |
Участник
|
Немного не так. Нужно создать ссылку в избранном, потом зайти в управление избранным, выбрать ссылку и для нее нажать кнопку выбора запроса (который нужно сохранить заранее).
__________________
Ivanhoe as is.. |
|
|
За это сообщение автора поблагодарили: mazzy (2), Vals (1), someOne (1). |
31.01.2011, 14:59 | #6 |
Участник
|
Цитата:
clearRanges() - пробовал, не работает, так как этот метод относится к конкретному ds. А указанное свойство относится к запросу в целом.
X++: for(i=1; i<=qr.query().dataSourceCount(); i++)
{
qr.query().dataSourceNo(i).clearRanges();
}
__________________
С уважением, Александр. |
|
01.02.2011, 09:47 | #7 |
Участник
|
Всем спасибо!
Один из вариантов решения: используем SysQueryRun вместо QueryRun и qr.saveUserSetup(false).
__________________
YURIY |
|
|
За это сообщение автора поблагодарили: Logger (2). |
02.02.2011, 12:11 | #8 |
Участник
|
|
|
17.12.2012, 12:24 | #9 |
Участник
|
Цитата:
X++: sysQueryRun = new SysQueryRun(query); sysQueryRun.init(); sysQueryRun.promptLoadLastUsedQuery(false); if(sysQueryRun.prompt()) |
|
|
За это сообщение автора поблагодарили: Corkscrew (1). |
17.12.2012, 12:34 | #10 |
Участник
|
Цитата:
Сообщение от yuriy_acti
Привет, всем! Подскажите, какое свойство/метод управляет запуском запроса с параметром Выбрать запрос "Используемый запрос" (установленный в коде), а не "Ранее использованный запрос"? При повторном запуске скрипта, используется уже измененный фильтр, а необходимо всегда вызывать установленный по умолчанию
Пожалуйста, не надо никаких "закатов солнца вручную" в формах и отчетах, в потомках от runbasebatch есть методы saveLast, getLast. Именно эти методы записывают текущий выполняемый запос и считывают в следующий раз записанное. Чтобы метод getLast не вспоминал, достаточно переопределить метод allowSaveLast, чтобы он возвращал false в момент, когда вспоминать старое не нужно (например, пусть всегда возвращает false) |
|
17.12.2012, 12:38 | #11 |
Участник
|
опа... а теме то уж 2 года.
|
|
Теги |
полезное |
|
Опции темы | Поиск в этой теме |
Опции просмотра | |
|