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

Обратите внимание: данный функционал требует навыков программирования.

Создание отчёта

Перейдите в меню "Дополнение - Конструктор" отчетов и нажмите на кнопку "Создать".  В форме отчета настройте доступ к отчету и панели фильтров.

После создания отчета нажмите на "HTML-блоки" в списке  и добавьте необходимые блоки для отчета.

Предусмотрено несколько типов блоков, которые помогут вам выбрать данные из  базы данных. Подробности смотрите в видеу-уроке.

Отчет для печати 

С помощью конструктора отчетов можно также подготовить документ для печати. В конструкторе предусмотрена  возможность вывода изображения в таблице, иметь возможность настраивать размер колонки, фильтрацию и сортировку записей в таблице. Таким образом у вас будет больше возможностей по сравнению с шаблонами для печати.

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

Аналогично шаблонам для печати, кнопка на данный отчет будет отображаться на странице записи. Подробности смотрите в видео обзоре.

Настройка фильтров

На вкладке "Панели фильтров" можно включить необходимые фильтры на странице отчета. Предусмотрены фильтры по дате пользователю, а также фильтры по сущности и выпадающему списку.

Включенные фильтры можно использовать в MySql запросе или PHP коде.

Обратите внимание: константа возвращает 0 если значение фильтра не выбрано. В связи с этим рекомендую следующий sql пример использования фильтров:

select *, if((field_157=[filter_by_list1] or [filter_by_list1]=0),1,0) as is_filter from app_entity_21 having is_filter=1

if((field_157=[filter_by_list1] or [filter_by_list1]=0),1,0) as is_filter - создаем условие

having is_filter=1 - добавляем фильтр