Типы отчетов#
Способы запуска отчетов и программ#
В Global ERP используются три основных способа запуска отчетов и прикладных программ: ручной запуск пользователем, запуск по прикладному событию и запуск по графику.
Ручной запуск выполняется пользователем из интерфейса системы. Для отчетов используются операции построения отчета, печати, запуска свободного отчета или вызова печатной формы из карточки объекта и выборки.
Запуск по прикладному событию выполняется в рамках настроенной бизнес-логики: при выполнении операции, изменении состояния объекта, обработке документа, прохождении маршрута или другом событии, для которого на проекте настроен соответствующий сценарий.
Запуск по графику выполняется через планировщик заданий. Такой способ используется для фонового построения отчетов, регламентных процедур, интеграционных обменов и других задач, которые выполняются в заданное время или с заданной периодичностью.
Произвольный#
Произвольный отчет — это отчет, параметры которого берутся напрямую из существующей Печатной Формы (ПФ) с возможностью выбора только нужных параметров.
Как это работает?
В системе существует Печатная Форма (ПФ), содержащая множество параметров. При создании произвольного отчета можно выбрать только те параметры из ПФ, которые действительно необходимы для конкретной задачи.
Итоговая форма предзаполнения и параметры для фоновых операций при построении отчета зависят от выбранных параметров исходной ПФ.
Это позволяет создавать отчеты с произвольной структурой и нужными полями, используя только часть параметров из комплексной печатной формы.
Для чего используется?
Построение отчетов с произвольной структурой на основе существующих ПФ.
Упрощение сложных печатных форм путем выбора только релевантных параметров.
Создание специализированных версий отчетов из универсальных ПФ.
Динамический#
Динамический отчет — это отчет, параметры которого формируются через построитель запросов в интерфейсе системы, без необходимости программирования.
Для открытия построителя отчетов необходимо выбрать отчет с динамическим типом - Редактировать - Объектные характеристики - Построитель запросов.
Как это работает? Через интерфейс системы необходимо открыть построитель запросов и задать необходимые колонки отчета, доступные поля для заполнения, условия и параметры, по которым будет строиться отчет.
На предпечатный экран можно вывести нужные поля для заполнения и указать дополнительные условия. Система автоматически формирует итоговый отчет на основе заданной конфигурации.
Для чего используется?
Настройка и изменение отчетов бизнес-пользователями через интерфейс.
Быстрое построение типовых и уникальных отчетов без необходимости создания новых печатных форм и выборок.
Экранная форма#
Экранная форма — это тип отчета, который позволяет отобразить данные системы в виде отчета. Можно отобразить любой другой отчет или таблицу из системы в заданном виде, без необходимости программирования.
Как это работает? Через интерфейс системы в Объектных характеристиках экранной формы необходимо указать выборку данных и тип ее отображения — например, таблица, карточка, древовидный список. После чего система напрямую отображает данную выборку (списки классов, логи, справочники и т.д.) в указанном виде.
Этот подход позволяет отображать любой элемент системы независимо от того, в каком модуле он находится и как называется в интерфейсе.
Для чего используется?
Прямой вывод данных системы без промежуточных преобразований.
Единый интерфейс для просмотра информации из разных модулей.
Отчет с селекционным экраном#
Отчет с селекционным экраном — это отчет, где данный экран генерируется из параметров выборки, которую программист задает в коде.
Перед печатью данного отчета открывается сам селекционный экран — интерфейс для заполнения полей. На основе заполненных данных строится отчет.
Как это работает? Разработчик в коде создает выборку, где прописывает необходимые параметры. Эти параметры определяют структуру селекционного экрана и логику обработки данных.
Разработчик может закодировать что угодно: создать любой селекционный экран с любыми полями, а также добавить дополнительную логику для проверки, расчета или пересчета данных.
Для чего используется?
Реализация сложной бизнес-логики проверок и расчетов.
Разработка универсальных отчетов с максимальной гибкостью настройки.
Автоматизация специализированных процессов формирования отчетности.
Выборка для селекционного экрана#
Выборка для селекционного экрана указывается в Настройка отчетных форм → Объектные характеристики через поля:
Имя выборки;Имя отображения.
Создание выборки#
Выборку для селекционного экрана нужно унаследовать от базовой выборки ru.bitec.app.rpt.Rpt_ScreenCardAbsAvi.BaseSelectionScreenCard. Эта выборка по умолчанию содержит фильтр с отчетами отчетной формы, который определяет, какая печатная форма будет напечатана. Если этого фильтра нет или он не заполнен, будет напечатана печатная форма по умолчанию.
Валидация введенных значений#
Для валидации значений полей нужно переопределить метод validateFields, который вызывается перед печатью.
Параметры выборки#
Для передачи параметров в селекционный экран используется параметр jParams#, который содержит JSON следующего вида:
{
"attribute_1_name": "attribute_1_value",
"attribute_2_name": "attribute_2_value"
}
Карта параметров отчета#
Для указания логики получения карты параметров отчета переопределите метод getPropertyMap.
По умолчанию получает значения всех фильтров StdLink и стандартных фильтров.
Для редактирования полученной карты параметров можно переопределить метод preparePropertyMap.
Селекционные экраны#
Селекционные экраны используются для создания отчетов с динамической фильтрацией. Они предоставляют возможность пользователю задавать параметры для фильтрации данных перед генерацией отчета. Эти параметры используются для формирования условий, которые затем передаются в отчетную форму.
Селекционные экраны позволяют:
Задавать фильтры для отчетов.
Выбирать типы отчетов и их параметры.
Автоматически формировать условия для выборки данных.
Как использовать селекционные экраны#
Шаг 1: Наследование от базовой выборки
Для начала разработчику необходимо отнаследоваться от базовой выборки Rpt_ScreenCardAbsAvi#BaseSelectionScreenCard.
Шаг 2: Переопределение методов setReportName и setPropertyMap
После создания наследника, необходимо переопределить два метода:
setReportName— определяет системное имя отчета, которое будет использоваться при генерации.setPropertyMap— в этом методе заполняется логика формирования результирующей карты параметров (reportParamsResultMap), которая будет передаваться в метод печати.
Пример:
override def setReportName: String = "MyCustomReport"
override def setPropertyMap: Unit = {
fltMacroGeneratorPkg.updateResultMap(
fltMacroGeneratorPkg.getAllFltValuesMap,
{
case (key, value) =>
val newKey = key.stripPrefix("flt_").toUpperCase
newKey -> value
})
fltMacroGeneratorPkg.updateResultMap(Map("WHERECOND" -> fltMacroGeneratorPkg.generateReportMacro()))
}
Шаг 3: Работа с результирующей картой параметров
В методе setPropertyMap разработчик заполняет результирующую карту reportParamsResultMap, которая передается как параметры в метод printReport. Для помощи в формировании этой карты используется пакет ru.bitec.app.btk.FltMacroGeneratorPkg, который содержит необходимые методы для работы с фильтрами и формирования карт значений.
Пример использования пакета fltMacroGeneratorPkg (см. выше):
Шаг 4: Дополнительные возможности — выбор печатной формы
Разработчик может позволить пользователю самостоятельно выбирать нужный отчет. Для этого необходимо вставить фильтр для выбора отчета в свой .avm-файл:
<condition id="idReport">
<filterAttr name="flt_idReport" attribute-type="Long" caption="Отчет" order="10" isVisible="false"/>
<filterAttr name="flt_idReportHL" attribute-type="Varchar" caption="Отчет" order="10.1">
<card isControlWidthFixed="true" controlWidth="60"/>
<editor>
<lookup changeableAttr="flt_idReport" lookupQuery="gtk-Rpt_EntityAvi#Lookup_SelReport"
lookupListAttr="sHeadLine" lookupKeyAttr="id" isResetButtonVisible="true"/>
</editor>
</filterAttr>
</condition>
Шаг 5: Метод печати отчета
Метод printReport отвечает за формирование и печать отчета. Он вызывает метод генерации отчета с передачей системного имени отчета и параметров, сформированных в методе setPropertyMap.