среда, 19 декабря 2012 г.

JasperReport в Adempiere: создание отчета

Adempiere предлагает для создания различных отчетов использовать JasperReport. В нескольких статьях я хочу осветить вопрос создания отчета, добавление динамики с помощью scriptlets, и добавление поддержки русского языка в отчет.

Все это будет применительно к Adempiere, хотя эти приемы можно использовать в различных случаях. Темы, касающиеся элементов отчетов jasper, здесь рассматривать не буду.
Для начала установим iReport. Его можно скачать с сайта http://community.jaspersoft.com/project/ireport-designer 



Результатом работы iReport для нас являются файлы .jrxml и .jasper. Jrxml файл - это xml файл определенной структуры, управляющий разметкой отчета. Он имеет свой синтаксис, который зависит от версии JasperReport. Есть ли поддержка обратной совместимости - мне не известно.  Файлы .jasper являются продуктом преобразования jrxml файла движком jasper. Именно его используют для вывода отчета. 

Adempiere имеет встроенный движок jasper, поэтому он может работать как с .jrxml так и с .jasper файлами. Однако, как показала практика, файл .jasper, скомпилированный с помощью iReport, не работает в Adempiere. Поэтому iReport мы будем использовать исключительно для того, чтобы получить файл разметки .jrxml. 

Конечно, постоянно использовать нескомпилированный файл накладно по ресурсам. Adempiere придется постоянно его компилировать, а потом уже работать с ним. Поэтому лучше всего получить файл .jasper из .jrxml с помощью adempiere, а потом уже использовать готовый .jasper.

Для того, чтобы ADempiere смог работать с файлом, полученным из iReport, настроим iReport на совместимость с версией 4.0.1. 


В принципе, Adempiere 3.7.0 имеет движок джаспера версии 3.7.3, поэтому можем и его использовать. Я использую 4.0.1 - исторически сложилось.

Приступим.

Мы сделаем следующую задачу:
В окне клиента сделать возможность напечатать отчет с логинами и паролями пользователей указанного клиента.

Создадим новый отчет sample. Сохраним его в папке %ADEMPIERE_HOME%\reports. Сразу добавим новый параметр RECORD_ID. Этот параметр заполняется Adempiere при запуске отчета. Если вы находитесь в какой-либо вкладке на какой-либо записи, то id этой записи попадет сюда.



Значение "11" по умолчанию означает тестового клиента "GardenWorld". Напомню, что клиент, в терминологии adempiere, означает кампанию, которой вы управляете.

Создайте подключение к свой базе данных. И задайте sql запрос.



Создайте простой отчет следующего вида:



Можно протестировать:



Зайдем под ролью System Administrator и создадим отчет и пропишем все необходимые атрибуты. В данном случае мы будем использовать jrxml файл.



Создадим в таблице "ad_client" новое поле для кнопки и укажем нужный процесс.



Не забудьте синхронизировать с базой.



В настройках окна "client" на вкладке "client" нажмите "create fields"



У вас появилась новая кнопка в окне управления клиентами:



Проверим, как работает отчет. Нажмем на эту кнопку.



Через какое-то время открылся окно с pdf файлом вашего отчета.

Есть и другой вариант размещения отчета. Через аттач. Для того чтобы разместить отчет в аттаче, измените свой Report следующим образом:



Таким же образом можно размещать .jasper файлы, только нужно, чтобы adempiere их сам сгенерировал. Если разместить файл .jrxml в папке reports, и хотя бы раз запустить отчет в adempiere, в папке появится файл .jasper. Этот файл и можно использовать в работе.

Комментариев нет:

Отправить комментарий