Jasper Reports#
Java-библиотека для построения печатных отчетов. Позволяет строить:
Готовые к печати PDF-файлы в интерактивном динамическом HTML с навигацией внутри или за пределами отчета.
Высококачественные документы PowerPoint, RTF, Word.
Электронные таблицы или необработанные CSV, JSON или XML.
Примечание
Данный раздел не является полным руководством к средству построения отчётов JasperReport. Документ содержит описания базовых принципов создания шаблонов и способов взаимодействия инфраструктуры Global 3 SE с построителем отчётов JasperReports.
Дистрибутив#
Скачать дистрибутив можно с ftp по адресу ftp://ftp.bitec.ru/pub/#Distrib/JasperStudio.
Для разработки шаблонов отчётов доступны две IDE:
Jaspersoft® Studio;
iReport Designer.
Примечание
Данный раздел касается только Jaspersoft Studio.
Jaspersoft Studio#
Программное обеспечение для создания и редактирования шаблонов JasperReports. С помощью Jaspersoft Studio возможно:
разрабатывать и запускать шаблоны отчетов;
создавать запросы к отчетам;
писать сложные выражения;
компоновать визуальные компоненты.
Внимание
Перечень шрифтов в дизайнере Jaspersoft Studio может отличаться от перечня шрифтов на сервере приложения. Используйте стандартные шрифты, к примеру Arial.
Внимание, быстродействие отчета сильно зависит от шрифтов. Если в вашем отчете выводятся данные со множеством страниц, например, отчет с тысячами строк, то рекомендуется разрабатывать его на шрифте Arial, после отладки менять шрифты на нужные и обратить внимание на изменения по быстродействию формирования отчета.
Пример:
отчет с 100 тысячами строк на
Arial: 3 минуты;на
Times New Roman: 20 минут.
Обучающее видео#
Видео выложено на Ftp по адресу ftp://ftp.bitec.ru/pub/#Global/Video/Обучение/Создание ПФ отчетов в Jasper.
Документация JasperReports#
Руководство пользователя по адресу
ftp://ftp.bitec.ru/pub/#Distrib/JasperStudio.
Чтобы открыть примеры Jaspersoft Studio выполните File > New > Project > JasperReports Samples. В выбранном рабочем каталоге будет создано множество примеров отчётов.
Пользовательский интерфейс#

Repository#
Содержит перечень подключений к разным базам данных. Подключения к базе данных необходимо настраивать для того чтобы была возможность тестировать отчеты из Jaspersoft Studio.
Outline#
Отображает структуру открытого отчета.
Properties#
Отображает свойства элемента выбранного в outline.
Editor#
Отображает открытый отчет. Содержит следующие закладки:
Design;
Source;
Preview.
Колонки#
Страницы отчета содержат банды (группы визуальных элементов), независимые от данных (например, заголовок или нижние колонтитулы страницы), и банды, которые печатаются только при наличии одной или нескольких записей из данных для печати.
Банды с данными можно разделить на вертикальные столбцы, чтобы максимально использовать доступное пространство на странице. Количество колонок можно задать в диалоге разметки страницы(properties\reports\page format для outline\{Report}).
Bands#
Отчет делится на банды, в которые добавляются визуальные элементы. Список основных предопределенных бандов:
Title: Это первый видимый банд. Он создается только один раз и может быть распечатан на отдельной странице.Page Header: Позволяет определить заголовок страницы.Column Header: Печатается перед началом отрисовки колонки.Column Footer: Печатается в конце каждой колонки.Page Footer: Появляется в конце каждой страницы.Summary: Содержит итоги по отчету.
Detail band#
Печатается для каждой записи данных отчета. Детальных бандов может быть несколько, поэтому по умолчанию создается детальный банд с именем „detail 1“.
В детальной части можно расположить «Text Field» и задать для каждого выражения получения данных.

Настройка среды Jaspersoft Studio#
Запустите среду разработки отчётов Jaspersort Studio
Создание подключения к ДБ#
В окне «Repository Explorer» выполните операцию «Create Data Adapter».

