4.1. Структура данных отчёта

Рассмотрим вкладку Report structure редактора отчёта.

report structure
Рисунок 30. Редактор отчётов: структура данных отчёта

В верхней части находятся поля ввода общих свойств отчёта:

  • 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.

Далее рассмотрены возможные типы наборов данных.