5.5. Отчеты#
Сервер приложений предоставляет возможность формирования электронных документов, пригодных для просмотра во внешних редакторах и печати на принтерах. Формирование документов осуществляется на основе предварительно подготовленных шаблонов.
Поддерживаемые форматы шаблонов.
Excel -
.xlsx
Word -
.docx
Text -
.txt
Rtf -
.rtf
JasperReport - zip-архив, содержащий
.jrxml
файлы
See also
Документация по Global1 отчетам актуальна для решений для БД Оракл.
Руководство прикладного разработчика GlobalFramework / Отчёты
Отчёты и их шаблоны хранятся в базе данных, в таблицах rpt_report
и rpt_reportversion
.
Запуск формирования отчёта может быть выполнен из:
5.5.1. События формирования отчётов#
GTK Core Api предоставляет возможность подписки на события строителя отчётов, что позволяется обеспечить выполнение из прикладного кода следующих действий:
Валидация и модификация SQL-запросов, определённых в шаблонах печатных форм, на этапе подготовки шаблона к заполнению.
Чтение и модификация карты параметров, переданных в метод построения отчёта.
Управление кэшом подготовленных/скомпилированных Jasper-шаблонов.
При формировании отчёта, вызываются следующие события:
начало построения печатной формы.
начало подготовки шаблона.
подготовка запроса.
завершение подготовки шаблона.
завершение построения печатной формы.
5.5.1.1. Регистрация обработчика событий#
Обработчиком событий является экземпляр ru.bitec.gtk.core.report.CoreReportBuilder.EventHandler
, создаваемый
фабрикой ru.bitec.gtk.core.report.CoreReportBuilder.EventHandlerFactory
.
Фабрика и обработчик событий реализуются в коде прикладного модуля GTK.
Экземпляр фабрики должен возвращаться методом ru.bitec.gtk.core.sbt.CoreSolutionImageContext.reportBuilderEventHandlerFactory()
.
При вызове формирования отчёта из интерактивной бизнес логики или REST-сервиса регистрация обработчика событий в строителе отчётов производится автоматически.
При вызове формирования отчёта из автономной бизнес логики, обработчик должен быть установлен явно, методом
ru.bitec.gtk.core.report.CoreReportBuilder.eventHandler(CoreReportBuilder.EventHandler)
.
EventHandlerFactory factory = SbtContext.reportBuilderEventHandlerFactory();
CoreServer$.MODULE$.getInstance().getCurrentSolution()
.newReportBuilderFactory()
.newSingleReportBuilder(reportName, reportVersionDate)
.eventHandler(factory.newEventHandler(session))
.buildReportEntityList();
Note
Пример использует вызовы Core Api, которые скрыты за высокоуровневым Api модуля GTK. От разработчиков прикладных приложений, использующих GTK Api, не будет требоваться устанавливать обработчик при каждом вызове формирования отчёта. Установка обработчика будет выполняться в коде модуля GTK (или RPT).
5.5.2. Excel-отчёты#
5.5.2.1. Поддержка макросов#
При формировании шаблона отчёта возможно использовать следующие виды макросов:
VBA макросы Microsoft Excel
JavaScript макросы Р7-Офис
Эти макросы будут перенесены из шаблона в сформированный отчёт. Другие макросы (например, Python-макросы или JavaScript макросы LibreOffice) могут не поддерживаться, т.е. их присутствие в итоговом отчёте не гарантировано