Конструктор отчетов
Цель данного функционала предоставить возможность создавать собственные запросы к любой сущности в приложении и выбирать любые данные. Очень часто поступают запросы сделать выборку одновременно из нескольких сущностей и отобразить данные в одной таблице или же сделать некий сводный отчет, который отображает данные в заданном формате. Все эти задачи поможет решить конструктор отчетов.
Обратите внимание: данный функционал требует навыков программирования.
Создание отчёта
Перейдите в меню "Дополнение - Конструктор" отчетов и нажмите на кнопку "Создать". В форме отчета настройте доступ к отчету и панели фильтров.
После создания отчета нажмите на "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
- добавляем фильтр