|
![]() |
#1 |
Участник
|
ena_ax, не ищите здесь готовых решений. По правилам этот форум не для рекламы, раздач и продаж готовых модификаций. Начните с простого:
1. Если под экспортом стандартных отчетов Вы подразумеваете вывод уже построенных отчетов во внутреннем формате: На форме SysPrintForm повесить опцию для вывода (\Forms\SysPrintForm\Designs\Design\[Group:MainGroup]\[Tab:MainTab]\[TabPage:General]\[Group:TargetSpecificationGroup]\[Tab:TargetTab]\[TabPage:ExcelTab]). В \Forms\SysPrintForm\Methods\ClassDeclaration прописать макрос #DEFINE.TAB_EXCEL(5) В \Forms\SysPrintForm\Methods\buildFormRun прописать: if (! clientSysPrintOptions.showOutputScreen()) { formListItem = new FormListItem("Excel", imageListAppl_Print.image(#ImageClass), PrintMedium::ViewerClass); sendTo.addItem(formListItem); В \Forms\SysPrintForm\Methods\closeOk прописать: if (clientSysPrintOptions.parmTarget() == PrintMedium::ViewerClass) { clientSysPrintOptions.parmViewerType(ReportOutputUserType::Viewer4); }В \Forms\SysPrintForm\Methods\changeTarget прописать: case PrintMedium::File: //,PrintMedium::ViewerClass: element.setTargetSettings(#TAB_FILE, "@SYS53220", PrintMedium::File, true, false); //AX4 2. Если Вы хотите создать отчеты с нуля с выводом в Excel: Определитесь, на основе какой технологии Вы собираетесь выполнять экспорт отчетов в Excel. Если на основе COM - технологии, то Вам необходимо: 1. Если при выводе необходимо создавать файл Excel и произвольным образом выводить в файл данные: На основе классов ComOfficeDocument_RU и ComExcelDocument_RU, предварительно их доработав, создать классы потомки которые и будут выполнять пересчет и вывод данных в Excel. 2. Если при выводе необходимо воспользоваться заранее заготовленным шаблоном то Вам необходимо создать для этого потомок RunBaseBatch. Обеспечить интерфейс ввода начальных данных перекрытием методов dialog(), init(), queryRun(), run() Далее в созданном методе, например setInitialParameters() определяем наличие в указанном месте файла шаблона при помощи winapi инициализируем введенные параметры и выводим отчет при помощи созданного для этих целей метода\методов. Для пересчета и вывода данных необходимо создать класс потомок. |
|
![]() |
#2 |
Участник
|
Поиск по тегу Законченный пример
![]() законченный пример Цитата:
А вот замешивать в обычные тематические ветки скрытую или явную рекламу - действительно запрещено. См. Концепция независимого форума AXForum и Лицензионное соглашение |
|
|
За это сообщение автора поблагодарили: Boris22 (1). |
![]() |
#3 |
Участник
|
Спасибо за разъяснения, Сергей!
Я тут новенький. Ещё всего не знаю. А с утверждением, извиняюсь, поторопился. |
|
![]() |
#4 |
Участник
|
case PrintMedium::ViewerClass:
element.setTargetSettings(#TAB_FILE, "@SYS53220",PrintMedium::ViewerClass, true, false); //AX4 Попробовал как в примере Boris22. (AX 4.0) но при нажатии ОК: Сообщение (16:07:24) Ошибка времени выполнения: ReportOutputUser (Объект), метод endReport вызван с недопустимыми параметрами. Трассировка стека (C)\Classes\ReportOutputUser\endReport (C)\Classes\ReportOutputUser\printViaClass (C)\Classes\ReportViewer\printToTarget (C)\Classes\ReportViewer\dialogAndPrint Похоже что для clientSysPrintOptions.parmViewerType(ReportOutputUserType::Viewer4); не предусмотрено какого то вывода. Можно ли как то выцепить данные из репорта (т.к. SysPrintForm запускается из него) и вывести их в Эксель в нормальном виде с одной шапкой и строками без пустых мест? |
|
![]() |
#5 |
Участник
|
|
|