К статье
Практический материал

Отчеты и Аналитика · 11 мин

Как сгруппировать строки в СКД 1С

Как сгруппировать строки в СКД 1С: настройка группировок в конструкторе, иерархия, итоги, программная группировка, типичные ошибки и проверка результата.

Группировка строк — базовый прием в системе компоновки данных (СКД) 1С, который превращает плоскую таблицу в структурированный отчет: данные собираются по контрагентам, номенклатуре, периодам или любым другим измерениям, а по каждой группе автоматически считаются итоги. Настройка выполняется на закладке «Настройки» схемы компоновки и не требует изменения запроса.

Типичная ситуация: запрос возвращает детальные записи (например, строки продаж по документам), а отчет должен показать сводку по менеджерам или складам. Достаточно добавить группировку по нужному полю — СКД сама сгруппирует строки, рассчитает суммы ресурсов и выведет иерархию с возможностью свернуть или развернуть узлы.

Ниже разобраны все способы группировки: через настройки отчета, иерархические группировки, программное формирование, а также ошибки, из-за которых строки не сворачиваются или итоги считаются неверно.

Как работает группировка в СКД

СКД получает набор данных из запроса — это плоская таблица детальных записей. Группировка определяет, по каким полям эти записи сворачиваются в узлы дерева. Внутри каждой группировки можно вложить следующую: например, «Склад → Номенклатура → Документ». Так получается многоуровневый отчет с итогами на каждом уровне.

Для числовых полей, которые нужно суммировать, используются ресурсы — они задаются на закладке «Ресурсы» схемы компоновки. Если поле не объявлено ресурсом, СКД не сможет посчитать по нему итог, и в группировочных строках колонка останется пустой. Ресурс обычно рассчитывается функцией Сумма(Количество) или Сумма(СуммаПродажи).

Важно понимать: группировка выполняется на уровне компоновки, а не запроса. Запрос может вернуть миллион детальных строк, а СКД свернет их в сотню групп. При больших объемах это влияет на производительность, поэтому тяжелые агрегации иногда выносят в сам запрос через СГРУППИРОВАТЬ ПО и итоги ИТОГИ ПО.

Добавление группировки в конструкторе настроек

Откройте схему компоновки данных отчета и перейдите на закладку «Настройки». В левой части окна настроек находится дерево структуры отчета, в правой — список доступных полей. Чтобы добавить группировку, нажмите кнопку «Добавить группировку» (или «Новая группировка») на панели инструментов структуры.

В появившемся окне выберите поле группировки — например, «Контрагент». Если оставить поле пустым, получится «детальные записи» — группировка без поля, которая просто выводит все строки набора данных. После выбора поля укажите тип группировки: «Элементы», «Иерархия» или «Только иерархия» (подробнее об этом ниже).

Далее проверьте выбранные поля. На закладке «Выбранные поля» внутрь группировки должны попасть само поле группировки и ресурсы, которые нужно показать. СКД часто добавляет их автоматически, но при ручной настройке поля легко потерять — тогда в отчете появится группировка без данных.

Порядок добавления группировки
  1. 1
    Откройте схему компоновки данных, закладка «Настройки»
  2. 2
    Нажмите «Добавить группировку» в дереве структуры отчета
  3. 3
    Выберите поле группировки, например «Номенклатура»
  4. 4
    Укажите тип группировки: Элементы, Иерархия или Только иерархия
  5. 5
    На закладке «Выбранные поля» добавьте поле группировки и ресурсы
  6. 6
    На закладке «Ресурсы» убедитесь, что суммируемые поля заданы как Сумма(Поле)
  7. 7
    Сформируйте отчет и проверьте, что строки свернулись и итоги заполнены

Иерархические группировки и вложенность

Типы группировок: Элементы, Иерархия, Только иерархия

Для ссылочных полей (справочники, документы) доступны три типа группировки. «Элементы» группирует только по самим значениям поля без учета иерархии справочника. «Иерархия» выводит и элементы, и родительские папки, рассчитывая итоги по каждой папке. «Только иерархия» показывает лишь родительские узлы без самих элементов — полезно для сводки по группам справочника.