В открывшемся диалоге выберите «Data base JDBC connectivity».
Укажите реквизиты подключения к базе Postgres:
name=PGDEV;JDBC driver=org.postgresql.Driver;JDBC url=jdbc:postgresql://{host}/{db};Username ={username}.
Примечание
Подключение к БД необходимо для того, чтобы тестировать отчет из студии.
Проект отчета#
Проект отчета создается на группу печатных форм, на усмотрение аналитика.
Совет
Печатные формы проще создавать и редактировать в одном проекте, если они не содержат скрипелтов.
Для создания проекта отчёта:
Выполните
File > New > Project ….Выберите
Jaspersoft Studio / JasperReports Project.Задайте имя отчёта в следующем диалоге.
По завершении на закладке Project Explorer появится новый проект, пока ещё не
содержащий шаблонов отчёта.

Создание простой печатной формы#
Простейший отчёт, выводящий список на основе SQL-запроса.
В окне
Project Explorerвыберите требуемый проект.Создайте каталог для печатной формы. В контекстном меню выполните пункт
New > folder.Создайте отчет. В контекстном меню выполните пункт
New > Jasper Report.Задайте имя шаблона отчета
main.jrxml. Файл с этим именем будет искаться при построении отчёта из Global 3 SE.Нажмите кнопку
next.Выберите адаптер базы данных.
Нажмите кнопку
next.Введите запрос.
Нажмите кнопку
next.Добавьте требуемые поля в соответствующие банды.
Нажмите кнопку
finish.Проверьте корректность отчета на закладке
Previewв окнеEditor.
Редактирование запроса с данными:
Откройте отчет.
В окне outlet выберите корень.
Нажмите кнопку
Edit query, filter and sort options. Кнопка находится в окне Properties по адресуReport \ DataSet.
Также запрос можно посмотреть в окне Properties на закладке Advanced

