Отчеты
Contents
Отчеты#
Отчеты системы 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 сервиса)
Внимание
В случае если получен поток, его необходимо обязательно закрыть.
При формировании файла с отчётом в потоке переменные выборки не доступны.
Вызов печатной формы от произвольного объекта#
При открытии карточки любого объекта, выводятся стандартные операции печати по которым можно выполнять вызов печатных форм.
Для добавления печатной формы к списку печати для типа объекта:
Откройте приложение
Настройка системы
Откройте типы объектов
Выполните пункт менюСущности > Типы объектов > Типы объектов
Перейдите на вкладку
Печатные формы
Добавьте необходимые печатные формы
Вызов печатной формы в свободных отчетах#
Свободные отчеты позволяют настроить для пользователя и приложения перечень отчетов, которые можно построить без привязки к каким-либо типам объектов.
Для вызова интерфейса построения свободных отчетов:
Откройте приложение, в котором есть пункт меню
Отчеты
Откройте свободные отчеты
Выполните пункт менюОтчеты > Свободные отчеты
Выберите нужный отчет
Заполните параметры
Напечатайте отчет
Для этого выполните операциюПечать
Для того чтобы ПФ могла быть вызвана из свободных отчетов:
Откройте приложение
Настройки системы
Откройте печатные формы
Пункт менюОтчеты > Печатные формы
Выберете требуемую печатную форму
Включите признак
Свободный отчет
Настройте параметры отчета
Укажите приложение для печати
Укажите требуемые роли
Примечание
Если роли не указаны, печатная форма будет доступна всем пользователям
Создание печатной формы#
Откройте приложение
Настройки системы
Откройте печатные формы
Пункт менюОтчеты > Печатные формы
Выполните операцию
Создать
Заполните
Системное имя
,Наименование
,Модуль
Создайте версию печатной формы
Выберете тип шаблона
Загрузите файл шаблона выбранного типа
Для этого выполните операциюЗагрузить файл в базу
Настройки вставки изображений в печатную форму типа 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 должны быть выполнены следующие условия:
Печатная форма должна содержать теги вида [SomeTag]
Тип шаблона печатной формы - docx
Формат печатной формы - pdf
В коллекции к печатной форме(Настройки вставки изображений в печатную форму) настроены необходимые изображения для вставки
Если все требования выполнены корректно, то при печати такой печатной формы будет получен pdf файл с изображениями на месте тегов.