В Directum RX активно развиваются инструменты No-Code: почти с каждым обновлением добавляются новые возможности. Но такой функционал как создание отчетов до сих пор доступен только через low-code. То есть для создания любых отчетов надо привлекать разработчика, либо собирать их вручную через экспорт списков. Эту проблему и должен решить конструктор отчетов.
Данное решение позволяет создавать отчеты средней сложности через No-Code, путем выбора нужных для отображения полей, указания фильтров и возможностью объединения типов сущностей. Все это способен выполнить консультант или аналитик без участия разработчика.
Пример использования конструктора
Построим отчет по просроченным заданиям:
На видео вся настройка происходит при помощи простого выбора значений, соответственно не нужно писать SQL запросы или создавать отчет в среде разработки.
Если кратко описать последовательность действий, то получается следующая цепочка:

Для выбора доступны обычные типы сущностей (Входящее письмо, Сотрудники и т.д.) и абстрактные типы, при выборе которых будет возможность работать со всеми свойствами наследников.
Для примера, в качестве основного типа выберем абстрактный официальный документ и объединим его с абстрактной задачей. В результате можно будет использовать как свойства документа, так и свойства задачи.
Рис. Пример выбора нескольких типов

Рис. Пример вывода свойств абстрактной задачи

В отчет можно выводить не ограниченные цепочки ссылочных свойств.
Например:
Документ ›Автор ›Подразделение ›Руководитель ›Персона › Фамилия и инициалы
В отчете можно:
- задавать для столбцов наименования, которые будут отображаться в Excel.
- менять столбцы местами.
В фильтрации можно сравнивать значения как с константой, так и с другой цепочкой свойств.
Рис. Сравнение с константой

Рис. Сравнение с свойством

Для выбора доступны следующие типы свойств и условий:
| Тип свойства | Условие проверки | Описание |
| Логическое свойство | Да | |
| Нет | ||
| Дата | Равно | |
| Не равно | ||
| Больше | ||
| Меньше | ||
| Больше или равно | ||
| Меньше или равно | ||
| Больше, чем дата формирования | Сравнивает с датой формирования отчета | |
| Меньше, чем дата формирования | ||
| Пусто | ||
| Не пусто | ||
| Числовые свойства | Равно | |
| Не равно | ||
| Больше | ||
| Меньше | ||
| Больше или равно | ||
| Меньше или равно | ||
| Пусто | ||
| Не пусто | ||
| Текстовые свойства | Равно | |
| Не равно | ||
| Содержит | Текст должен содержать введенное значение | |
| Пусто | ||
| Не пусто | ||
| Перечисление | Равно | |
| Не равно | ||
| Пусто | ||
| Не пусто | ||
| Свойство ссылка на объект | Равно | |
| Не равно | ||
| Пусто | ||
| Не пусто | ||
| Сущность вложена в задачу | Указанная в свойстве сущность вложена в выбранную задачу | |
| Задача содержит документ | Указанная в свойстве задача/задание содержит в вложениях выбранный документ | |
| Задание содержит документ | ||
| Входит в | Указанный в свойстве пользователь входит в роль/подразделение/нашу организацию |
Условия можно объединять через И/ИЛИ. Объединение работает точно также как и в выражениях для условий в Directum RX.
Рис. Пример объединения нескольких условий

Объединять типы можно по вложению и по свойству.
Условие объединения “В вложениях” означает, что сущность должна быть вложена в задачу или задание.
Рис. Пример объединения задачи с документом по вложению

Условие объединения “Равно” означает то, что свойство первой сущности должно быть равно свойству второй сущности.
Рис. Пример объединения задания с задачей по свойству

Это можно сделать с обложки модуля или через карточку конструктора.
Рис. Запуск на обложке модуля

Рис. Действие в карточке конструктора

В результате будет создан Excel-файл с автоматически построенными фильтрами по столбцам.

Возможности администрирования
У администраторов и роли “Ответственные за настройку отчетов” есть возможность настройки через соответствующий справочник на обложке модуля.
Рис. Открываем настроечный справочник

Рис. Настроечный справочник

