Пример написания простого отчета

В данной статье рассмотрен процесс создания простого отчета «от и до»: формирование запроса в базу данных (далее по тексту - БД), настройку параметров отчета, моделирование макета отчета. В качестве примера выбран отчет по контрагентам с выводом информации об отрасли и ответственном менеджере контрагента – условно назовем отчет – Новый отчет.

Дизайнер

В Дизайнере в разделе Отчеты создаем Новый отчет, который будет выводить информацию о контрагентах, отрасль и ответственных за контрагентов. Используем справочники Контрагенты, Пользователи, Отрасль. Данные объекты можно найти на вкладке Источники данных отчета, в правой части окна – Объекты БД. В Объектах БД можно найти нужный справочник по полю Отображаемое имя, затем посмотреть имя таблицы в БД по полю Имя.

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.