01.06.2016, 01:34 | #1 |
Участник
|
Ax2012 Один дизайн , но два отчета c разными диалогами. Как?
Существует отчет с уже сделанным навороченным дизайном
Появилось требование сделать "проформу" этого же документа. То есть, оставить дизайн нетронутым, но меняется то, как получаем данные. Код для проформы был добавлен в тот же DP класс. И все бы хорошо, но теперь еще захотели на диалог отчета положить иной запрос. То есть, если в оригинальном отчете пользователь накладывает определенные ограничения на Запрос по таблице A, то в случае Проформы - по таблице Б Отсюда вопрос - как такое реализовать, подставлять по условию нужный запрос на форму диалога. Ведь запрос прошит в атрибутах DP. Наследовать тоже никак не получается. Думаю , можно было бы по условию подставлять запрос в prePromtModifyContract, но , перестанет корректно сохраняться в Usage data |
|
01.06.2016, 11:15 | #2 |
Участник
|
отчеты на внутреннем движке или в SSRS?
1. придется повозится 2. см. в сторону класса RunBaseReport. в аксапте есть куча примеров. суть - класс готовит данные, вызывает отчет, а отчет запрашивает данные у вызывающего класса через caller. скорее всего, придется вводить и заполнять временные таблицы и в новом, и в старом классах скорее всего, придется перепривязывать контролы отчета с постоянных таблиц на временные. |
|
01.06.2016, 12:06 | #3 |
Участник
|
1) SSRS (Ax2012).
2) извините, не совсем понимаю, как RunBaseReport может помочь. Проблема в моем случае по сути в запросе, кот в DP прописан(=привязан) и нельзя его динамически подменить |
|
01.06.2016, 15:10 | #4 |
Участник
|
Если кому интересно, нашла как подставить запрос
X++: q = new Query(queryStr(MyNewQuery)); q.name('MyOldQueryName'); controller.parmLoadFromSysLastValue(false); controller.parmReportName(ssrsReportStr(MyReport, Proforma)); contract = controller.getDataContractInfoObject(controller.getFirstQueryContractKey()); contract.parmQuery(q); Есть две засады: 1) Не очень красиво, что нужно обманывать аксапту, подставляя новый запрос, но присваивая ему имя старого. Если этого не сделать, то получаешь сообщение Цитата:
Query for report parameter MyReportDP_DynamicParameter has a mismatch. Expected "MyOldQueryName", actual "MyNewQueryName".
Вообщем, это, видимо, единственный более-менее корректный способ добиться желаемого, но по большому счету гибкости имплементации MVC в AX, имхо, очень не хватает. Спасибо AndyD за пост Как заставить query добавленный в run time отобразится в диалоговом окне SSRS отчета? Последний раз редактировалось kitty; 01.06.2016 в 16:33. |
|
|
За это сообщение автора поблагодарили: Jorj (1). |
|
Опции темы | Поиск в этой теме |
Опции просмотра | |
|