Если в отчете по справочнику «Номенклатура» выбрать тип «Иерархия», пользователь увидит дерево: папки товаров, внутри — сами товары, и по каждой папке посчитаны итоги. Это самый частый вариант для аналитических отчетов по иерархическим справочникам.

Вложенные группировки

Чтобы сгруппировать сначала по складам, а внутри складов — по номенклатуре, выделите группировку «Склад» в дереве структуры и нажмите «Добавить группировку» — новая группировка вставится внутрь выделенной. Порядок вложенности определяет порядок детализации отчета: чем глубже группировка, тем мельче разрез данных.

Ограничение: каждая вложенная группировка умножает объем обрабатываемых данных. Отчет с четырьмя-пятью уровнями вложенности по крупным таблицам может формироваться заметно дольше. Если нужна только сводка верхнего уровня, уберите детальные записи и лишние уровни — отчет ускорится в разы.

Сравнение типов группировки

Элементы

Группировка только по значениям поля без папок справочника. Подходит для плоских справочников и полей-измерений.

Иерархия

Выводит папки и элементы с итогами по каждой папке. Подходит для отчетов по иерархическим справочникам, но увеличивает объем выборки.

Только иерархия

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

Итоги и ресурсы по группам

Итоги по группировкам считаются только по полям, объявленным ресурсами. На закладке «Ресурсы» добавьте нужные поля и выберите выражение агрегирования: Сумма, Количество, Среднее, Максимум, Минимум. Для поля «Количество различных» используется Количество(Различные Поле).

Общий итог по отчету выводится автоматически, если ресурс рассчитывается «По общему итогу» — эта настройка есть в списке ресурсов. Если общий итог не нужен (например, он бессмыслен для среднего процента), колонку «Общий итог» для ресурса можно очистить.

Частая задача — вычисляемое поле в группировке, например процент от итога. Такие показатели создаются на закладке «Вычисляемые поля» с выражением вида Сумма(Продажи) / Вычислить("Сумма(Продажи)", "ОбщийИтог") * 100. Функция «Вычислить» позволяет обратиться к итогу вышестоящего уровня группировки.

Программная группировка через компоновщик настроек

Когда отчет формируется из кода (например, в фоновом задании или при выводе на печать), группировку можно добавить программально через объект КомпоновщикНастроекКомпоновкиДанных. Настройки загружаются из схемы, затем в структуру добавляется группировка.

Настройки = СхемаКД.НастройкиПоУмолчанию;

Группировка = Настройки.Структура.Добавить(Тип("ГруппировкаКомпоновкиДанных"));

ПолеГруппировки = Группировка.ПоляГруппировки.Элементы.Добавить(Тип("ПолеГруппировкиКомпоновкиДанных"));

ПолеГруппировки.Поле = Новый ПолеКомпоновкиДанных("Номенклатура");

ПолеГруппировки.Использование = Истина;

ВыбранноеПоле = Группировка.Выбор.Элементы.Добавить(Тип("ВыбранноеПолеКомпоновкиДанных"));

ВыбранноеПоле.Поле = Новый ПолеКомпоновкиДанных("СуммаОборот");

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

bsl
Группировка = Настройки.Структура.Добавить(Тип("ГруппировкаКомпоновкиДанных"));
ПолеГруппировки = Группировка.ПоляГруппировки.Элементы.Добавить(Тип("ПолеГруппировкиКомпоновкиДанных"));
ПолеГруппировки.Поле = Новый ПолеКомпоновкиДанных("Контрагент");
ПолеГруппировки.Использование = Истина;

Проверка результата и типичные ошибки

После настройки сформируйте отчет и проверьте три вещи: строки свернулись по полю группировки, итоги по группам заполнены, общий итог сходится с суммой детальных записей. Если отчет показывает плоский список без свертки — группировка либо не добавлена в структуру, либо для нее снят флаг использования.

