3.1. Структура данных отчета
Рассмотрим вкладку Report structure редактора отчета.
В верхней части находятся поля ввода общих свойств отчета:
-
Name - имя отчета. Имя может быть локализовано на вкладке Localization.
-
Group - группа отчетов, применяется для группировки в общем списке браузера отчетов.
-
Default template - шаблон, по которому будет выводиться отчет.
-
System code - необязательный код отчета, по которому его можно при необходимости идентифицировать в программном коде системы.
Основным элементом структуры данных отчета является иерархия полос - Report bands.
Полоса отчета характеризуется следующими параметрами:
-
Band name - уникальное в рамках отчета имя полосы. Должно содержать только латинские буквы, цифры или символ подчеркивания. Кроме того, если имя полосы начинается с символов header, данные из этой полосы не будут отображаться при выводе в виде таблицы.
-
Orientation - ориентация полосы: Horizontal, Vertical или Crosstab. Горизонтальные полосы в выводимом отчете копируются вниз, вертикальные - вправо, перекрестные - вправо и вниз в виде матрицы. Горизонтальные полосы могут содержать вложенные полосы.
-
Parent band - родительская полоса.
Каждая полоса включает в себя один или несколько наборов данных - Datasets. Наборы данных при выполнении отчета представляют собой списки строк, а каждая строка - набор пар имя-значение. Полоса выводится в отчет столько раз, сколько строк в ее самом длинном наборе данных. Имена полей указываются в шаблоне отчета, и при выводе полосы имена заменяются на соответствующие значения. При описании наборов данных можно использовать внешние параметры отчета, а также поля других полос - это позволяет делать полосы связанными.
В каждом отчете присутствует корневая полоса Root. В ней можно создавать наборы данных и ссылаться на их поля из других полос, однако использовать полосу Root в шаблоне нельзя.
Имя набора данных в колонке Dataset name не имеет значения и служит только для удобства пользователя.
Поле Link field позволяет объединять данные из нескольких наборов внутри одной полосы. Его можно использовать, когда невозможно получить полный набор данных в одном запросе или скрипте Groovy.
Далее рассмотрены возможные типы наборов данных.