|
||||||||
Статьи / Создание печатной формы в Pentaho Report Designer26.11.2017 г. Создание печатной формы в Pentaho Report Designer – Open Source дизайнере отчетов. Для примера взята форма отчета «Отчет о кредитах, выданных нерезидентам (форма 17-ПБ)», который банки Казахстана сдают в Национальный банк, в рамках регуляторной отчетности. Создаем новый отчет, в свойствах отчета указываем название:
Как и в других конструкторах, структура отчета состоит из полос (band): Заголовок Отчета, Заголовок Страницы, Детали, Подвал Страницы, Подвал Отчета. При необходимости можно добавить группировку строк по какому-то признаку, соответственно тогда возникнут полосы Заголовок Группы и Подвал Группы. Для отображения групповых полос необходимо будет снять галочку «Скрыть элемент» с этой группы в панели Структуры документа.
Далее размещаем все компоненты (поля) отчета на соответствующих полосах. Для текстовых полей соответственно текстовые компоненты, для числовых – числовые, и так далее. Задаем границы элементов. Для того, чтобы изменять свойства нескольких элементов – в Структуре документа выделяем их всех через Shift. На картинке у всех выделенных элементов изменено свойство Левая граница, на «Одинарная». Для того, чтобы сбросить свойство, кликаем галочку Унаследовано.
Так как в текстовых полях длина текста может быть различной, и текст может переходить на вторую или третью строку, то высоту всех элементов на полосе Детали задаем как 100% от допустимой. В этом случае тот элемент, в котором длинный текст увеличил высоту, растянет полосу по высоте, и все остальные элементы на полосе автоматически растянутся. Для указания высоты в 100% нужно ввести текст «100%».
Далее, на вкладке Данные добавляем датасет, из которого выводятся данные в отчет.
С большинством распространенных баз данных система соединяется прямо «из коробки», но для некоторых баз данных нужно доложить коннектор в папку C:\...\report-designer\lib. Для удобства можно внести несколько датасетов, например, тестовый и рабочий. Активный датасет указываем, кликнув на нем правой кнопкой, и выбрав пункт Выбрать запрос. После выбора активного датасета, если все в порядке с коннектом, и с запросом, под датасетом появится список полей из запроса.
Если список полей из запроса не появился, то нужно проверить SQL запрос, указанный в датасете. Могут мешать комментарии в тексте запроса, или до или после запроса. В JDBC коннекторе к MySQL, до недавних пор, наблюдался сбой, список полей под датасетом не появлялся, пока в тело SQL-запроса датасета не добавить команду LIMIT. Количество строк в LIMIT не имело значения, например, 1 000 000 000, но сама команда LIMIT должна была присутствовать. Данный сбой исправили недавно, например, в текущем коннекторе mysql-connector-java-5.1.44-bin.jar такой особенности уже нет. Отчет строится за какой-то период, соответственно в отчет нужно передать параметры Дата_От и Дата_По. Под датасетом есть раздел Параметры, добавляем параметр dl_from, и аналогично dl_to.
Параметры вставляем в текст SQL запроса в фигурных скобках: SELECT … FROM … WHERE … = ${dt_from} … = ${dt_to} При вызове отчета пользователь получит приглашение ввести даты.
Далее заполняем все поля с данными. Двойной клик на компоненте вызывает список с полями, выбираем нужное поле.
В свойствах компонента устанавливаем формат отображения значения поля, например «dd.MM.yyyy» для даты, или «#,##0» для чисел. В первой колонке отчета номер строки. Поэтому это компонент Ярлык (Label), а не поле для данных. В атрибутах этого Ярлыка, в свойстве Значение, указываем формулу =( ROWCOUNT() + 1 )
Если формула введена правильно, то над формулой будет или рассчитанное значение, или сообщение «Недостаточно данных для расчета». Если в формуле ошибка, то появится сообщение об ошибке. Даже пустая строка после формулы считается ошибкой.
В отчете есть поле с рассчитываемым значением. Под датасетом, в разделе Функции, добавляем функцию типа Open Formula.
В свойствах добавленной формулы, переименовываем ее имя в удобоваримое RowCount_..., и в атрибуте Формула добавляем нужные расчеты.
В подвале отчета необходимо вывести сумму итого под некоторыми колонками. Это то же рассчитываемое поле, только с типом Сумма (Sum).
В отличии от формулы с типом Open Formula, в атрибутах формулы Сумма нужно просто указать столбец (поле), по которому рассчитывается сумма итого. Все добавленные формулы появятся в выпадающем списке полей при клике на компоненте, соответственно указываем их в соответствующих компонентах.
Для лучшей читаемости отчета, можно чередовать фоновый цвет строк таблицы. Для этого в свойствах полосы, в атрибуте Фоновый цвет (bg-color) добавляем формулу: =IF( ISODD( ROWCOUNT() ); "#FFFFFF"; "#DDDDDD" ). Действие формулы понятно без комментария.
Последний штрих – в Заголовке отчета, в соответствующем Ярлыке добавляем формулу: = "за период с " & MESSAGE("{0,date,dd.MM.yyyy}"; [dt_from]) & " г. по " & MESSAGE("{0,date,dd.MM.yyyy}"; [dt_to]) & " г.". Формула переводит параметры Дата_От и Дата_По в текстовый формат. Отчет готов.
Пример регуляторного отчета 17-ПБ «Отчет о кредитах, выданных нерезидентам» в PDF. Пример регуляторного отчета 17-ПБ «Отчет о кредитах, выданных нерезидентам» в Excel. В отчете в Excel есть скрытые столбцы, то есть некоторые поля в отчете не плотно подогнаны друг к другу. Можно поменять раскладку полосы с Холста на Строку. В раскладке Холст вы сами размещаете компоненты на полосе. В раскладке Строка полоса сама будет выстраивать все компоненты друг за другом, примерно как float:left в свойствах div в HTML. Вам останется только изменять ширину компонентов, и менять их порядок в строке (перемещать влево – вправо по полосе) с помощью кнопок под ярлычком Структура документа.
PS: Для отладки отчета использовался тестовый SQL-запрос для наполнения отчета случайными данными.
SELECT Автоматизируйте Ваши отчеты на Business Intelligence платформе Pentaho! |
||||||||