Подсчет итогов. Использование Master-Detail списков

<< Click to Display Table of Contents >>

Navigation:  Проект > Документы объектов > Генератор отчетов > Примеры построения отчетов > Непрерывно-периодический отчет >

Подсчет итогов. Использование Master-Detail списков

Нам по заданию также требуется найти максимальное и минимальное значение на каждом цикле. Ранее мы уже проводили вычисление итогов – для этого в MasterReport есть специальные функции. Однако для того чтобы подвести итог данных, эти данные нужно сначала построить – вывести в бэнд. Кроме того, необходимо чтобы итог считался (и выводился) независимо для каждого цикла.

Решить указанные проблемы поможет использование инструмента Master-Detail. В отчетах с использованием данной функции одному выводимому значению из Master источника данных, соответствует какое-то количество значений (от нуля и более) из Detail источника данных, то есть несколько строк из Detail как бы вложены в строку данных Master. Примером такого отчета в жизни является, например, телефонный справочник, где Master-строка – это буква алфавита, а Detail строки – список абонентов с фамилией на данную букву.

Наш отчет будет строиться следующим образом. Сначала будет выведена Master строка – параметры цикла, затем будут выведены  строки данных Detail источника – значения температуры. После вывода строк Detail источника мы сможем подвести итог – найти максимум и минимум. Рассмотрим подробно такую реализацию.

Сначала перетащим на страницу источник данных "Значения_температуры". Отметим вывод всех колонок, и бэнда Итог данных.

ReportManualPart3_img24

Бэнды добавились в низ страницы

ReportManualPart3_img25

Теперь сделаем чтобы бэнд "DataЗначения_температуры" был Detail источником, бэнда "DataПараметры_цикла" (он, соответственно, будет Master). Для этого вызовем контекстное меню бэнда "DataЗначения_температуры", и выберем пункт Редактировать.

ReportManualPart3_img26

Перейдем на закладку Мастер компонент и привяжем наш бэнд к бэнду "DataПараметры_цикла". Нажмем Ок. Теперь мы сделали Master-Detail список.

ReportManualPart3_img27

Запустим построение отчета.

ReportManualPart3_img28

Теперь у каждого цикла, после графика идет набор строк со значениями температуры.

Однако в нашем задании не нужно создавать строки со значениями температуры – достаточно только графика. То есть необходимо, чтобы бэнд с данными был построен, но значения не были видны в отчете. Для этого нужно задать у бэнда нулевую высоту.

Удалим с бэнда данных "DataЗначения_температуры" текстовые поля, а затем при помощи маркера уменьшим размер бэнда до нуля – чтобы от бэнда остался только заголовок.

ReportManualPart3_img29

Теперь бэнд будет вычислен, но строки в отчет выводиться не будут.

Теперь можно производить вычисление итогов. Добавим на бэнд 4 поля. На два из них поместим подписи. Также увеличим высоту бэнда – для лучше визуального отделения каждого цикла.

ReportManualPart3_img30

В оставшихся двух разместим поля с вычисленным итогом. Вызовем окна редактора текста. Укажем функцию вычисления максимума, по бэнду "DataЗначения_температуры".

ReportManualPart3_img31

Но при таких настройках будет вычислен максимум за весь диапазон отчета, а не за диапазон конкретного цикла. Чтобы ограничить вычисление нужным нам циклом, воспользуемся полем Условие.

Установим галочку у данного поля, и введем в него такой же код, какой мы указывали при фильтрации графика:

Значения_температуры.Время>Параметры_цикла.Начало_цикла &&

Значения_температуры.Время<Параметры_цикла.Конец_цикла

ReportManualPart3_img32

Теперь условие будет вычисляться в нужном нам диапазоне. Аналогичным образом сделаем для вычисления поля Минимум.

ReportManualPart3_img33

Запустим построение отчета.

Теперь для каждого цикла вычислены итоги.

ReportManualPart3_img34

В конце отчета нам нужно подвести итог – количество выполненных циклов. Для решения этой задачи воспользуемся подведением итога в бэнде "FooterПараметры_цикла".

Добавим на бэнд два текстовых поля, установим у них границу, в одно добавим подпись "Количество циклов:".

ReportManualPart3_img35

Во второе поле добавим итог. Для вычисления количества выполненных циклов, нужно просто подсчитать количество построенных бэндов "DataПараметры_цикла".

Воспользуемся для этого функцией Count.

ReportManualPart3_img36

Запустим построение отчета.

ReportManualPart3_img37

Отчет необходимой формы построен.

ReportManualPart3_img38

 

Примечание. Готовый отчет можно посмотреть в проекте "Master-Detail отчет" в объекте "Непрерывно-периодический".