4.2. Отчет по списку экземпляров сущности
Мастер отчетов позволяет создавать два вида отчетов по списку экземпляров сущности:
-  
отчет по вручную выбранным экземплярам определенной сущности;
 -  
отчет по экземплярам сущности, удовлетворяющим некоторому запросу.
 
Рассмотрим первый тип отчета. Допустим, что нам необходимо получить список экземпляров книг, находящихся в библиотеке (сущность library$BookInstance) с их названиями и отделами библиотеки, в которых они находятся.
На первом этапе необходимо указать детали отчета:
-  
Entity - сущность, по списку экземпляров которой будет создаваться отчет -
library$BookInstance. -  
Format of template file - формат вывода отчета - XSLX.
 -  
Report name - имя отчета -
Book items location. 
Затем нужно выбрать тип построения отчета - Report for list of entities и нажать Next.
 
  В соответствии с условием задачи, в окне выбора атрибутов необходимо выбрать BookItem.Publication.Book.Name, BookItem.LibraryDepartment.Name.
 
  Нажмем ОК для перехода ко второму этапу - редактированию регионов отчета.
Шаблон отчета по списку сущностей может содержать только один регион, выводящий данные в виде таблицы. Добавлять новые регионы нельзя, но можно отредактировать набор данных в существующем, нажав на ссылку со списком атрибутов, либо удалить существующий регион и создать его заново, для чего наверху станет активной кнопка Add tabulated region.
В данном случае, менять ничего не нужно. Нажмем Next → Save для сохранения отчета. В редакторе отчетов отчет будет выглядеть следующим образом:
 
  После сохранения отчет можно запускать из браузера отчетов.
Дополнительно мы можем добавить кнопку запуска отчета в экран просмотра экземпляров книг, открывающийся из браузера публикаций по кнопке 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 - все экземпляры, выбранные текущим фильтром.
 
  Готовый отчет будет выглядеть следующим образом: