Урок 9. Настройка печатных форм

1. Печатные формы

Печатная форма определяет тип шаблона отчёта, формат и правила его построения. При выполнении печатной формы формируется отчет в виде файла с заданным форматов.
Печатная форма может быть подключена к документу с типа объекта без внесения изменений в программный код.

Версии печатных форм

Версия печатной формы позволяет:

  • Безопасно вернутся к предыдущей реализации;
  • Запускать реализацию в зависимости от периода;
Версия печатной формы содержит:
  • Тип шаблона печатной формы;
  • Бинарный файл для построителя отчетов;
  • Дату версии;
  • Описание;

Типы шаблонов печатных форм

Определяют формат в котором задаются шаблоны печатных форм.

  • jasper
    Java библиотека для построения печатных отчетов. Позволяет строить:
    • Готовые к печати PDF-файлы в интерактивном динамическом HTML с навигацией внутри или за пределами отчета
    • Высококачественные документы PowerPoint, RTF, Word
    • Электронные таблицы или необработанные CSV, JSON или XML
    Для изучения подробнее смотри:
  • xlsx
    Шаблоном xlxs является документ в формате xlxs, размеченный согласно общим правилам разметки шаблонов

    Для изучения подробнее смотри:
  • docx
    Шаблоном docx является документ в формате docx, размеченный согласно общим правилам разметки шаблонов Для изучения подробнее смотри:

Jaspersoft Studio

Шаблоны для построения отчетов пишутся в Jaspersoft Studio Jaspersoft Studio - это программное обеспечение для редактирования JasperReports. Студия помогает:

  • Разрабатывать и запускать шаблоны отчетов;
  • Создавать запросы к отчетам;
  • Писать сложные выражения;
  • Компоновать визуальные компоненты.

Шаблон представляет из себя zip архив содержащий набор xml файлов сформированных в jasper studio. Jasper studio это специализированное средство построения печатных форм.

Выходные форматы шаблонов печатных форм

Если тип шаблона печатной формы поддерживает конвертацию в другие форматы, можно указать перечень доступных форматов.
Если указано несколько доступных форматов, при печати печатной формы пользователю будет задан вопрос в каком формате построить отчет.

Доступные форматы шаблонов печатных форм

  • jasper
    • pdf
    • png
    • txt
    • html
    • xls
    • prt
  • docx
    • docx
    • pdf
  • Внимание

  • При установке выходного формата pdf шаблона docx на месте тегов в документе будут подставлены изображения. Детально данная функциональность будет описана ниже.

Загрузка файлов

Чтобы загрузить файл шаблона печатной формы в Global необходимо:

  • Создать новую печатную форму в Global.
    Чтобы настроить новую печатную форму в Global:
    1. Откройте приложение Настройка системы.
    2. Откройте перечень печатных форм Отчеты > Печатные формы.
    3. Используя операцию Создать добавьте новый отчет.
    4. Заполните обязательные атрибуты и нажмите кнопку Редактировать, чтобы перейти в карточку.
  • Привязать новую печатную форму к типу объекта.
    Чтобы настроить новую версию печатной формы необходимо:
    1. На вкладке Версии печатной формы создайте новую версию.
    2. Для версии выберите Тип шаблона печатной формы.
    3. Нажмите на кнопку Загрузить файл в систему.
    4. Выберите файл шаблона печатной формы:
      • jasper
        Для шаблона типа «jasper» файлом шаблона будет являться архив, содержащий шаблон с наименованием «main.jrml».
  • Внимание

  1. Шаблоны суботчетов могут иметь любое название
  2. В архиве может быть только один основной отчёт с наименованием main
  • docx
    Файл формата docx
  • xlsx
    Файл формата docx

Параметры отчета

Параметры отчета передаются в запрос, формирующий данные для отчета.

Пользовательские параметры

Настраиваются на печатной форме, и значения для таких параметров пользователь может внести перед выполнением отчета.

Служебные параметры

