5.2. Отчет по списку экземпляров сущности

Мастер отчетов позволяет создавать два вида отчетов по списку экземпляров сущности:

  1. отчет по вручную выбранным экземплярам определенной сущности;

  2. отчет по экземплярам сущности, удовлетворяющим некоторому запросу.

Рассмотрим первый тип отчета. Допустим, что нам необходимо получить список экземпляров книг, находящихся в библиотеке (сущность library$BookInstance) с их названиями и отделами библиотеки, в которых они находятся.

На первом этапе необходимо указать детали отчета:

  • Entity - сущность, по списку экземпляров которой будет создаваться отчет - library$BookInstance.

  • Format of template file - формат вывода отчета - XSLX.

  • Report name - имя отчета - Book items location.

Затем нужно выбрать тип построения отчета - Report for list of entities и нажать Next.

query step 1

В соответствии с условием задачи, в окне выбора атрибутов необходимо выбрать BookItem.Publication.Book.Name, BookItem.LibraryDepartment.Name.

list of entities attributes

Нажмем ОК для перехода ко второму этапу - редактированию регионов отчета.

Шаблон отчета по списку сущностей может содержать только один регион, выводящий данные в виде таблицы. Добавлять новые регионы нельзя, но можно отредактировать набор данных в существующем, нажав на ссылку со списком атрибутов, либо удалить существующий регион и создать его заново, для чего наверху станет активной кнопка Add tabulated region.

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

list of entities editor

После сохранения отчет можно запускать из браузера отчетов.

Дополнительно мы можем добавить кнопку запуска отчета в экран просмотра экземпляров книг, открывающийся из браузера публикаций по кнопке Show items. Для этого установим в XML-дескрипторе экрана bookinstance-browse.xml для таблицы экземпляров книг (bookInstancesTable) атрибут multiselect="true" и добавим код кнопки:

      <table id="bookInstanceTable"
             multiselect="true">
             ...
                  <buttonsPanel>
                  ...
                      <button id="printList"
                      caption="msg://printList"/>

После этого инжектируем в контроллере компонент Button:

@Inject
private Button printList;

После этого внутри переопределенного метода init() добавим следующий код:

TablePrintFormAction action = new TablePrintFormAction("report", bookInstanceTable);
    bookInstanceTable.addAction(action);
    printList.setAction(action);

Теперь отчет можно запускать из браузера экземпляров книг, выбирая экземпляры для отчета в таблице и нажимая на кнопку Print list. Опция Print selected экспортирует выбранные экземпляры, опция Print all - все экземпляры, выбранные текущим фильтром.

list of entities running

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

list of entities result