Last modified by superadmin on 2026/06/15 21:57

Show last authors
1 [[JasperReports>>url:https://community.jaspersoft.com/project/jasperreports-library||shape="rect"]] — это технология и соответствующая Java-библиотека построения отчётов, которые могут быть использованы для создания отчётов в [[Платформе НЕЙРОСС>>doc:neyross.WebHome]]. Средства JasperReports позволяют получать данные из различных источников (в том числе реляционных СУБД), фильтровать их, преобразовывать и формировать на выходе документы в форматах PDF, HTML, Microsoft Excel и многих других. Генерация отчёта осуществляется на основе одного или нескольких XML-шаблонов, в которых можно определить все аспекты формирования документа — от запроса к источнику данных до структуры и внешнего вида конечного документа.
2
3 JasperReports относится к классу свободного программного обеспечения и распространяется под свободной лицензией GNU Lesser General Public License, что позволяет свободно использовать JasperReports в коммерческих продуктах.
4
5 Редактирование и отладку шаблонов JasperReports можно осуществлять в бесплатной программе [[Jaspersoft Studio>>url:https://community.jaspersoft.com/project/jaspersoft-studio||shape="rect"]]. Программа позволяет редактировать, настраивать и тестировать шаблон в визуальном редакторе. На текущий момент для разработки шаблонов для Платформы НЕЙРОСС мы рекомендуем использовать Jaspersoft Studio __версии 6.9.0__. Все версии Jaspersoft Studio доступны для загрузки [[на официальном сайте>>url:https://community.jaspersoft.com/project/jaspersoft-studio/releases||shape="rect"]].
6
7 [[image:attach:full.png||height="400"]]
8
9 Внешний вид визуального редактора Jaspersoft Studio.
10
11 == {{id name="КраткоеруководствопоJasperReports-Основныесведения"/}}Основные сведения ==
12
13 //Шаблон отчёта// в JasperReports — это файл .jrxml в XML-формате, в котором хранится структура отчёта, его дизайн и логика.
14
15 Входные данные отчёта — это параметры и источник данных.
16
17 //Параметры// — это входные аргументы. Их значения неизменны во всём отчёте. Например, при формировании отчёта по записям в базе данных за некоторое время, дата / время начала и конца данного временного интервала могут быть переданы в шаблон в форме параметров.
18
19 //Источник данных// — это подключение к реляционной базе, XML-файл или другой источник, из которого в соответствии с заданными критериями формируется набор данных. В случае реляционной базы набор данных выбирается из базы данных в соответствии с SQL-запросом, определённом в шаблоне отчёта.
20
21 //Набор данных// — это коллекция записей, каждая из которых представляет собой набор полей. Например, в случае реляционной базы записи и поля — это строки и значения колонок таблиц базы данных, выбираемые в соответствии с SQL-запросом.
22
23 //Поле// — это именованное значение из набора данных. В случае реляционной базы данных соответствует значению некоторой колонки. Список используемых из набора данных полей также определяется в шаблоне в разделе Fields.
24
25 Если нужно вывести в отчёте номер страницы, номер записи, количество записей и т.д., можно использовать переменные.
26
27 //Переменная// — это вычисляемое в процессе формирования отчёта значение. Доступно большое количество стандартных переменных, таких как номер страницы, но разработчик шаблона также может создать свои переменные.
28
29 [[image:attach:query.png||height="250"]][[image:attach:parameters.png||height="250"]][[image:attach:fields.png]][[image:attach:variables.png]]
30
31 На изображениях выше показан редактор SQL-запроса для формирования набора данных и списки параметров, полей и переменных.
32
33 Отчёты состоят из //секций//, которые также называются bands (полосы). Секции следуют одна за другой строго по вертикали. Каждая секция принадлежит к определённому типу, который влияет на её отображение в отчёте:
34
35 |=(((
36 Секция
37 )))|=(((
38 Описание и назначение
39 )))
40 |(((
41 Title
42 )))|(((
43 Присутствует только в начале отчёта
44 )))
45 |(((
46 Page Header
47 )))|(((
48 Выводится вверху каждой страницы
49 )))
50 |(((
51 Column Header
52 )))|(((
53 Выводится в начале столбца отчёта
54 (секции Detail могут выводиться на странице в несколько столбцов)
55 )))
56 |(((
57 Detail
58 )))|(((
59 Выводится для каждой записи в источнике данных
60 )))
61 |(((
62 Column Footer
63 )))|(((
64 Выводится в конце столбца отчёта
65 )))
66 |(((
67 Page Footer
68 )))|(((
69 Выводится внизу каждой страницы
70 )))
71 |(((
72 Last Page Footer
73 )))|(((
74 Присутствует только внизу последней страницы (вместо Page Footer)
75 )))
76 |(((
77 Summary
78 )))|(((
79 Присутствует только в самом конце отчёта
80 )))
81 |(((
82 No Data
83 )))|(((
84 Выводится вместо всех остальных секций, если источник данных не содержит записей
85 )))
86 |(((
87 Background
88 )))|(((
89 Выводится на заднем плане каждой страницы
90 )))
91
92 Кроме того, записи в наборе данных делить на группы в соответствии с заданными критериями. Тогда перед и после каждой группы можно выводить дополнительные секции:
93
94 |=(((
95 Секция
96 )))|=(((
97 Описание и назначение
98 )))
99 |(((
100 Group Header
101 )))|(((
102 Выводится перед каждой новой группой
103 )))
104 |(((
105 Group Footer
106 )))|(((
107 Выводится после каждой группы
108 )))
109
110 Не все секции необходимо использовать в шаблоне. Ненужные секции можно удалить (отключить) — тогда они не будут участвовать в формировании документа.
111
112 Секции подписаны и разделяются серыми горизонтальными линиями на листе отчёта. Список секций также выводится в панели Outline (серым цветом подписаны удалённые секции).
113
114 [[image:attach:editor.png||width="289" height="250"]] [[image:attach:bands.png||height="250"]]
115
116 Для вывода текста в отчётах используются два основных компонента: Text Field (динамическое поле) и Static Text (статическое поле). Динамическое поле используется для вывода значений параметров или полей набора данных, а статическое — для вывода постоянного текста (например, заголовков колонок).
117
118 [[image:attach:textfield.png||height="250"]]
119
120 На изображении выше выбран элемент Text Field, в котором в секции Details выводится значение поля message_time (время события) для строк из базы данных.
121
122 В элементах типа Text Field можно выводить результаты сложных выражений, написанных на языке Java. Так, для вывода текста события в примере выше события используется следующее выражение:
123
124 {{code language="java"}}
125 ($F{message}.indexOf('.') >= 0 ? ($F{message}.substring(0,$F{message}.indexOf('.'))) : $F{message}) +
126 ((($F{operator} != null) && !$F{operator}.isEmpty()) ? (" (" + $F{operator} + "; " + $F{source} + ")") : "")
127 {{/code}}
128
129 [[image:attach:expression.png||height="250"]]
130
131 При формировании выражений можно использовать все возможности Java, значения параметров, полей и переменных.
132
133 [[image:attach:usingvariable.png||height="250"]]
134
135 На рисунке выше переменная PAGE_NUMBER используется для вывода номера текущей страницы.
136
137 == {{id name="КраткоеруководствопоJasperReports-Возможностиоформления"/}}Возможности оформления ==
138
139 Итак, вёрстка шаблона отчёта заключается в расположении различных элементов — полей вывода текста, геометрических фигур, изображений и др. — в соответствующих секциях. Помимо непосредственного позиционирования таких элементов на листе и наполнения их данными разработчик шаблона может достаточно гибко настраивать внешний вид этих элементов. Рассмотрим возможности по изменения внешнего вида на примере текстового поля (Text Field).
140
141 [[image:attach:textfield-example.png]]
142
143 Настройка элементов осуществляется в панели Properties:
144
145 [[image:attach:textfield-tabs.png]]
146
147 На вкладке Apperance можно настроить точное местоположение и размер элемента, задать основной цвет элемента и цвет фона, указать когда выводить / скрывать элемент и другие параметры.
148
149 [[image:attach:layout.png||height="400"]]
150
151 Для большинства элементов также можно задать стиль оформления границ элемента (какие границы отображать, их цвет, толщина линии) и размер полей (отступов) вокруг элемента.
152
153 [[image:attach:borders.png||thumbnail="true" height="250"]]
154
155 Для текста, выводимого в отчёте с помощью элементов Text Field и Static Text, можно задавать цвет, размер, начертание (жирное, курсив, с подчеркиванием), шрифт, выравнивание текста в блоке по горизонтали и вертикали, а также всевозможные отступы. Более того, текст можно выводить с поворотом на 90, 180 и 270 градусов.
156
157 [[image:attach:text.png||height="400"]]
158
159 Если размер элемента заранее неизвестен (например, размер текстового поля должен зависеть от объёма текста, полученного из источника данных), то можно настроить относительное позиционирование элементов в секции:
160
161 а) либо с помощью выбора правила расположения (layout): элементы располагаются последовательно по вертикали / по горизонтали / в форме таблицы X на Y:
162 [[image:attach:layout-options.png]]
163
164 б) либо с помощью привязки элемента к границам секции / границам других элементов:
165 [[image:attach:position-options.png]]
166
167 Наконец, для того, чтобы документ отчёта соответствовал требуемому формату бумаги, например, А4, можно настраивать размер, ориентацию и поля страницы отчёта:
168
169 [[image:attach:page-format.png||thumbnail="true" height="250"]]
170
171 == {{id name="КраткоеруководствопоJasperReports-Подотчёты"/}}Подотчёты ==
172
173 Достаточно часто нет возможности получить все необходимые данные из источника с помощью одного запроса. Или бывает так, что в отчёт необходимо включить данные из нескольких наборов. Например, в отчёт типа «Досье по пропуску» в самом начале отчёта требуется вывести подробную информацию о владельце пропуска, а далее в основной части отчёта отобразить таблицу событий доступа, связанных с данным пропуском.
174
175 В таких ситуациях на помощь приходит элемент Subreport, который позволяет встраивать один отчёт (подотчёт) в другой.
176
177 [[image:attach:subreport.png||height="400"]]
178
179 В общем случае подотчёт может использовать любой источник данных, но обычно он просто формирует другой запрос к источнику данных родительского отчёта.
180
181 Подотчёт — это ещё один отчёт, который точно также можно редактировать и настраивать:
182
183 [[image:attach:subreport-view.png]]
184
185 == {{id name="КраткоеруководствопоJasperReports-Компиляцияипредпросмотр"/}}Компиляция и предпросмотр ==
186
187 JasperReports для генерации отчёта использует не *.jrxml XML-файлы с определением шаблонов, а скомпилированные из них *.jasper-файлы. В Jaspersoft Studio для компиляции шаблона необходимо вызвать соответствующую команду по кнопке на панели или в контекстном меню на *.jrxml-файле:
188
189 [[image:attach:compile-button.png]]
190
191 [[image:attach:compile-menu.png||height="400"]]
192
193 Компиляция шаблона также выполняется автоматически при попытке предпросмотра отчёта:
194
195 [[image:attach:preview.png||height="250"]]
196
197 Механизм предпросмотра позволяет проверить корректность составления шаблона отчёта, запроса к источнику данных и оценить получившийся внешний вид отчёта.
198
199 В окне предпросмотра формирование отчёта осуществляется по выбранному источнику данных. Разработчик может добавить нужный ему источник данных (например, подключение к реляционной базе данных) в соответствующем разделе:
200
201 [[image:attach:datasource.png||thumbnail="true" height="250"]]
202
203 == {{id name="КраткоеруководствопоJasperReports-Заключение"/}}Заключение ==
204
205 На этом краткое руководство кончается.
206
207 Дополнительную информацию по использованию JasperReports и Jaspersoft Studio можно почерпнуть в разделе [[документации на официальном сайте сообщества>>url:https://community.jaspersoft.com/documentation||shape="rect"]].