Типы отчетов#
Произвольный#
Произвольный отчет — это отчет, параметры которого берутся напрямую из существующей Печатной Формы (ПФ) с возможностью выбора только нужных параметров.
Как это работает?
В системе существует Печатная Форма (ПФ), содержащая множество параметров. При создании произвольного отчета можно выбрать только те параметры из ПФ, которые действительно необходимы для конкретной задачи.
Итоговая форма предзаполнения и параметры для фоновых операций при построении отчета зависят от выбранных параметров исходной ПФ.
Это позволяет создавать отчеты с произвольной структурой и нужными полями, используя только часть параметров из комплексной печатной формы.
Для чего используется?
Построение отчетов с произвольной структурой на основе существующих ПФ.
Упрощение сложных печатных форм путем выбора только релевантных параметров.
Создание специализированных версий отчетов из универсальных ПФ.
Динамический#
Динамический отчет — это отчет, параметры которого формируются через построитель запросов в интерфейсе системы, без необходимости программирования.
Для открытия построителя отчетов необходимо выбрать отчет с динамическим типом - Редактировать - Объектные характеристики - Построитель запросов.
Как это работает? Через интерфейс системы необходимо открыть построитель запросов и задать необходимые колонки отчета, доступные поля для заполнения, условия и параметры, по которым будет строиться отчет.
На предпечатный экран можно вывести нужные поля для заполнения и указать дополнительные условия. Система автоматически формирует итоговый отчет на основе заданной конфигурации.
Для чего используется?
Настройка и изменение отчетов бизнес-пользователями через интерфейс.
Быстрое построение типовых и уникальных отчетов без необходимости создания новых печатных форм и выборок.
Экранная форма#
Экранная форма — это тип отчета, который позволяет отобразить данные системы в виде отчета. Можно отобразить любой другой отчет или таблицу из системы в заданном виде, без необходимости программирования.
Как это работает? Через интерфейс системы в Объектных характеристиках экранной формы необходимо указать выборку данных и тип ее отображения — например, таблица, карточка, древовидный список. После чего система напрямую отображает данную выборку (списки классов, логи, справочники и т.д.) в указанном виде.
Этот подход позволяет отображать любой элемент системы независимо от того, в каком модуле он находится и как называется в интерфейсе.
Для чего используется?
Прямой вывод данных системы без промежуточных преобразований.
Единый интерфейс для просмотра информации из разных модулей.
Отчет с селекционным экраном#
Отчет с селекционным экраном — это отчет, где данный экран генерируется из параметров выборки, которую программист задает в коде.
Перед печатью данного отчета открывается сам селекционный экран — интерфейс для заполнения полей. На основе заполненных данных строится отчет.
Как это работает? Разработчик в коде создает выборку, где прописывает необходимые параметры. Эти параметры определяют структуру селекционного экрана и логику обработки данных.
Разработчик может закодировать что угодно: создать любой селекционный экран с любыми полями, а также добавить дополнительную логику для проверки, расчета или пересчета данных.
Для чего используется?
Реализация сложной бизнес-логики проверок и расчетов.
Разработка универсальных отчетов с максимальной гибкостью настройки.
Автоматизация специализированных процессов формирования отчетности.
Выборка для селекционного экрана#
Выборка для селекционного экрана указывается в Настройка отчетных форм → Объектные характеристики через поля:
Имя выборки;Имя отображения.
Создание выборки#
Выборку для селекционного экрана нужно унаследовать от базовой выборки 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.