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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 08.09.2020, 18:20   #1  
trud is offline
trud
Участник
Лучший по профессии 2017
 
1,039 / 1633 (57) ++++++++
Регистрация: 07.06.2003
Записей в блоге: 1
Вызов SysOperation с параметрами по умолчанию
Хочу вызвать класс InventSumSummarizeService из кода с параметрами по умолчанию(без диалога). Для этого написал следующий код
X++:
inventSumSummarizeService = new InventSumSummarizeService();
dataContract = InventSumSummarizeContract::construct();
query = new Query(querystr(InventSumSummarize));         //3         
dataContract.parmQuery(SysOperationHelper::base64Encode(query.pack());  //4
inventSumSummarizeService.summarize(dataContract);
Не очень нравятся строчки 3 и 4. Т.е.в контракте(в атрибутах) уже определена Query, а тут получается я ее опять переопределяю при вызове. Ну и если кто-то поменяет Query в контракте, мой код соответственно перестанет работать. Вопрос - можно ли вызвать это более элегантно, без дублирования имени Query? т.е. передать по умолчанию то что определено в атрибуте(в RunBase классах для этого существует initParmDefault)
Старый 08.09.2020, 21:33   #2  
wojzeh is offline
wojzeh
Участник
Аватар для wojzeh
Соотечественники
 
674 / 512 (19) +++++++
Регистрация: 27.04.2006
Адрес: Montreal
не очень понял, что именно ты хочешь сделать.

что будет являться "параметрами по умолчанию" для твоего случая запуска без диалога?

если кто-то поменяет код в контракте, твой код будет работать точно так же: ты же его заменяешь, вызывая dataContract.parmQuery(...)
__________________
Felix nihil admirari
Старый 09.09.2020, 02:22   #3  
trud is offline
trud
Участник
Лучший по профессии 2017
 
1,039 / 1633 (57) ++++++++
Регистрация: 07.06.2003
Записей в блоге: 1
Цитата:
Сообщение от wojzeh Посмотреть сообщение
что будет являться "параметрами по умолчанию" для твоего случая запуска без диалога?

если кто-то поменяет код в контракте, твой код будет работать точно так же: ты же его заменяешь, вызывая dataContract.parmQuery(...)
Да, я хочу избежать вызова dataContract.parmQuery(). Т.е. чтобы та Query которая там задана по умолчанию, та пусть и передается. Сам метод в контракте выглядит так
X++:
[DataMemberAttribute, AifQueryTypeAttribute('_query', querystr(InventSumSummarize))]
public str parmQuery(str _query = query)
{
Старый 09.09.2020, 07:31   #4  
SRF is offline
SRF
Участник
MCBMSS
Axapta Retail User
 
375 / 562 (19) +++++++
Регистрация: 08.08.2007
Записей в блоге: 1
Вроде в SysOperation аналогом initParmDefault выступает интерфейс SysOperationInitializable, пример в стандарте с query можно посмотреть вот тут WHSTransferAutoRTWContract.

Т.е. видимо в примере у вас уйдут строки 3\4, но добавится вызов initialize, правда придётся поменять код базового InventSumSummarizeContract.

https://community.dynamics.com/ax/f/...sys-operations
__________________
Sergey Nefedov
За это сообщение автора поблагодарили: trud (3).
Старый 09.09.2020, 09:56   #5  
Stitch_MS is offline
Stitch_MS
Участник
Аватар для Stitch_MS
Соотечественники
 
397 / 478 (16) +++++++
Регистрация: 27.02.2006
Адрес: Дания
X++:
         SysDictMethod methodInfo = new SysDictMethod(
            UtilElementType::ClassInstanceMethod,
            classNum(InventSumSummarizeContract),
            methodStr(InventSumSummarizeContract, parmQuery));
         AifQueryTypeAttribute queryAttribute = methodInfo.getAttribute(classStr(AifQueryTypeAttribute));
         Query query = new Query(queryAttribute.queryName());
За это сообщение автора поблагодарили: trud (5).
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
ariste.info: Add a Menu Item to a SysOperation dialog Blog bot DAX Blogs 0 16.07.2020 13:11
ariste.info: Add multi selection lookup to a SysOperation Framework dialog Blog bot DAX Blogs 0 21.01.2020 11:11
erconsult: Extending SysOperation contracts with DataMemberAttribute Blog bot DAX Blogs 0 02.03.2019 22:16
stoneridgesoftware: Batch Processing in Dynamics AX 2012 Using SysOperation Framework Blog bot DAX Blogs 0 28.03.2017 00:11
emeadaxsupport: Update to AX 2012 Framework Component Documentation: SysOperation Framework Blog bot DAX Blogs 0 09.06.2012 00:11
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

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

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

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