3.4. Отчёт по экземплярам сущности, отобранными при помощи запроса

Теперь рассмотрим второй тип отчёта – отчёт по списку сущностей, выбранных с помощью запроса. Для этого усложним задачу: отчёт должен содержать в себе список экземпляров книг (с именами и названиями отделов), добавленных после определенной даты.

Как и в предыдущем случае, начните с задания деталей отчёта:

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

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

  • Report name – имя отчёта – Recently added book items.

Затем выберите тип построения отчёта – Report for list of entities, selected by query.

query step 1
Рисунок 17. Создание отчёта по экземплярам сущности, отобранными при помощи запроса, в мастере: шаг 1

Выбранный тип отчёта позволит автоматически отобрать список сущностей, соответствующих запросу. Для того чтобы задать этот запрос, нажмите на ссылку Set query, появившуюся внизу.

Отобразится окно выбора условий запроса, которое во многом аналогично соответствующему окну универсального фильтра. Оно позволяет добавлять условия, объединять их в группы AND/OR и настраивать их параметры.

Для добавления нового условия запроса нажмите на кнопку Add. Отобразится окно выбора атрибутов сущности library$BookInstance, в котором выберите атрибут Created at. Атрибут будет добавлен в дерево условий запроса, и в панели справа отобразятся его свойства.

В панели свойств можно установить значение параметра по умолчанию. Если не планируется изменять логику отчёта, сделайте этот параметр скрытым условием, для этого установите флажок Hidden. В этом случае пользователям не будет предлагаться ввести этот параметр при запуске отчёта.

Выберите оператор запроса (>=).

query parameter
Рисунок 18. Окно выбора условий запроса

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

query step 2
Рисунок 19. Создание отчёта по экземплярам сущности, отобранными при помощи запроса, в мастере: шаг 2

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

query editor
Рисунок 20. Редактор отчётов

В редакторе можно усложнить структуру отчёта, добавив новые полосы и наборы данных, а также настроить дизайн шаблона отчёта, сделать локализацию отчёта или определить настройки прав доступа.

К примеру, перейдите на вкладку Parameters and Formats. В списке Parameters выберите и измените имя параметра запроса: Date вместо стандартного CreateTs1. Сохраните изменения и закройте редактор отчёта.

query parameter rename
Рисунок 21. Редактор параметра

Наконец, добавьте в экран просмотра списка отделов библиотеки кнопку Run report, позволяющую запустить данный отчёт.

Для этого добавьте новое стандартное действие RunReportAction в элементе actions и кнопку на панели buttonsPanel в XML-дескрипторе экрана librarydepartment-browse.xml:

<groupTable id="libraryDepartmentsTable"
            width="100%"
            dataContainer="libraryDepartmentsDc">
    <actions>
        <action id="create" type="create"/>
        <action id="edit" type="edit"/>
        <action id="remove" type="remove"/>
        <action id="run" type="runReport"/>
    </actions>
    <!-- -->
    <buttonsPanel id="buttonsPanel"
                  alwaysVisible="true">
        <!-- -->
        <button id="runReportBtn" action="libraryDepartmentsTable.run"/>
    </buttonsPanel>
</groupTable>

Для всех отчётов добавьте экран library$LibraryDepartment.browse к списку экранов на вкладке Roles and Screens редактора отчётов, как мы делали в предыдущих примерах.

В браузере отделов библиотеки появится кнопка Run report, по нажатию на которую открывается список доступных в системе отчётов. Для того чтобы запустить наш отчёт, выберите в списке Recently added book items, укажите дату и нажмите Run report.

query running
Рисунок 22. Окно выбора отчёта

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

query result
Рисунок 23. Пример выполненного отчёта