Что доступно для настройки:
- Максимальное количество строчек в отчете. Это число записей, которое будет выводится в сформированных пользователями отчетах. Выгрузка больших объемов данных может снизить производительность, поэтому не рекомендуется ставить значение более 500 000.
- Для ранее импортированных записей – настройка действий при импорте ранее перенесенных конструкторов. Примеры действий:
Пропускать – пропуск ранее перенесенных конструкторов;
Обновить – полное обновление значения в конструкторе;
Создать новое – создаем новые записи без изменений в ранее импортированных.
- Создавать отчет в асинхронном режиме – При проставленном чекбоксе отчет формируется в асинхронном режиме. По завершению для инициатора сформируется уведомление с вложенным отчетом. Иначе отчет будет формироваться в реальном времени и при завершении формирования автоматически скачается excel-файл.
Еще администраторам и сотрудникам в роли “Ответственные за настройку отчетов” можно настраивать доступы к типам сущностей через базовую правовую систему. В результате конкретные пользователи могут выбрать для отчета только те типы, к которым у них есть доступ. Для этого в элементах модуля “Конструктор отчетов” размещена ссылка Типы сущностей.
Рис. Элемент Типы сущностей

Дополнительные функции
При настройке конструктора пользователи могут указать периодичность формирования отчета. Для этого в карточке конструктора есть панель “Периодические отчеты”, которую можно свернуть.
Рис. Панель “Периодические отчеты”

Описание полей:
- Период – варианты значений: День, Неделя, Месяц, Год;
- Периодичность – число, через которое будет повторятся формирование отчета;
Например: в качестве периода выберем «Неделя», а в поле «Периодичность» укажем «2». Тогда отчет будет сформирован через 2 недели с даты начала повторений, либо с даты последней генерации.
- Начало повторений – дата начала формирования отчета;
- Окончание повторений – дата, после которой перестанет формироваться отчет;
- Отправить – кому будет отправлен отчет;
- Тип задания – варианты значений: Задание, Уведомление.
Фоновый процесс “Создание отчетов по периодам” позволяет формировать периодические отчеты.
Чтобы перенести конструктор с одного стенда на другой, используется группа Импорт/Экспорт на обложке модуля. Также экспортировать можно как конкретную запись в карточке конструктора, так и множество записей в списке. В результате экспорта будет создан json-файл с описанием всех значений конструктора.
Рис. Группа Импорт/Экспорт

Рис. Экспорт из карточки

Рис. Экспорт из списка

Для импорта конструкторов используется соответствующее действие на обложке модуля. В итоге откроется диалог с выбором json-файла, который экспортировался с другого стенда.
Рис. Поле для выбора json-файла

Состав решения
-
Модуль Конструктор отчетов, настраивается в no-code;
- Конструктор – основные функции настройки отчета;
- Настроечный справочник – чтобы настроить формирование отчетов;
- Тип сущности – системный справочник с основной информацией по типам сущностей.
- Создание отчетов по периодам – создает и отправляет периодические отчеты по расписанию;
- Ответственные за настройку отчетов – пользователи с полным доступом до возможностей настройки отчетов;
- Пользователи с доступом к конструктору отчетов – те, кому доступен модуль «Конструктор отчетов» и его функционал.
Справочники:
Сторонний компонент – нужен для визуальной настройки конструктора.
Фоновые процессы:
Роли:
Итоги и перспективы
Решение компании «СТАРКОВ Групп» полностью достигло поставленных целей:
- Решена задача создания no-code инструмента для построения отчетов: консультанты и аналитики могут сами формировать отчеты средней сложности без разработчиков. Это сокращает время получения необходимых данных с дней до часов.
- Достигнута цель обеспечения гибкости при работе со сложными структурами данных: действует поддержка неограниченных цепочек ссылочных свойств, объединения нескольких типов сущностей и гибкой системы фильтрации. Это позволяет формировать отчеты, ранее доступные только через low-code.
- Решена задача – снизить зависимость от разработки: смещение фокуса с написания SQL-запросов на визуальную настройку позволяет бизнес-пользователям быстро реагировать на изменение потребностей в аналитике без постановки задач разработчикам.
Планы дальнейшего развития:
- Расширить форматы вывода – построение интерактивных дашбордов и поддержка форматов Word и PDF.
- Учесть права доступа при формировании отчетов для безопасности данных.
- Добавить агрегатные функции (суммы, средние, min/max) и визуализировать данные в виде диаграмм в интерфейсе.
Текущая архитектура решения позволяет тиражировать его на любые отрасли, а заложенные механизмы импорта/экспорта настроек обеспечивают удобное тиражирование между контурами и на новые проекты.