Дизайн отчетов
Для каждого из отчетов необходимо задать специальный файл (шаблон), который будет использоваться для построения результирующего документа. В качестве имени шаблона конкретного отчета используется <имя формы>_<имя первой группы объектов>
. Считается, что у пустой группы объектов нет имени, поэтому если первая группа объектов пустая, имя шаблона просто равняется имени фор мы (без постфикса _
).
При разработке шаблона разработчик может использовать в качестве полей свойства групп объектов, которые входят в соответствующий отчет или отчеты-предки. Имена и типы полей будут совпадать с именами и типами свойств на форме. Если один отчет является непосредственным потомком другого отчета, то он должен быть вставлен в шаблон как подотчет, при этом свойства и фильтры в нем в качестве значений верхних объектов будут использовать текущие значения объектов верхнего отчета.
В случае, если при формировании отчетов не удается найти хотя бы один из шаблонов, то запускается механизм автоматического формирования шаблонов на основе текущей иерархии, который для каждого отчета создает свой отдельный шаблон, в который выносятся все необходимые свойства и подотчеты. При этом, если в один отчет входит несколько групп объектов, то самая нижняя группа в списке будет использоваться как детализация, а для каждой верхней группы в шаблоне будет создана отдельная группировка с своим блоком, в который будут вынесены все свойства из этой группы.
В качестве конкретной реализации м еханизма формирования документов используется LGPL технология JasperReports. Соответственно шаблонами являются файлы формата jrxml, которые можно редактировать при помощи приложения JasperSoft Studio. В момент формирования отчета выполняется поиск файлов шаблонов с именем <имя шаблона>.jrxml
в текущем classpath'е сервера (в том числе во всех подкаталогах). Если хоть один файл шаблона не был найден, платформа сгенерирует некоторый автоматический дизайн. Этот дизайн, при запуске сервера из IDE и формировании отчета в режиме предпросмотра, можно при помощи соответствующих кнопок сохранить в каталог запуска (и каталог исходников), после чего отредактировать в соответствии с требованиями задачи (при этом платформа будет автоматически синхронизировать файлы в каталоге запуска и каталоге исходников).