Отчеты#

Отчеты системы GlobalFramework лежат в базе данных, что позволяет легко перекрывать их на проектах. Для управления отчетами необходимо зайти в приложение Global Настройка системы

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

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

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

  • xlsx
    Шаблон представляет из себя файл в формате xls со спец тэгами

  • docx
    Шаблон представляет из себя файл в формате docx со спец тэгами

Печатная форма#

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

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

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

  • Безопасно вернутся к предыдущей реализации

  • Запускать реализацию в зависимости от периода

Версия печатной формы содержит:

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

  • Бинарный файл для построителя отчетов

  • Дату версии

  • Описание

Доступные форматы#

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

Подписи для печатных бланков#

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

with signs as(select * from jsonb_array_elements( $P{SIGNDATA_DZ}::jsonb ->'data'))
select t.*
, (select s.value ->>'sFIO' from signs s WHERE  s.value->>'idBlankSignTypeMC' = 'matching1') as sMatching1
, (select s.value ->>'sPosition' from signs s WHERE  s.value->>'idBlankSignTypeMC' = 'matching1') as sMatching1Pos

На печатный бланк необходимо вывести блок с подписями.

Блок с подписями формируется перед печатью и передается в отчет в формате json, в параметр SIGNDATA_DZ пример:

{
	"data": [
		{
			"idBlankSignTypeMC": "HeadOfDepartment",
			"bReadOnly": 0,
			"idBlankSignTypeHL": "Руководитель подразделения",
			"nOrder": 1, 
			"dDate": "10.12.2020",
			"idBlankSignType": 95401,
			"sPosition": "Начальник отдела",
			"sFIO": "Дьяченко Евгений Владимирович"
		}
	]
}

Где:

  • idBlankSignType
    идентификатор тип подписи

  • idBlankSignTypeMC
    код типа подписи

  • nOrder
    порядковый номер подписи

  • sPosition
    Должность

  • sFIO
    ФИО

  • dDate \ дата

Блок формируется на основе настроек данной закладки.
Настройки могут быть переопределены\уточнены на конкретном объекте в закладке Подписи (Bs_OBjectSign)

Аудит построения отчета#

Содержит информацию о построении отчетов пользователями.

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

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

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

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

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

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

  • SIGNDATA_DZ - Блок подписи

  • IDUSER - Пользователь

  • IDSRCOBJECT - Объект источник
    Идентификатор объекта от которого выполняется печатная форма.

  • IDSRCCLASS - Класс источник
    Идентификатор класса объекта от которого выполняется печатная форма

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

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

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

Для вызова отчета из операции выборки используйте функцию 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. Укажите требуемые роли

    Примечание

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

Создание печатной формы#

  1. Откройте приложение Настройки системы

  2. Откройте печатные формы
    Пункт меню Отчеты > Печатные формы

  3. Выполните операцию Создать

  4. Заполните Системное имя, Наименование, Модуль

  5. Создайте версию печатной формы

  6. Выберете тип шаблона

  7. Загрузите файл шаблона выбранного типа
    Для этого выполните операцию Загрузить файл в базу

Настройки вставки изображений в печатную форму типа docx#

Данная настройка производится в коллекции к печатной форме. Все поля данной коллекции обязательны для заполнения.

  • Активность
    Данное поле отвечает будет ли вставленные изображения в печатную форму

  • Шаблон(Тег)
    Определяет тег по которому будет вставлено изображение. Тег должен содержаться в печатной форме иначе изображение не будет вставлено. Существует два вида тегов:

    • Общий
      Общий тег не имеет динамической части и изображение будет вставлено при нахождении данного тега в документе.

      • Пример:

        • В поле: SomeTag

        • В документе: [SomeTag]

    • Подпись
      Тег для подписи состоит из двух частей: общая часть для всех тегов, которые задаётся в данном поле, и имя пользователя подпись которого необходимо вставить в данный документ

      • Пример:

        • В поле: SomeSignTag

        • В документе(с динамической частью): [SomeSignTagAdmin]

  • Печатная форма изображения
    В поле указывается печатная форма с типом jasper и форматом png. В зависимости от типа изображения данный печатной форме будут переданы следующие аргументы:

    • Подпись

      • «PSDATE» - дата подписания документа

      • «PSSERNUMBER» - № сертификата подписи

      • «PSDBEGIN» - дата начала действия подписи

      • «PSDENG» - дата окончания действия подписи

      • «PSFIO» - ФИО сотрудника подписавшего документ

      • «IDDOC» - id документа

      • «IDDOCVER» - id версии документа(если документ версионный то подписывается именно версия а не сам документ)

      • «JOBJ» - json объект подписи документа

    • Общий

      • «IDDOC» - id документа

      • «IDDOCVER» - id версии документа(если документ версионный то подписывается именно версия а не сам документ)

  • Масштаб и Разрешение
    Размер изображения высчитывается по формуле: Масштаб *= Measures.DOTS_PER_INCH / Разрешение

  • Тип
    В поле указывается тип изображения:

    • Общий
      Изображение вставляется при печати в любом случае

    • Подпись
      Изображение вставляется если на документе есть хотя бы одна подпись

Вставка изображений в печатную форму docx#

Для вставки изображений в печатную форму типа docx должны быть выполнены следующие условия:

  1. Печатная форма должна содержать теги вида [SomeTag]

  2. Тип шаблона печатной формы - docx

  3. Формат печатной формы - pdf

  4. В коллекции к печатной форме(Настройки вставки изображений в печатную форму) настроены необходимые изображения для вставки

Если все требования выполнены корректно, то при печати такой печатной формы будет получен pdf файл с изображениями на месте тегов.