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. Этот файл и можно использовать в работе.
Комментариев нет:
Отправить комментарий