Version 1.1 by pugachevskaya_elena on 2026/01/16 17:17

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

Платформа НЕЙРОСС