21.10.2016, 01:41 | #1 |
Участник
|
Доступ к текущему Query в диалоге
Добрый вечер.
Подкинули задачку в рамках измeнения SSRS отчёта на AX 2012 R3 попутно добавить несколько дополнительных параметров в диалог этого отчёта и сделать их доступными или не доступными по условию - параметры доступны если отчёт будет печататься только для одного покупателя, а если больше чем один, то параметры выключить. Количество покупателей определяется как обычно через фильтры Query. Отчёт строит свой диалог с помощью UIBuilder класса, стандартно располагая кучу параметров с левой стороны и блок фильтров Query с кнопкой Select слева. Изменять сами контролы параметров на диалоге очень легко, а вот получить текущее состояние Query с фильтрами которые выбрал пользователь у меня пока что не получилось. Тоесть я добрался до Query отчёта через класс контроллер, вот только это не текущий элемент диалога а сохранённый с прошлого запуска Query который приходит в диалог во время построения и соответственно не изменяется в ран тайме когда пользователь изменяет фильтры на диалоге. Надеюсь кто-нибудь сталкивался с подобной задачей и решил её.
__________________
С уважением, Dozer |
|
21.10.2016, 06:31 | #2 |
Модератор
|
См. QueryFilter
__________________
-ТСЯ или -ТЬСЯ ? |
|
21.10.2016, 17:09 | #3 |
Участник
|
Тут вероятно произошло недопонимание
Я знаю как получить фильтры когда у меня есть Query, более того в данном случае мне даже не надо их получать, а достаточно прогнать QueryRun от него и посчитатать до двух. Проблема в том что у меня нет этого самого текущего Query в ран тайме диалога, и соответственно не у чего смотреть фильтры или прогонять ран.
__________________
С уважением, Dozer |
|
31.10.2016, 12:50 | #4 |
Участник
|
Не сильно силен в 2012, но не оно ли?
X++: this.dataContractInfo().dataContractObject() as Query;
__________________
// no comments |
|
01.11.2016, 20:04 | #5 |
Участник
|
Да, таким образом можно получить Query отчёта который сохранился с прошлого раза. Тоесть это Query распакованый но к сожалению не текущий. Он не меняется в рантайме диалога, по крайней мере для данного отчёта.
__________________
С уважением, Dozer |
|
02.11.2016, 09:39 | #6 |
Участник
|
не пробовал для SSRS, но для обычного SysOperation работает
X++: SysOperationQueryDataContractInfo queryInfo; Query query; queryInfo = this.dataContractInfo().getMemberObjects().lookup(methodStr(yours method with query in contract class)); query = queryInfo.dataContractObject(); |
|
04.11.2016, 15:54 | #7 |
Участник
|
Не знаю, то ли это или не то - в Controller можно перекрыть метод queryChanged. Когда пользователь выбирает что то и нажимает кнопку ОК, срабатывает этот метод, туда передается query со всеми установленными параметрами, кот. он выбрал.
|
|
|
За это сообщение автора поблагодарили: Dozer (1). |
07.11.2016, 21:44 | #8 |
Участник
|
Цитата:
Оно всё ещё не совсем то что нужно и он не вызывается прямо через UIBuilder и по умолчанию не сохраняет Query куда надо, но тут можно поимпровизировать. Спасибо за наводку.
__________________
С уважением, Dozer |
|