Еще одна частая проблема — дублирование строк внутри группы. Оно возникает, когда в выбранные поля попало поле из детального уровня (например, номер документа), по которому значения различаются. СКД вынуждена выводить отдельную строку на каждое сочетание значений. Решение — убрать детальное поле из выбранных полей группировки или агрегировать его.

Также проверьте отборы и параметры: иногда отчет «не группируется» просто потому, что в выборку попала одна строка или данные отрезаны фильтром. Сформируйте отчет без отборов и сравните поведение.

Типичные ошибки
01
Поле не добавлено в ресурсы — итоговые колонки в группировках пустые
02
В выбранные поля группировки попало детальное поле (номер, дата документа) — строки не сворачиваются, дублируются
03
Добавлена группировка без поля вместо группировки по полю — выводятся детальные записи вместо сводки
04
Выбран тип «Только иерархия» для неиерархического справочника — отчет пустой или неполный
05
Группировка добавлена не в тот уровень структуры — нарушен порядок детализации отчета
Контрольные точки

Как проверить результат

Структура отчета
Норма

В дереве структуры есть группировка с заполненным полем и включенным использованием

Тревожный признак

Группировка без поля или с снятым флагом использования

Итоги по группам
Норма

В строках группировок суммы заполнены и сходятся с детальными записями

Тревожный признак

Итоговые колонки пустые или равны нулю

Свертка строк
Норма

Каждое значение поля группировки встречается один раз

Тревожный признак

Одно значение повторяется в нескольких строках подряд

FAQ: частые вопросы о группировке строк в СКД

Как сгруппировать строки без изменения схемы компоновки?

Пользователь может добавить группировку прямо в режиме предприятия: в форме отчета откройте «Еще → Изменить вариант» (или «Настройки»), добавьте группировку по нужному полю и сохраните вариант отчета. Схема компоновки в конфигурации при этом не меняется — изменения хранятся в пользовательских настройках варианта.

Почему в группировке пустые итоги, хотя данные есть?

Почти всегда причина в отсутствии ресурса: откройте закладку «Ресурсы» схемы и проверьте, что числовое поле добавлено туда с функцией «Сумма» или другой агрегатной. Вторая возможная причина — ресурс рассчитывается по группировке, которой нет в структуре: очистите колонку группировки у ресурса, чтобы он считался по всем группам.

Как вывести только итоги по группам без детальных строк?

Удалите из структуры группировку «Детальные записи» (группировку без поля) или не добавляйте ее внутрь вашей группировки. Тогда отчет покажет только строки групп с итогами. Дополнительно можно отключить вывод детальных полей на закладке «Выбранные поля».

Чем группировка в СКД отличается от СГРУППИРОВАТЬ ПО в запросе?

СГРУППИРОВАТЬ ПО сворачивает данные на уровне запроса: СКД получает уже агрегированную таблицу и не может показать детализацию. Группировка СКД работает поверх детальных записей и позволяет гибко менять структуру отчета настройками. Для интерактивных отчетов предпочтительна группировка СКД, для тяжелых выборок с заранее известной структурой — агрегация в запросе.

Как сгруппировать по периоду — месяцу или неделе?

Добавьте в запрос поле периода нужной периодичности, например через функцию языка запросов НАЧАЛОПЕРИОДА(Дата, МЕСЯЦ), или используйте автополе периода регистра. Затем создайте группировку по этому полю. Для виртуальных таблиц оборотов периодичность задается в параметрах виртуальной таблицы.

Можно ли свернуть или развернуть группы при выводе?

Да, в табличном документе группировки выводятся с уровнями группировок: пользователь может сворачивать и разворачивать узлы кнопками уровней на панели табличного документа. Программно начальный уровень развернутости задается через свойства вывода — параметр «Состояние группировок» в настройках вывода отчета.

Итог

Что важно запомнить

Группировка строк в СКД настраивается на закладке «Настройки»: добавьте группировку по полю, включите нужные ресурсы с агрегатными функциями и проверьте выбранные поля. Итоги считаются только по ресурсам, детальные поля в группировке мешают свертке, а иерархический тип группировки дает дерево с итогами по папкам справочника.