5.5. Отчеты#

Сервер приложений предоставляет возможность формирования электронных документов, пригодных для просмотра во внешних редакторах и печати на принтерах. Формирование документов осуществляется на основе предварительно подготовленных шаблонов.

Поддерживаемые форматы шаблонов.

  • Excel - .xlsx

  • Word - .docx

  • Text - .txt

  • Rtf - .rtf

  • JasperReport - zip-архив, содержащий .jrxml файлы

See also

Отчёты и их шаблоны хранятся в базе данных, в таблицах rpt_report и rpt_reportversion.

Запуск формирования отчёта может быть выполнен из:

5.5.1. События формирования отчётов#

GTK Core Api предоставляет возможность подписки на события строителя отчётов, что позволяется обеспечить выполнение из прикладного кода следующих действий:

  1. Валидация и модификация SQL-запросов, определённых в шаблонах печатных форм, на этапе подготовки шаблона к заполнению.

  2. Чтение и модификация карты параметров, переданных в метод построения отчёта.

  3. Управление кэшом подготовленных/скомпилированных 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. Поддержка макросов#

При формировании шаблона отчёта возможно использовать следующие виды макросов:

  1. VBA макросы Microsoft Excel

  2. JavaScript макросы Р7-Офис

Эти макросы будут перенесены из шаблона в сформированный отчёт. Другие макросы (например, Python-макросы или JavaScript макросы LibreOffice) могут не поддерживаться, т.е. их присутствие в итоговом отчёте не гарантировано