Формируются автоматически

  • SIGNDATA_DZ – Блок подписи
  • IDUSER – Пользователь
  • IDSRCOBJECT – Объект источник
    Идентификатор объекта от которого выполняется печатная форма.
  • IDSRCCLASS – Класс источник
    Идентификатор класса объекта от которого выполняется печатная форма

Программные параметры

Параметры, переданные в Map программного метода при построении отчёта.

Вызов печатных форм

Печатные формы могут вызываться:

  • из операции выборки;
  • из запроса к сервису печати;
  • из rest сервиса;
  • От произвольного объекта системы;
  • От интерфейса свободные отчеты.

Вызов печатной формы из операции выборки

Для вызова отчета из операции выборки используйте функцию ru.bitec.app.gtk.gl.Reports#createReportEx:

  /**
    * Выполняет построение отчёта по системному имени отчёта.
    *
    * @param reportName        Имя отчёта
    * @param reportVersionDate Дата
    * @param postBuildAction   Действие, которое необходимо произвести после заполнения отчёта
    * @param propertyMap       Карта входящих параметров
    */
  @throws[ApplicationException]
  def createReportEx(reportName: String, reportVersionDate: Date, postBuildAction: PostBuildAction, propertyMap: Map[String, Any]): Unit

Данная функция может быть вызвана только в контексте интерактивной бизнес логики(интерфейса пользователя).

Пример:

reports.createReportEx("Mct_OrderSheetMaterials2", null, PostBuildAction.print,
        Map[String, Any]("IDSRCOBJECT" -> getVar("id").asNLong,
          "GIDSRCOBJECT" -> getVar("gid").asNString,
          "SDESIGNATION" -> getVar("sCode").asNString)
      )

Формирования файла с отчетом

Для формирования файла с отчетом используйте функцию ru.bitec.app.rpt.Rpt_Pkg#getReportStreamEx:

  /**
    * Выполняет построение отчёта по системному имени отчёта.
    * Если для версии отчета указано несколько доступных для печати форматов,
    * то будет выдана ошибка построения.
    * Требуется явно указать формат построения, указав параметр [[Rpt_Pkg.ParamFormatType]]
    *
    * @param reportName        Имя отчёта
    * @param reportVersionDate Дата
    * @param propertyMap       Карта входящих параметров
    * @return InputStream, содержащий результат построения отчёта. ByteArrayInputStream не требует закрытия.
    */
  def getReportStreamEx(reportName: String, reportVersionDate: Date, propertyMap: Map[String, Any]): Option[InputStream]

Данная функция может быть вызвана в контексте автономной логики(rest сервиса)

  • Внимание

  • В случае, если получен поток, его необходимо обязательно закрыть.

Вызов печатной формы от произвольного объекта

При открытии карточки любого объекта, выводятся стандартные операции печати по которым можно выполнять вызов печатных форм. Для добавления печатной формы к списку печати для типа объекта:

  1. Откройте приложение Настройка системы.
  2. Откройте типы объектов.
    Выполните пункт меню Сущности > Типы объектов > Типы объектов.
  3. Перейдите на вкладку Печатные формы.
  4. Добавьте необходимые печатные формы.

Вызов печатной формы в свободных отчетах

Свободные отчеты позволяют настроить для пользователя и приложения перечень отчетов которые можно построить без привязки к каким либо типом объектов.

Для вызова интерфейса построения свободных отчетов:

  1. Откройте приложение.
  2. Откройте свободные отчеты.
    Выполните пункт меню Отчеты > Свободные отчеты.
  3. Выберите нужный отчет.
  4. Заполните параметры.
  5. Напечатайте отчет.
    Для этого выполните операцию Печать.

Для того чтобы ПФ могла быть вызвана из свободных отчетов:

1. Откройте приложение Настройки системы.
2. Откройте печатные формы.
Пункт меню Отчеты > Печатные формы.
3. Выберите требуемую печатную форму.
4. Включите признак Свободный отчет.
5. Настройте параметры отчета.
6. Укажите приложение для печати.
7. Укажите требуемые роли.
  • Примечание

  • Если роли не указаны, печатная форма будет доступна всем пользователям