Table of Contents

Группировка записей в отчете

Важно

Перед созданием группы необходимо задать источник и элемент данных для отчета

Группировку можно выполнять только по полям узла являющегося элементом данных отчета или по вычисляемым полям их этих узлов.

Шаблон выражения вычисляемого поля для получения значения по группе:

[][<GroupFieldName> == ^.<GroupFieldName> && <condition>].<func>(<name>)

Символ ^ означает, что значение поля берется для группы.

Важно

В редакторе выражений все тэги с наименованиями полей должны заменяться на значения из узла 'Поля'.

Тэг - наименование поля используемое для группировки.

Тэг - наименование поля используемое в дополнительном условии с группировкой.

Тэг - любое логическое выражение построенное с помощью редактора выражений (может отсутствовать).

Тэг - наименование агрегатной функции. В редакторе выражений берется из узла 'Функции → Агрегатные'.

Тэг - наименование поля, для которого надо получить значение агрегатной функции.

Рассмотрим группировку записей в отчете на примере сводного отчета по объектам учета. Группировка будем выполнять по обслуживающим инженерам.

ШАГ 1. Создайте отчетную форму на базе системной 'Сводное потребление в системах объектов учета'.

ШАГ 2. Удалите колонки для систем газоснабжения и электроснабжения.

ШАГ 3. Выделите секцию Detail и добавьте для нее группировку и сортиовку по полю 'ServicerName - обслуживающий'. Для этого выберите поле ServicerName из выпадающего списка 'Добавить группу'.

Для группировки отметьте признаки 'Показывать заголовок' и 'Показывать подвал'.

При проставленном признаке 'Показывать заголовок' появляется секция GroupHeader1, в которой будем отображать содержимое поля группировки (фамилию обслуживающего инженера).

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

В секцию GroupHeader1 перенесите поле ServicerName из списка полей.

В секцию GroupFooter1 скопируйте строку таблицы из секции ReportFooter. Удалите из скопированной строки лишний текст и границы ячеек.

ШАГ 4. Чтобы нумерация записей была в пределах группы, в первой колонке (N) секции Detail измените диапазон подсчета на Группа.

ШАГ 5. Чтобы выводить промежуточные итоги по каждой группе, во всех ячейках с параметрами потребления строки секции GroupFooter1 измените Диапазон подсчета на Группа.

Примечание

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

[ServicerName - обслуживающий] != [^.ServicerName - обслуживающий] Символ ^ означает, что значение поля берется для группы. Например. Пусть для объектов учета есть пользовательский атрибут с именем ReportFilter. Если надо скрыть все группы с обслуживающими, у которых нет ни одного объекта учета со значением
атрибута ReportFilter равным "Show", то условие форматирования имеет вид: Sum(Iif(([ServicerName - обслуживающий] != [^.ServicerName - обслуживающий]) Or ([atribute] != 'Show'), 0, 1)) == 0 где [atribute] выисляемое поле с выражением: IsNull([Атрибуты объекта учета].[ReportFilter], ?) Правило форматирования надо задать для секций GroupHeader1, Detail и GroupFooter1 Правило форматирование не распространяется на подсчет итогов в секции ReportFooter.

ШАГ 6. Сохраните изменения.

Пример сформированного отчета: