4.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.
Далее рассмотрены возможные типы наборов данных.