|
20.05.2019, 11:48 | #1 |
Участник
|
Ax2012, SSRS, infolog
Есть AX2012R3, есть SSRS-отчет, есть DataProvider класс, в нем есть метод который заполняет временную таблицу, на основе которой строится отчет.
Хочется в этом методе сделать некоторую проверку, которая выведет что-нибудь в инфолог - ну, например, что в проводках по которым построился отчет, не заполнена какая-нибудь валюта. Если я просто в DataProvider делаю какой-нибудь info(), warning() - то это ничего не дает, конечно же. Попытался протащить через контракт: в контракте добавил set, для него добавил метод .parmSet() с атрибутами [DataMemberAttribute, SysOperationControlVisibilityAttribute(false), AifCollectionTypeAttribute("Infomessage", Types::String)] В DataProvider в .processReport() в этот .parmSet() положил множество строк с сообщениями В Controller в postReportRun из контракта достаю этот .parmSet() - там пусто Вопросы: 1) ЧЯДНТ с контрактом ? 2) Может я зря велосипед горожу, и описанный "вывод инфолога из дата провайдера" можно сделать как-то стандартно и просто ? |
|
20.05.2019, 12:22 | #2 |
Banned
|
Цитата:
Сообщение от Pandasama
Есть AX2012R3, есть SSRS-отчет, есть DataProvider класс, в нем есть метод который заполняет временную таблицу, на основе которой строится отчет.
Хочется в этом методе сделать некоторую проверку, которая выведет что-нибудь в инфолог ... Вопросы: 1) ЧЯДНТ с контрактом ? 2) Может я зря велосипед горожу, и описанный "вывод инфолога из дата провайдера" можно сделать как-то стандартно и просто ? class WrkCtrSchedulingInteropDataProvider method getCapacityReservations() Просто выбрасывает throw error("@SYS329762"); Я бы повыбрасывал throw error для теста, а затем наставил бы точек в Info. И потестировал в пакетном режиме помимо ручного. Скорее всего что-то типа AifInfolog.reset() не дает и пишет в log. В принципе не исключения, а просто инфолог и не должен быть в SSRS фрэймворк by design. |
|
|
За это сообщение автора поблагодарили: Logger (1). |
20.05.2019, 12:25 | #3 |
Участник
|
Не, мне не надо throw error - мне надо чтобы отчет отработал как надо, просто доп. информация вывелась потом пользователям
|
|
20.05.2019, 12:37 | #4 |
Banned
|
Поддержка warning таки есть.
SrsReport.warning("my warning"); которые потом Adds the warning messages that are created when a report is rendered to the infolog. SrsReportRun.displayReportWarnings() |
|
|
За это сообщение автора поблагодарили: Logger (3), Pandasama (1). |
20.05.2019, 12:41 | #5 |
Banned
|
Точно есть. Вопрос в том как класть.
Gets the warning messages that are generated when rendering a report. SrsProxy.getReportWarnings() В SSReport есть проперти warning. |
|
20.05.2019, 12:45 | #6 |
Banned
|
Этих паблик проперти warning натыкано практически во всех
в том числе SRSReportDataSource |
|
20.05.2019, 12:48 | #7 |
Участник
|
Спасибо, поизучаю этот момент
Правда есть подозрения, что это варнинги, которые идут из SSRS-сервера - типа там "обратите внимание: текст выходит за края отчета" или что-то в таком роде |
|
21.05.2019, 18:19 | #8 |
Участник
|
я что-то подобное делал через дополнительную таблицу: во время заполнения туда пишешь, потом откуда хочешь читаешь
__________________
Felix nihil admirari |
|
|
За это сообщение автора поблагодарили: ax_mct (1), Pandasama (1). |
21.05.2019, 19:02 | #9 |
Участник
|
|
|
22.05.2019, 11:45 | #10 |
Banned
|
Если нужна своя история то свой logging table будет практичнее. И показать в инфолог можно в конце работы отчета и показывать как историю через меню. Причем времени уйдет не больше чем разбираться куда пропадает инфолог, а гибкости больше.
|
|
Теги |
ax2012, ax2012r3, contract, infolog, ssrs |
|
|