4.3. Отчет по экземплярам сущности, отобранным при помощи запроса
Теперь рассмотрим второй тип отчета - отчет по списку сущностей, выбранных с помощью запроса. Для этого усложним задачу: отчет должен содержать в себе список экземпляров книг (с именами и названиями отделов), добавленных после определенной даты.
Как и в предыдущем случае, начнем с того, что зададим детали отчета:
-
Entity - сущность, по списку экземпляров которой будет создаваться отчет -
library$BookInstance
. -
Format of template file - формат вывода отчета - XSLX.
-
Report name - имя отчета -
Recently added book items.
Затем нужно выбрать тип построения отчета - Report for list of entities, selected by query.

Выбранный тип отчета позволит нам автоматически отобрать список сущностей, соответствующих определенному запросу. Для того чтобы задать этот запрос, необходимо нажать на ссылку Set query, появившуюся внизу.
Отобразится окно выбора условий запроса, которое во многом аналогично соотвествующему окну универсального фильтра. Оно позволяет добавлять условия, объединять их в группы AND/OR и настраивать их параметры.
Для добавления нового условия запроса нужно нажать на кнопку Add. Отобразится окно выбора атрибутов сущности library$BookInstance
, в котором необходимо выбрать атрибут Created at
. Атрибут будет добавлен в дерево условий запроса и в панели справа отобразятся его свойства. Выберем оператор запроса (>=
).

После сохранения запроса необходимо нажать Next и перейти к выбору атрибутов сущности library$BookInstance
, которые будут включены в отчет. В соответствии с условием задачи, перенесем в правую колонку атрибуты BookItem.Publication.Book.Name
, BookItem.LibraryDepartment.Name
. Нажмем ОК для перехода ко второму этапу.

Нажмем Next → Save для сохранения отчета. В отобразившемся редакторе готовый отчет будет выглядеть следующим образом:

В редакторе можно усложить структуру отчета, добавив новые полосы и наборы данных, а также настроить дизайн шаблона отчета, сделать локализацию отчета или определить настройки прав доступа.
К примеру, перейдем на вкладку Parameters and Values. В списке Parameters выберем и изменим имя параметра запроса: Date
вместо стандартного CreateTs1
.

Наконец, добавим в экран просмотра списка отделов библиотеки кнопку Report, позволяющую запустить данный отчет.
Для этого внесем в XML-дескриптор экрана librarydepartment-browse.xml
реализацию кнопки:
<table id="libraryDepartmentTable"
...
<buttonsPanel id="buttonsPanel">
...
<button id="reportBtn"
caption="msg://reportBtn"/>
</buttonsPanel>
</table>
После чего в контроллере инжектируем компонент Button
:
@Inject
private Button reportBtn;
и в переопределенном методе init()
зададим для кнопки действие RunReportAction
:
reportBtn.setAction(new RunReportAction("report"));
В браузере отделов библиотеки появится кнопка Report, по нажатию на которую открывается список всех доступных в системе отчетов. Для того чтобы запустить наш отчет, необходимо выбрать в списке Recently added book items, указать дату и нажать Run report.

Готовый отчет выглядит следующим образом:
