Wiki source code of Базовый шаблон отчёта с JasperReports
Last modified by superadmin on 2026/06/15 21:57
Hide last authors
| author | version | line-number | content |
|---|---|---|---|
| |
1.1 | 1 | Для построения отчётов в программе [[doc:neyross.АРМ НЕЙРОСС Отчеты.WebHome]] с помощью JasperReports Library достаточно указать в своём наборе шаблонов в файле {{code language="none"}}reports.conf{{/code}} значение параметра {{code language="none"}}definition.class{{/code}} в **{{code language="none"}}extensions.reports.GenericJasperReportDefinition{{/code}}**. Это имя программного компонента (Java-класса) //базовой реализации// шаблона отчёта, который позволяет формировать отчёт средствами JasperReports Library по шаблону в форме *.jasper-файла. |
| 2 | |||
| 3 | Базовая реализация шаблона: | ||
| 4 | |||
| 5 | 1. Анализирует *.jasper-файл шаблона отчёта и получает из него список параметров, которые должны быть заданы при формировании отчёта: | ||
| 6 | 11. в список параметров попадают те, для которых в Jasper-шаблоне задан флаг {{code language="none"}}Is For Prompting{{/code}}; | ||
| 7 | 11. описание параметра (поле {{code language="none"}}Description{{/code}} в Jasper-шаблоне) используется для текста надписи в форме ввода параметров; | ||
| 8 | 11. тип данных параметра определяется свойством {{code language="none"}}Class{{/code}} в Jasper-шаблоне. | ||
| 9 | 1. Для каждого параметра выбирает оптимальное поле ввода в соответствии с заданными для параметра свойствами (см. [[#Привязка полей ввода>>doc:||anchor="БазовыйшаблонотчётасJasperReports-Привязкаполейввода"]]). | ||
| 10 | 1. Генерирует форму ввода параметров из соответствующих полей ввода. | ||
| 11 | 1. Обрабатывает введённые пользователем значения параметров и передаёт их JasperReports Library для генерации отчёта по шаблону. | ||
| 12 | |||
| 13 | == {{id name="БазовыйшаблонотчётасJasperReports-Требования"/}}Требования == | ||
| 14 | |||
| 15 | В данном разделе приведены требования к шаблонам, которые используют базовую реализацию или производные от неё. | ||
| 16 | |||
| 17 | === {{id name="БазовыйшаблонотчётасJasperReports-report.conf"/}}report.conf === | ||
| 18 | |||
| 19 | При выборе базовой или производной от базовой реализации шаблона в файле {{code language="none"}}report.conf{{/code}} также должны быть заданы следующие параметры: | ||
| 20 | |||
| 21 | |=((( | ||
| 22 | Ключ | ||
| 23 | )))|=((( | ||
| 24 | Значение | ||
| 25 | )))|=((( | ||
| 26 | Комментарий | ||
| 27 | )))|=((( | ||
| 28 | Пример значения | ||
| 29 | ))) | ||
| 30 | |((( | ||
| 31 | {{code language="none"}} | ||
| 32 | definition.generic.key | ||
| 33 | {{/code}} | ||
| 34 | )))|((( | ||
| 35 | Уникальный идентификатор шаблона отчёта | ||
| 36 | )))|((( | ||
| 37 | В данном параметре следует указать уникальную для вашего шаблона строку, которая будет однозначно отличать данный шаблон от всех остальных. | ||
| 38 | |||
| 39 | Замечание для программистов: Базовая реализация возвращает это значение в методе {{code language="none"}}key{{/code}}. | ||
| 40 | )))|((( | ||
| 41 | {{code language="none"}} | ||
| 42 | "ultima-reports-itrium-timecontrol:timeControl" | ||
| 43 | {{/code}} | ||
| 44 | ))) | ||
| 45 | |((( | ||
| 46 | {{code language="none"}} | ||
| 47 | definition.generic.title | ||
| 48 | {{/code}} | ||
| 49 | )))|((( | ||
| 50 | Удобочитаемое название шаблона отчёта | ||
| 51 | )))|((( | ||
| 52 | Данное значение выводится в списке доступных шаблонов в пользовательском интерфейсе. | ||
| 53 | |||
| 54 | Замечание для программистов: Базовая реализация возвращает это значение в методе {{code language="none"}}title{{/code}}. | ||
| 55 | )))|((( | ||
| 56 | Учёт рабочего времени | ||
| 57 | ))) | ||
| 58 | |((( | ||
| 59 | {{code language="none"}} | ||
| 60 | definition.generic.description | ||
| 61 | {{/code}} | ||
| 62 | )))|((( | ||
| 63 | Подробное описание шаблона отчёта | ||
| 64 | )))|((( | ||
| 65 | Подробное описание шаблона отчёта. Выводится в интерфейсе пользователя. | ||
| 66 | |||
| 67 | Замечание для программистов: Базовая реализация возвращает это значение в методе {{code language="none"}}description{{/code}}. | ||
| 68 | )))|((( | ||
| 69 | {{code language="none"}} | ||
| 70 | "" | ||
| 71 | {{/code}} | ||
| 72 | ))) | ||
| 73 | |((( | ||
| 74 | {{code language="none"}} | ||
| 75 | definition.jasper.design | ||
| 76 | {{/code}} | ||
| 77 | )))|((( | ||
| 78 | Перечень jasper-файлов шаблона отчёта | ||
| 79 | )))|((( | ||
| 80 | В данном параметре должно быть указано имя файла с расширением {{code language="none"}}*.jasper{{/code}}, который будет использоваться для формирования отчёта. Можно указать различные файлы для предпросмотра (HTML) и основного отчёта. Для этого задайте различные значения дочерним ключам {{code language="none"}}main{{/code}} (основной отчёт) и {{code language="none"}}html{{/code}} (предпросмотр). | ||
| 81 | )))|((( | ||
| 82 | {{code language="none"}} | ||
| 83 | { | ||
| 84 | main: "report.jasper", | ||
| 85 | html: "report.jasper" | ||
| 86 | } | ||
| 87 | {{/code}} | ||
| 88 | ))) | ||
| 89 | |||
| 90 | === {{id name="БазовыйшаблонотчётасJasperReports-JasperReports"/}}JasperReports === | ||
| 91 | |||
| 92 | В директории шаблона в наборе должен быть размещён хотя бы один *.jasper-файл. Имя файла должно быть указано в файле {{code language="none"}}report.conf{{/code}} в параметре {{code language="none"}}definition.jasper.design{{/code}}. | ||
| 93 | |||
| 94 | Для всех Jasper-параметров в шаблоне, которые должен ввести пользователь, должен быть задан флаг Is For Prompting равный true. Для таких параметров также должно быть задано свойство с именем класса поля ввода (см. [[#Привязка полей ввода>>doc:||anchor="БазовыйшаблонотчётасJasperReports-Привязкаполейввода"]]). | ||
| 95 | |||
| 96 | В Jasper-шаблоне необходимо определить системный параметр {{code language="none"}}DEFINITION_DIR{{/code}} типа {{code language="none"}}java.lang.String{{/code}}, для которого установить флаг {{code language="none"}}Is For Prompting{{/code}} равный {{code language="none"}}false{{/code}}. В данный параметр базовая реализация передаст абсолютный путь к директории с файлами шаблона (директории, в которой находятся *.jasper-файлы и другие файлы шаблона). Это значение необходимо, например, при использовании подотчётов — чтобы указать корректный путь к *.jasper-файлу подотчёта. | ||
| 97 | |||
| 98 | Все Java-классы, кроме классов API и классов стандартной библиотеки, которые используются в Jasper-шаблоне (например, для форматирования вывода данных), должны быть помещены в форме *.jar-библиотек в директорию {{code language="none"}}libs{{/code}} набора шаблонов. | ||
| 99 | |||
| 100 | == {{id name="БазовыйшаблонотчётасJasperReports-Возможности"/}}Возможности == | ||
| 101 | |||
| 102 | В данном разделе описаны возможности, которые предоставляет базовая реализация для создания шаблонов. | ||
| 103 | |||
| 104 | === {{id name="БазовыйшаблонотчётасJasperReports-Привязкаполейввода"/}}Привязка полей ввода === | ||
| 105 | |||
| 106 | Базовая реализация позволяет определять, какие именно поля ввода будут использованы на форме ввода параметров, прямо в Jasper-шаблоне. Для этого для каждого параметра, который будет выведен на форме (для которого задан атрибут {{code language="none"}}Is For Prompting{{/code}} равный {{code language="none"}}true{{/code}}) должно быть задано свойство {{code language="none"}}ru.itrium.ultima.reports.form.field.class{{/code}}. С помощью свойств также можно определить дополнительные особенности поведения поля ввода — например, в каком формате должно быть введено значение в поле выбора даты / времени. | ||
| 107 | |||
| 108 | Управление расширенными свойствами Jasper-параметра в Jaspersoft Studio (версия 6.3.0) осуществляется на вкладке Advanced: | ||
| 109 | |||
| 110 | [[image:attach:parameter-properties-1.png]] | ||
| 111 | |||
| 112 | в диалоговом окне Properties: | ||
| 113 | |||
| 114 | [[image:attach:parameter-properties-2.png]] | ||
| 115 | |||
| 116 | В XML-документе шаблона такие свойства определяются следующим кодом в блоке параметра {{code language="none"}}<parameter />{{/code}}: | ||
| 117 | |||
| 118 | {{code language="xml"}} | ||
| 119 | <parameter name="FROM" class="java.sql.Timestamp"> | ||
| 120 | <property name="ru.itrium.ultima.reports.form.field.class" value="extensions.reports.generic.DateTimeFormField"/> | ||
| 121 | <property name="ru.itrium.ultima.reports.form.field.pickTime" value="false"/> | ||
| 122 | <parameterDescription><![CDATA[Дата от]]></parameterDescription> | ||
| 123 | <defaultValueExpression><![CDATA["2018-09-05 00:00:00"]]></defaultValueExpression> | ||
| 124 | </parameter> | ||
| 125 | {{/code}} | ||
| 126 | |||
| 127 | {{info}} | ||
| 128 | Полный список классов полей ввода, которые можно свободно использовать, а также перечень поддерживаемых ими свойств приведёны [[здесь>>doc:neyross.Настройка Платформы НЕЙРОСС.Настройка функций подготовки отчётов.Руководство разработчика | Отчёты.Поля ввода параметров для отчётов JasperReports.WebHome]]. | ||
| 129 | |||
| 130 | Кроме полей ввода, перечисленных в списке, разработчик может также реализовать на языке Scala / Java свои собственные поля. | ||
| 131 | {{/info}} |