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

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

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

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

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

На первом этапе укажите детали отчёта:

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

  • Template type – формат вывода отчёта – XSLX.

  • Report name – имя отчёта – Book items location.

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

list of entities step 1
Рисунок 11. Создание отчёта по списку экземпляров сущности в мастере: шаг 1

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

list of entities attributes
Рисунок 12. Создание отчёта по списку экзмепляров сущности в мастере: выбор атрибутов

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

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

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

list of entities editor
Рисунок 13. Редактор отчётов

После сохранения запустите отчёт через общий список отчётов.

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

<groupTable id="bookInstancesTable"
            multiselect="true"
                        ...>
    <actions>
        <action id="create" type="create"/>
                <!-- -->
        <action id="list" type="listPrintForm" caption="msg://printList"/>
    <columns>
        <!-- -->
    </columns>
    <rowsCount/>
    <buttonsPanel id="buttonsPanel"
                  alwaysVisible="true">
        <button id="createBtn" action="bookInstancesTable.create"/>
        <!-- -->
        <button id="listBtn" action="bookInstancesTable.list"/>
    </buttonsPanel>
</groupTable>

Далее свяжите отчёт Book items location с экраном просмотра сущности BookInstance. Откройте отчёт на редактирование, перейдите на вкладку Roles and Screens, выберите экран library$BookInstance.browse из выпадающего списка и добавьте его в таблицу ниже:

list of entities screens
Рисунок 14. Редактор отчётов: связывание отчёта с экраном

Теперь запустите отчёт из браузера экземпляров книг. Чтобы добавить экземпляры в отчет, сначала перейдите в экран Library → Accession Register и сгенерируйте экземпляры для одной из книг в выпадающем списке. Затем, перейдите в экран Library → Publications, выберите книгу, для которой сгенерировали экземпляры ранее, и нажмите кнопку Show items. В появившемся экране BookInstances выберите экземпляры для отчета в таблице и нажмите кнопку Print list. Опция Print selected экспортирует выбранные экземпляры, опция Print all – все экземпляры, выбранные текущим фильтром.

list of entities running
Рисунок 15. Окно выбора количества экземпляров сущности для отчёта

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

list of entities result
Рисунок 16. Пример выполненного отчёта