Урок 9. Настройка печатных форм
Цель данного урока, ознакомить слушателя с принципами создания отчетов.
3. Jaspersoft Studio
Основные визуальные элементы
Repository
Содержит перечень подключений к разным базам данных. Подключения к базе данных необходимо настраивать для того чтобы была возможность тестировать отчеты из jasper studio.
Outline
Отображает структуру открытого отчета.
Properties
Отображает свойства элемента выбранного в outline
. Набор закладок, отображемых в данной области, зависит от выбранного эелеметна.
Editor
Отображает открытый отчет. Содержит следующие закладки:
- Design - используется для редактирования шаблона с использованием визуальных компонентов Jaspersoft Studio.
- Source - на закладке содержиться xml-разметка шаблона, которую при необходимости можно отредактировать.
- Preview - используется для предпросмотра отчёта, сформированнного на основе шаблона.
Project Explorer
Обозреватель проектов используется для добавления, удаления новых проектов, папок, отчетов, а также их выбор для модификации.
Проект
Все шаблоны печатных форм в Jaspersoft Studio создаются внутри проекта, который содержит все необходимые для этого библиотеки. При установке в Jaspersoft Studio создается проект по умолчанию «MyReports». Однако при необходимости можно создать новый проект.
- Совет
-
- Печатные формы проще создавать и редактировать в одном проекте, если они не содержат скриплетов.
Для создания проекта отчёта:
-
Выполните
File > New > Project …
-
Выберите
Jaspersoft Studio / JasperReports Project
- Задайте имя отчёта в следующем диалоге.
По завершению на закладке Project Explorer
появится новый проект, пока ещё не содержащий шаблонов отчёта.
Параметры
Для изучения подробнее смотри: Параметризация шаблонов
Параметры отчета находятся в окне Outline
по адресу {Report} \ parameters
Параметры отчёта используются для следующих целей:
-
В SQL-запросах
Для ограничения данных по переданным из вне параметрам - Связи между частями шаблонов
- Для связи между движком отчёта и внешним окружением.
Параметры могут быть любого java-типа.
Например:
-
REPORT_CONNECTION
типjava.sql.Connection
-
REPORT_PARAMETERS_MAP
типMap<String,Object>
Шаблон отчёта содержит множество служебных параметров. В дереве элементов шаблона они отображаются серыми. Их невозможно удалить, или изменить значение из дизайнера. Их значения могут быть переданы извне или изменены в коде.
- Внимание
-
- Создавайте параметры с именами в верхнем регистре. Это связано с тем, что имена параметров, переданных извне, приводятся к верхнему регистру автоматом.
Использовать параметры можно в полях отчёта в запросе данных даже в других параметрах для того чтобы использовать параметр наименование этого параметра нужно обернуть в тэг $P{PARAMETER_NAME}
Адаптеры данных
Для создания адаптера
1. В окне «Repository Explorer» выполните операцию «Create Data Adapter»3. Укажите реквизиты подключения к базе Postgres
name={имя подключения}
JDBC driver=org.postgresql.Driver
JDBC url=jdbc:postgresql://{host}/{db}
Username ={username}
- Примечание
-
- Подключение к БД необходимо для того, чтобы тестировать отчет из студии.
Запрос данных
Структура страницы шаблона
Созданный шаблон разделен на следующие области:
- Title – заголовок шаблона;
- Page Header – верхний колонтитул шаблона;
- Column Header – область для названия столбцов отчета;
- Detail N – область детализации отчета. В отчет могут быть добавлены несколько областей такого типа (Detail 1, Detail 2 и т.п.) в случае, если есть необходимость разделить детализацию отчета. Например, эта возможность используется, когда необходимо добавить два вложенных отчета;
- Column Footer – нижний колонтитул табличной части шаблона;
- Page Footer – нижний колонтитул шаблона;
- Summary – содержит итоги по отчету. Данные этой области выводятся в конце отчета, построенного по текущему шаблону;
- Background – часть шаблона, на которой размещается фон для печатной формы. Так же в отчет можно добавить дополнительные области:
- Last Page Footer – нижний колонтитул, данные которого выводятся в отчете на последней странице отчета, построенного по текущему шаблону;
- No Data – область, которая выводится при построении печатной формы, если отчет не содержит данных (т.е. является пустым).
Скриптлеты
Для изучения подробнее смотри: Скриптлеты
Скриптлет – это Java-класс, позволяющий кастомизировать обработку событий построения отчета а так же добавить вспомогательные функции
Дополнительная информация:
Скриптлет наследуется от одного из классов:
net.sf.jasperreports.engine. JRAbstractScriptlet
net.sf.jasperreports.engine.JRDefaultScriptlet
Экземпляр данного класса создаётся при заполнении отчёта, и его методы вызываются на различных этапах в качестве обработчиков. Так же скриптлет может содержать пользовательские методы, которые можно вызвать через выражения «Expression» полей, переменных и т.п.
Публикация отчётов в БД
Для обеспечения доступа сервера Global 3 к шаблону отчёта, zip-архив с шаблоном необходимо загрузить в базу данных через приложение «Настройка системы», пункт меню Отчёты > Печатные формы > Версии печатной формы > Загрузить в базу
.
Шаблон JasperReports-отчёта может состоять из нескольких файлов (мастер-деталь, несколько страниц) и содержать различные ресурсы (картинки, скриптлеты). Поэтому, для сохранения в базу, шаблон необходимо заархивировать в zip-архив. Файл main.jrxml
должен находиться в корне архива, иначе он не будет найден. Остальные файлы могут быть во вложенных каталогах, главное, что бы в шаблоне были указаны верные относительные ссылки.
Архив не должен содержать бинарных *.jasper
файлов.
При построении, zip-архив будет разархивирован во временный каталог.
Ручная загрузка отчетов
1. ВProject Explorer
выберите папку содержащую отчеты печатной формы.
Export
.3. Выберите тип
Archive file
.4. Выберите файлы для экспорта.
- Внимание
-
-
Допустимы только следующие расширения:
jrxml
class
jar
5. Укажите опцию save in zip archive
.
6. Укажите файл куда сохранить шаблон.
7. Откройте приложение Настройки системы
.
8. Откройте печатные формы.
Пункт меню Отчеты > Печатные формы
.
9. Создайте версию печатной формы.
10. Загрузите шаблон печатной формы.
- Внимание
-
Убедитесь, что файлы экспортируются в корень архива. Для этого при экспорте должна быть установлена опция
Create only selected directories
Загрузка отчета на dataInstall
Загрузку отчета в базу можно добавить в dataInstall получив blob отчета с помощью метода Rpt_ReportVersionApi().compress
.
Пример:
val blobData = Rpt_ReportVersionApi().compress( List(( "subreport1.jrxml", getClass.getResourceAsStream("/reports/Mes_PlanReport/subreport1.jrxml") ),( "subreport2.jrxml", getClass.getResourceAsStream("/reports/Mes_PlanReport/subreport2.jrxml") ),( "order.jrxml", getClass.getResourceAsStream("/reports/Mes_PlanReport/order.jrxml") ),( "main.jrxml", getClass.getResourceAsStream("/reports/Mes_PlanReport/main.jrxml")) ) )
Полностью пример можно посмотреть в ru.bitec.app.bs.Bs_DataInstallPkg#reportInstall
.