AXForum  
Вернуться   AXForum > Microsoft Dynamics AX > DAX: Программирование
All
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 20.10.2011, 09:34   #1  
Eldar9x is offline
Eldar9x
MCTS
Аватар для Eldar9x
Oracle
MCBMSS
 
1,064 / 166 (8) ++++++
Регистрация: 29.09.2006
Адрес: Казань
Изменение пользовательского QueryRun в RunBaseBatch
Здравствуйте.
Есть обычный класс с полем даты на диалоге и еще пользовательский запрос на этом же диалоге (кнопка Выбрать). В run() происходит пробежка по пользовательскому QueryRun. Необходимо, когда пользователь нажмет ok, то для этого queryRun добавить еще условие по полю даты с диалога. Как это сделать правильно?
Старый 20.10.2011, 09:44   #2  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
в tutorial объектах есть пример.

суть: после super в init изменить queryRun.query()
__________________
полезное на axForum, github, vk, coub.
Старый 20.10.2011, 09:44   #3  
offenmeier is offline
offenmeier
HAI; CAN HAS STDIO?
Аватар для offenmeier
Соотечественники
 
77 / 36 (2) +++
Регистрация: 17.02.2005
Адрес: Auckland, NZ
немного неясен вопрос. но если ситуация такая, как я думаю, то в getFromDialog() забираем дату, и добавляем в виде условия в query перед тем, как её запускать:

X++:
QueryBuildDataSource    qbd;
QueryBuildRange    qbr;
;

qbd = this.query().getDataSource(tablenum(< >));
qbr = SysQuery::findOrCreateRange(qbd, fieldnum(< >, < >));
qbr.value(queryValue(<   >));
по идее всё.

P.S. да, в классе tutorial_RunbaseReport
__________________
our sharp bitter vitriol is not that of the vulgar.

Последний раз редактировалось offenmeier; 20.10.2011 в 09:47.
За это сообщение автора поблагодарили: Eldar9x (1).
Старый 20.10.2011, 09:56   #4  
Eldar9x is offline
Eldar9x
MCTS
Аватар для Eldar9x
Oracle
MCBMSS
 
1,064 / 166 (8) ++++++
Регистрация: 29.09.2006
Адрес: Казань
Ax 2009. Чет не нашел в тюториалах ничего похожего... В init опять же я не могу менять ничего. Потому что init() вызывается сразу же после new() и до promt(). Да и готовый пользовательский queryRun будет, наверное, как раз в getFromDialog после super(). То есть получается, самый правильный вариант - пропихивать пользовательские значения с полей в диалоге в пользовательский queryRun в методе getFromDialog()? Но опять же queryRun ведь придется заново создавать...
Старый 20.10.2011, 10:11   #5  
Eldar9x is offline
Eldar9x
MCTS
Аватар для Eldar9x
Oracle
MCBMSS
 
1,064 / 166 (8) ++++++
Регистрация: 29.09.2006
Адрес: Казань
Вообщем, getFromDialog() тоже не подойдет, потому что не факт, что класс будет вызываться вручную, а не из кода. К тому же я его делаю под пакетник, там вроде тоже getFromDialog не работает.
Старый 20.10.2011, 10:16   #6  
offenmeier is offline
offenmeier
HAI; CAN HAS STDIO?
Аватар для offenmeier
Соотечественники
 
77 / 36 (2) +++
Регистрация: 17.02.2005
Адрес: Auckland, NZ
не нужно queryRun заново создавать. главное чтобы у вас переменная с датой была готова на момент запуска query. queryRun содержит объект запроса.

кодом, который я привёл (только вместо this.query нужно queryRun.query) вставляете свою дату и должно сработать, пакетная обработка или не пакетная.

интерактивно - забираете дату из getFromDialog, пакетно - используете pack/unpack. а вообще в любом случае pack/unpack, чтобы ранее введённая дата сохранялась для текущего пользователя. best practice
__________________
our sharp bitter vitriol is not that of the vulgar.
Старый 20.10.2011, 10:30   #7  
Eldar9x is offline
Eldar9x
MCTS
Аватар для Eldar9x
Oracle
MCBMSS
 
1,064 / 166 (8) ++++++
Регистрация: 29.09.2006
Адрес: Казань
Цитата:
Сообщение от offenmeier Посмотреть сообщение
... а вообще в любом случае pack/unpack, чтобы ранее введённая дата сохранялась для текущего пользователя. best practice
Ну тогда в случае вызова класса из кода это работать не будет. Дату (там вообще говоря, др поле, но это не важно, будем считать для простоты, что это дата) я и так сохраняю в pack и восстанавливаю в unpack(). Точно так же сохраняется и восстанавливается queryRun. Так вот, если вызывать из кода этот класс:

X++:
AClass aClass = new AClass();

aClass.parmTransDate( transDate );

aClass.run();
То указанная дата не пропихнется в query, ктстати, тут тогда еще и query вообще не создаться.
Старый 20.10.2011, 10:33   #8  
pedrozzz is offline
pedrozzz
Молодой, подающий надежды
Аватар для pedrozzz
MCBMSS
Лучший по профессии 2015
 
164 / 218 (8) ++++++
Регистрация: 18.02.2010
Адрес: Краснодар
Цитата:
Сообщение от Eldar9x Посмотреть сообщение
Вообщем, getFromDialog() тоже не подойдет, потому что не факт, что класс будет вызываться вручную, а не из кода. К тому же я его делаю под пакетник, там вроде тоже getFromDialog не работает.
Я правильно понял, что класс может вызываться из кода, с установкой даты через parm-метод?

Тогда почему бы не создать метод, типа:
X++:
protected void updateQuery()
{
    QueryBuildDataSource    qbds;
    QueryBuildRange              qbr;
    ;

    if (! queryRun)
    {
        this.initQuery();
    }

    qbds = queryRun.query().dataSourceTable(tablenum(<>));
    qbr = SysQuery::findOrCreateRange(qbds, fieldnum(<>, <>));
    qbr.value(queryValue(<>));
}
и не вызывать его в run() ?
За это сообщение автора поблагодарили: Eldar9x (1).
Старый 20.10.2011, 10:38   #9  
Eldar9x is offline
Eldar9x
MCTS
Аватар для Eldar9x
Oracle
MCBMSS
 
1,064 / 166 (8) ++++++
Регистрация: 29.09.2006
Адрес: Казань
Ну да, все правильно. Вот нашел вроде, наконец-то, класс на системном слое ProjControlPosting, там именно так и делается. Спасибо всем за помощь!
За это сообщение автора поблагодарили: Player1 (2).
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
queryRun метод get SHiSHok DAX: Программирование 6 08.07.2011 16:46
axaptapedia: RunBaseBatch Blog bot DAX Blogs 0 04.04.2009 22:05
axaptapedia: RunBaseBatch Blog bot DAX Blogs 0 31.03.2009 06:06
OZKA's DAX Journal: Join между временной и постоянной таблицей через QueryRun. Blog bot DAX Blogs 12 14.01.2009 17:34
queryRun в рамках RunBaseBatch Smith DAX: Программирование 6 26.04.2005 11:03

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 23:01.