[ELMA3] Пример написания простого отчета
В данной статье рассмотрен процесс создания простого отчета «от и до»: формирование запроса в базу данных (далее по тексту - БД), настройку параметров отчета, моделирование макета отчета. В качестве примера выбран отчет по контрагентам с выводом информации об отрасли и ответственном менеджере контрагента – условно назовем отчет – Новый отчет.
Дизайнер
В Дизайнере в разделе Отчеты создаем Новый отчет, который будет выводить информацию о контрагентах, отрасль и ответственных за контрагентов. Используем справочники Контрагенты, Пользователи, Отрасль. Данные объекты можно найти на вкладке Источники данных отчета, в правой части окна – Объекты БД. В Объектах БД можно найти нужный справочник по полю Отображаемое имя, затем посмотреть имя таблицы в БД по полю Имя.
7Редактирование источника данных
1.1. На верхней панели выбираем пункт Редактировать и указываем язык запроса SQL.
1.2. На вкладке Параметры вводим параметр для отчета Ответственный менеджер (Тип: Пользователь, связь: Одиночная).
1.2 . Пишем запрос, который будет выводить Наименование контрагента, его отрасль и ответственного за данного контрагента. Все указанные поля по сути хранятся в одной таблице Контрагенты, но некоторые поля хранят в них только идентификаторы других таблиц, поэтому в запросе соединим нужные таблицы.
Текст запроса:
select Contractor.Name, ContractorIndustry.Industry, "User".FullName from Contractor left join "User" on Contractor.Responsible="User".Id left join ContractorIndustry on Contractor.Industry=ContractorIndustry.Id {if {$OtvetstvennyyMenedzher} <> Null } where "User".Id = {$OtvetstvennyyMenedzher.Id} {end if}
Описание запроса:
select Contractor.Name, ContractorIndustry.Industry, "User".FullName – выбираем поле Name из таблицы Contractor (Наименование контрагента), поле Industry из таблицы ContractorIndustry (Отрасль контрагента), поле FullName из таблицы "User" (Ответственный за контрагента).
from Contractor – указываем из какой таблицы брать данные.
left join "User" on Contractor.Responsible="User".Id – соединяем таблицу User с таблицей Contractor через поле Responsible (Ответственный) из таблицы Contractor с полем Id из таблицы User. Это необходимо, чтобы в результате отчета в выводимом поле Ответственный было полное имя сотрудника, не его ID.
left join ContractorIndustry on Contractor.Industry=ContractorIndustry.Id – соединяем таблицу ContractorIndustry с таблицей Contractor через поле Industry (Отрасль) из таблицы Contractor с полем Id из таблицы ContractorIndustry. Это необходимо, чтобы в результате отчета в выводимом поле Отрасль было название отрасли, не его ID.
{if {$OtvetstvennyyMenedzher} <> Null }
where
"User".Id = {$OtvetstvennyyMenedzher.Id}
{end if} - указываем условие, при котором при пустом значении параметра Ответственный менеджер, будут показываться все записи, а при указанном параметре – будет отображаться только отфильтрованная запись.
Макет отчета
Переходим на вкладку Макет, где рисуем отображение отчета на FastReport в веб-части.
Выводим полученные Данные на макет: в часть Data: Данные. Переименовываем колонки.
Для проверки полученного отчета можно запустить режим отладки по соответствующей кнопке – Отладка.
Если не указывать Ответственного менеджера, получим следующий результат:
Укажем в параметре конкретного сотрудника – Администратор ELMA и снова покажем отчет:
В результате выведены те контрагенты, у которых ответственным менеджером назначен Администратор ELMA.
Сохраняем и публикуем отчет, после чего он станет доступен в веб-части для пользователей.
Таким образом, можно написать простой отчет с использованием одно параметра, с макетом на FastReport.