Двухуровневый отчёт (мастер-деталь)#
Создайте файл мастер-шаблона
main.jrxml(имя обязательно). Аналогично одноуровнему шаблону.Создайте файл детального-шаблона
subreport.jrxml. В данном шаблоне будут отображаться детальные данные. Имя может быть любым.Добавьте в мастер
Subreport. Откройте мастер шаблон и в окне outlet в секциюDetail 1добавьте элементSubreport, в свойствах которого укажите:Имя файла детального шаблона. Expression=
"subreport.jrxml".Подключение к БД. Connection Expression =
$P{REPORT_CONNECTION}.
Свяжите запросы двух шаблонов параметрами:
Создайте в детальном шаблоне параметр
ID_MASTER.Параметризуйте детальный запрос. Обращение к параметру в детальном запросе
$P{ID_MASTER}.Свяжите параметр детального шаблона с мастером:
Зайдите в раздел «Subreport» свойств мастер-шаблона.
Вызовите диалог редактирования свойства «Edit Parameters».
Задайте связь. Для этого создайте параметр
ID_MASTERc выражением$F{id}.
Совет
Для вывода актуальных данных в предпросмотре мастер отчета,
после редактирования детального отчета, следует вызвать перекомпиляцию.
Отчет книга (Report Book)#
Отчет книга – это .jrxml, который объединяет несколько отчетов в единый объект.
Создайте новый отчет-книгу:
Кликните правой кнопкой мыши в
Project Explorerи выполните пунктNew > Jasper Report.В новом мастере создания отчета выберите
Report Books \ Empty Book.Укажите имя
main.jrxml(имя обязательно) .
Создайте отчет, который будет отображаться в книге. Отчет может быть как одноуровневым, так и двухуровневым.
В отчете-мастере вызовите контекстное меню и выполните пункт «Add new book part».
Добавьте отчет, созданный в пункте 2.
Свяжите отчеты между собой. Связь запросов двух отчетов параметрами происходит аналогично двухуровневому отчету.
Внимание
Отображение номеров страниц в отчетах, отображаемых в книге осуществляется через переменную $V{MASTER_CURRENT_PAGE}, а общее количество страниц – через $V{MASTER_TOTAL_PAGES}. В настройках текстового поля должно быть указано evaluationTime="Master".
Параметризация шаблонов#
Параметры отчета находятся в окне Outline по адресу {Report} \ parameters
Параметры отчёта используются для следующих целей:
В SQL-запросах. Для ограничения данных по переданным извне параметрам.
Связи между частями шаблонов.
Для связи между движком отчёта и внешним окружением.
Параметры могут быть любого java-типа.
Например:
REPORT_CONNECTIONтипjava.sql.Connection;REPORT_PARAMETERS_MAPтипMap<String,Object>.
Шаблон отчёта содержит множество служебных параметров. В дереве элементов шаблона они отображаются серыми. Их невозможно удалить, или изменить значение из дизайнера. Их значения могут быть переданы извне или изменены в коде.
Параметр имеет значение по умолчанию. Его удобно использовать при разработке и тестировании отчёта, заменяя передачу значения параметра извне.
Внимание
При задании строкового значения по умолчанию, его необходимо брать в двойные кавычки.
Флаг Is For Prompting означает, что при тестовом построении отчёта из
среды Jaspersoft Studio будет запрошено значение параметра.
Внимание
Создавайте параметры с именами в верхнем регистре. Это связано с тем, что имена параметров, переданных извне, приводятся к верхнему регистру автоматом.
Передача параметров в отчёт#
В отчёт можно передать значение параметра с любым типом данных, в том числе служебных параметров. Также, через параметры можно передать значения макросов фильтра, сортировки или весь запрос целиком.
@Oper(
caption = "Печать",
description = "Печать",
imageIndex =17,
order = 100
)
def printReport(): Unit = {
createReportEx(
getVar("sSystemName").asString(),
null,
PostBuildAction.print,
Map[String, Any](
"ParamTestLong" -> 100500.nl,
"ParamTestDouble" -> NNumber.fromAny(100500.100500D),
"ParamTestString" -> "Тестовая строка",
"ParamTestDate" -> NDate.now(),
"MacroTestFilter" -> "(1 = 1)"
)
)
}
Карта значений всех переданных извне параметров доступна в служебном
параметре REPORT_PARAMETERS_MAP.
Значение можно получить выражением:
$P{REPORT_PARAMETERS_MAP}.get("ИМЯ_ПАРАМЕТРА")
Если в шаблоне создать параметр MY_PARAMETER, имя которого в верхнем
регистре равно имени переданного в отчёт параметра, значение
MY_PARAMETER будет проинициализировано переданным значением. Это
позволяет использовать переданные значения параметров в SQL-запросах.
Пример использования, в отчёте: Rpt_JasperSimpleQuery
Использование параметров в SQL-запросах#
Подстановка значения#
Подстановка значения параметра в запрос выполняется выражением $P{ИМЯ _ПАРАМЕТРА}. Следите за регистром имён параметров, в случае несовпадения будет ошибка компиляции.
select o.*, $P{MY_ORDER_ID} as idMy
from orders o
where order_id = $P{MY_ORDER_ID}
В данном случае будет выполнен sql запрос:
select o.*, ? as idMy from orders o where order_id = ?
Значение параметра отчёта будет передано как значение sql-параметра.
Подстановка выражения (макроса)#
Для подстановки в sql-запрос выражения (или полного текста sql-запроса)
необходимо использовать синтаксис $P!{ИМЯ _ПАРАМЕТРА}.
select * from orders order by $P!{ИМЯ _ПАРАМЕТРА}
select * from orders where $P!{ИМЯ _ПАРАМЕТРА}
$P!{MY_QUERY}
Использование параметров, содержащих список значений#
В отчет можно передавать массив значений в одном параметре.
Для этого в REPORT_PARAMETERS_MAP в значении параметра нужно передать массив
Array[java тип]().
Например:
"TEST" -> Array[Long](23553,23552)
Настройка параметра с множеством в Jasper Studio#
В Jasper Studio нужно выбрать тип для параметра, которому будет передаваться массив значений:
Перейдите к параметрам отчета.
Откройте свойства параметра.
Задайте «Class» значением
ArrayList.Задайте «Nested type name». К примеру
LongилиString.
Использование параметров с null#
Для использования в SQL параметров которые могут быть принимать значение null
необходимо использовать синтаксис $X{ИМЯ_ФУНКЦИИ, ИМЯ_КОЛОНКИ, ИМЯ_ПАРАМЕТРА}.
Где ИМЯ_ФУНКЦИИ
EQUAL;NOTEQUAL;LESS;GREATER;и др.
Для запроса
select * from orders where $X{EQUAL, num_column, num_param}
Будут сгенерирован текст:
select * from orders where num_column = 1
Или если параметр null
select * from orders where num_column IS null
Управляющие параметры#
На процесс построения и экспорта отчёта могут влиять:
служебные параметры отчёта;
свойства контекста построения отчёта.
Служебные параметры отчёта.#
Имя |
Возможные значения |
Описание |
|---|---|---|
REPORT_LOCALE |
Locale.forLanguageTag(«ru-RU») |
Устанавливает локаль, используемую при построении отчёта |
Свойства контекста построения отчёта.#
Имя свойства контекста построения отчета начинается с net.sf.jasperreports
Полный список можно найти в документации JasperReports
Значения по умолчанию определены в ресурсах JasperReports:
jasperreports-x.x.x.jar\default.jasperreports.properties
Значения могут быть переданы через параметры метода createReportEx() или
определены с свойствах шаблона («Properties \ Advanced \ Misc \ Edit
Properties»)
Дополнительные управляющие параметры#
Параметры, передающиеся в отчет стандартной операцией печати:
idSrcObject- id объекта от которого создан отчет;idSrcClass- id класса объекта от которого создан отчет;idUser- id пользователя;signData_dz- json, подписи печатных бланков для отчетов. Пример значения:[ { "sFIO": "Калинин В.М.", "sPosition": "Транспортировщик", "idEmployee": 25712, "idDepartment": 101672, "sBasisDocument": " №036/426-06-2020-ОЛПС от 01.01.2020", "idBlankSignType": 95351, "gidBasisDocument": "139800/5433" } ]
Экспорт#
По умолчанию, отчёт экспортируется в pdf. Формат, в который будет
выполнен экспорт, определяется параметром FILENAME.
На экспорт влияют параметры контекста построения, имена которых начинаются с
net.sf.jasperreports.export.
Описание параметров:
FILENAME
Определяет имя и формат файла с результатом построения отчёта. Отчёт может быть экспортирован в следующие форматы: pdf, xls, docx, xlsx, pptx, xml, json, html, ods, odt, rtf, txt, jpg, jpeg, gif, png.
По умолчанию, экспортируется в pdf. Возможные значения c AS 1.18: \{name} | {name.} | {name.ext} | {.ext}
Возможные значения до AS 1.17: \
{name.ext} | {.ext} | {ext}
Растровые изображения#
Дополнительные параметры контекста, отсутствующие в списке стандартных свойств контекста JasperReports.
net.sf.jasperreports.export.graphics2d.page.indexтипInteger- номер экспортируемой страницы.net.sf.jasperreports.export.graphics2d.zoom.ratioтип Float - коэффициент увеличения. По умолчанию, страница формата A4 имеет размеры 842x595px, 72dpi. При экспорте в растровое изображение с такими параметрами, читаемость текста крайне низка. Параметр позволяет пропорционально увеличить размеры изображения без потери качества.net.sf.jasperreports.export.graphics2d.offset.xтипInteger- сдвиг по оси X.net.sf.jasperreports.export.graphics2d.offset.yтипInteger- сдвиг по оси Y.
GIF и PNG с прозрачностью#
Для экспорта страницы отчёта в gif или png с прозрачным фоном
необходимо отключить заливку фона белым цветом.
Параметр net.sf.jasperreports.export.graphics2d.white.page.background тип boolean управляет заливкой фона страниц отчёта белым цветом.
Построение отчёта на основе JSON-данных#
Для построения отчёта на основе JSON-данных:
Создайте xxx.json файл содержащий данные в json формате. Файл должен находится в каталоге с шаблоном.
Пример содержимого:{"Northwind": { "Customers": [ { "Phone": "030-0074321", // nonstandard unquoted field name "PostalCode": 12209, // nonstandard single-quoted field name "ContactName": "Maria Anders", // standard double-quoted field name "Fax": "030-0076545", "Address": "Obere Str. 57", "CustomerID": "ALFKI", "CompanyName": "Alfreds Futterkiste", "Country": "Germany", "City": "Berlin", "ContactTitle": "Sales Representative" } ] }}
В «Repository Explorer» создайте JSON-источник данных.
Перейдите в свойства «Main DataSet \ Query» шаблона.
выберите созданный источник JSON-данных.
Установите Language = JSON.
Заполните выражения запроса.
Пример:Northwind.Customers(Country == $P{Country})Более подробную информацию по синтаксису смотрите в вики. Для автоматического формирования запроса кликните по требуемому узлу JSON дерева(слева от выражения запроса).
Нажать «Read Fields» для создания полей на основе JSON-данных.
Теперь к полям источника данных можно обращаться как к полям
SQL-запроса $F{ПОЛЕ}.
Для передачи данных в функцию createReportEx() используйте параметр
JSON_INPUT_STREAM c типом java.io.InputStream содержащим JSON-данные.
пример:
val json = """{json-данные}"""
createReportEx(
getVar("sSystemName").asString,
null,
PostBuildAction.print,
Map[String, Any](
"JSON_INPUT_STREAM" ->
IOUtils.toInputStream(json, "UTF-8")
)
)
Также доступны параметры:
JSON_LOCALE;JSON_TIME_ZONE;net.sf.jasperreports.json.date.pattern;net.sf.jasperreports.json.number.pattern.
Скриптлет (Scriptlet)#
Скриптлет - это Java-класс, позволяющий кастомизировать обработку событий построения отчета, а также добавить вспомогательные функции.
Дополнительная информация:
Скриптлет наследуется от одного из классов:
net.sf.jasperreports.engine. JRAbstractScriptlet;net.sf.jasperreports.engine.JRDefaultScriptlet.
Экземпляр данного класса создаётся при заполнении отчёта, и его методы вызываются на различных этапах в качестве обработчиков. Также скриптлет может содержать пользовательские методы, которые можно вызвать через выражения «Expression» полей, переменных и т.п.
Создание скриптлета#
Для создания скриптлетов необходимо иметь Java-проект, к которому подключена библиотека:
"net.sf.jasperreports" % "jasperreports" % "6.5.1"
Перечень действий:
Создайте Java-класс.
public class JRMyExampleScriptlet extends net.sf.jasperreports.engine.JRDefaultScriptlet { }
Переопределите необходимые методы-обработчики событий.
Если требуется добавьте необходимые функции.
Для создания и компиляции класса скриптлета, можно использовать проект
Application. Для этого необходимо подключить к модулю, в котором будет
создан класс скритплета, библиотеку:
settings(
libraryDependencies ++= Seq(
"net.sf.jasperreports" % "jasperreports" % "6.5.1" %
"compile"
excludeAll(*ExclusionRule*("com.lowagie"),*ExclusionRule*("org.olap4j"))
)
)
При этом, если построение отчёта будет запущено из приложения отлаживаемого в IDEA, будет возможна отладка кода скриптлета.
Подключение скритплета к шаблону#
Соберите Jar, содержащий данный класс.
Скопируйте полученный Jar в каталог проекта версии отчёта. Также допустимо не создавая Jar, скопировать структуру каталогов с class-файлом скриптлета в каталог проекта отчёта.
Подключите скриплет к дизайнеру JasperReport Studio:
Кликните правой кнопкой мыши на каталоге проекта и выберите «Build Path\Configure Build Path».
Если нужно, подключите jar. Для этого выполните «Add JARs» и выберите jar-файл из каталога проекта версии отчёта.
Если нужно подключите каталог. Для этого выполните «Add Class Folder…» и выберите каталог.
Создайте новый скриплет в отчете. Новый скриплет создается из списка скриплетов отчета в окне
outlineпо адресу{Reports} \ Scriptlets.В свойствах скриплета укажите класс созданного скриплета.
Теперь при выполнении компиляции и просмотра отчёта в JasperReports Studio будут вызываться методы созданного скриптлета.
Пример скриплета для реализации суммы прописью#
Rpt_JRScriptletNumberToStrSample
Сумма прописью реализована в библиотеке numbertostr: «ftp://ftp.bitec.ru/pub/%23Global/utils/NumberToStr/numbertostr-all-1.0-SNAPSHOT.jar».
Эта библиотека поставляется с сервером global. Для работы в Jasper Studio необходимо подключить эту библиотеку к проекту отчета.
Скриплет – обертка#
Создание скриплета:
Создайте в проекте файл скриплета. Файл создается в проекте отчета в каталоге
src:import net.sf.jasperreports.engine.JRDefaultScriptlet; import net.sf.jasperreports.engine.JRScriptletException; import ru.bitec.numbertostr.MoneyToStr; import ru.bitec.numbertostr.settings.Currency; import ru.bitec.numbertostr.settings.PennyShowType; import ru.bitec.numbertostr.settings.Language; import java.math.BigDecimal; public class JRMoneyToStrScriptlet extends JRDefaultScriptlet { public String moneyToStrRu(BigDecimal npSum) throws JRScriptletException{ return MoneyToStr.spellout( npSum, Currency.RUR, Language.RUS, PennyShowType.TEXT ); } public String moneyToStrByCurrencyAndLanguageAndPennyShowType( BigDecimal npSum, String currency, String language, String pennyShowType ) throws JRScriptletException { return MoneyToStr.spellout( npSum, Currency.valueOf(currency), Language.valueOf(language), PennyShowType.valueOf(pennyShowType) ); } }
Добавляем новый скриплет в отчет:
Зайдите в свойства отчета. Для этого кликните правой кнопкой мыши по каталогу отчета.
Перейдите в раздел «Java build path».
Перейдите на закладку «source».
Добавьте каталог. Нажмите «Add folder» и укажите каталог
src.
В свойствах сервлета укажите:
Name =
JRMoneyToStrScriptlet;Class =
JRMoneyToStrScriptlet.
После этого функции скриплета становятся доступными в expression editor в разделе Parameters
Пример выражения:
$P{JRMoneyToStrScriptlet_SCRIPTLET}.moneyToStrRu($F{nSum})
После завершения редактирования отчета необходимо собрать проект.
При экспорте кроме *.jrxml файлов надо экспортировать *.class
файлы скриптлетов.
Внимание
Именно файлы, а не папку bin, чтобы они оказались в корне архива, иначе jasper их не найдет при печати из глобал.

Скриптлет для скрытия колонок таблицы с сохранением ее ширины#
При разработке отчетов возникает необходимость скрывать колонки таблицы в зависимости от определенных условий. Т.к. движок Jasper не позволяет динамически изменять ширину элементов в момент построения отчета, при скрытии колонок с помощью выражения printWhenExpression, оставшиеся видимыми элементы не изменяют свои размеры, из-за чего на месте скрытых элементов появляются пустоты. Скрыть колонки и сохранить ширину таблицы можно с помощью скриптлета ru.bitec.app.rpt.ColumnResizerScriptlet.
Примечание
Скриптлет позволяет колонки для элемента Таблица, не элементы HeaderColumn и Detail.
Для скрытия колонок необходимо создать группу, в Header или Footer которой нужно поместить элемент Таблица. Для того, чтобы указать скриптлету, какие колонки нужно скрыть, необходимо в отчете создать параметр HIDDEN_COLUMN, в котором указать нужные колонки в формате строки "GroupName1_ColumnName1;GroupName2_ColumnName2;...;GroupNameN_ColumnNameM", где:
GroupNameN- имя группы, в которой расположена нужная таблица (автоматически группы именуются Group1, Group2 и т.д.).ColumnNameM- имя колонки в таблице (автоматические именуются Column1, Column2 и т.д.). Имена групп и колонок таблицы можно поменять в отчете.
Внимание
Для корректной работы скриптлета в Header или Footer должна содержаться только таблица и ничего больше.
Публикация отчётов в БД#
Для обеспечения доступа сервера Global 3 к шаблону отчёта, zip-архив с шаблоном необходимо загрузить в базу данных через приложение «Настройка системы», пункт меню Отчёты > Печатные формы > Версии печатной формы > Загрузить в базу.
Шаблон JasperReports-отчёта может состоять из нескольких файлов (мастер-деталь, несколько страниц) и содержать различные ресурсы (картинки, скриптлеты).
Поэтому, для сохранения в базу, шаблон приходится архивировать в zip-архив. Файл main.jrxml должен находиться в корне архива, иначе он не будет найден. Остальные файлы могут быть
во вложенных каталогах, главное, чтобы в шаблоне были указаны верные относительные ссылки.
Архив не должен содержать бинарных *.jasper файлов.
При построении, zip-архив будет разархивирован во временный каталог.
Ручная загрузка отчетов#
В
Project Explorerвыберите папку содержащую отчеты печатной формы.В контекстном меню выполните
Export.Выберите тип
Archive file.выберите файлы для экспорта.
Внимание
Допустимы только следующие расширения:
jrxml;class;jar.
Укажите опцию
save in zip archive.Укажите файл куда сохранить шаблон.
Откройте приложение
Настройки системы.Откройте печатные формы. Пункт меню
Отчеты > Печатные формы.Создайте версию печатной формы.
Загрузите шаблон печатной формы.
Внимание
Убедитесь что файлы экспортируются в корень архива. Для этого при экспорте должна быть установлена опция 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.mes.Mes_DataInstallPkg#reportInstall.
Отчет с содержанием#
Возьмем Report Book, в котором 2 отчета:
TableOfContents;Content.
Для создания содержания с гиперссылками в начале документа
Укажите свойства отчета TableOfContents:
если отчет стоит перед
ContentтоEvaluationTime=Report;net.sf.jasperreports.bookmarks.data.source.parameter=REPORT_DATA_SOURCE.
При необходимости установить галочку «Use Cache». Галочка находится на
Pages.Настройте поле для
Anchorв отчетеContent:Перейдите на поле которое хотите видеть в содержании.
Задайте свойства на закладке
Hyperlink:«Anchor name expression» =
$F{sposition}. Можно указывать имя в виде"Позиция: " + $F{sposition}, но нужно учитывать, что если тут будет число – нужно привести его к.toString.«Bookmark level» =
1.
Создайте поля в Dataset’e отчета TableOfContents:
levelтипjava.lang.Integer;pageIndexтипjava.lang.Integer;labelтипjava.lang.String.
Для отображения имени гиперссылки:
Создайте или перейдите на соответствующий TextField в TableOfContents.
Задайте значением
$F{label}.Свяжите поле с уровнем anchor. Укажите свойство «Appearance \ print when \ print when expression» =
$F{level}==1.
Для отображения номера страницы:
Создайте или перейдите на соответствующий TextField в TableOfContents.
Задайте значение
$V{PAGE_NUMBER} + $F{pageIndex} + 1.Задайте свойство «Evaluation Time» =
Auto.Свяжите поле с уровнем anchor. Укажите свойство «Appearance \ print when \ print when expression» =
$F{level}==1.
При необходимости можно сделать поля с именем анкора и номером страницы гиперссылками:
Откройте свойства поля.
Перейдите на закладку Hyperlink.
В разделе HyperLink задайте:
«Link Target» =
Self;«Link Type» =
LocalAnchor;«Hyperlink Anchor Expression» =
$F{lable}.