Группировки в СКД 1С задают структуру отчета: по каким полям сворачивать строки, где выводить итоги и в каком направлении разворачивать данные. Настраиваются они на вкладке «Настройки» схемы компоновки данных (дерево структуры вверху справа) или программно через коллекцию НастройкиКомпоновкиДанных.Структура. Группировка без полей — это «Детальные записи», группировка с полями — итоговые строки, элемент «Таблица» — разворот в строки и колонки одновременно.
Ниже — все виды группировок, которые встречаются в реальных отчетах, правила наследования настроек (именно на них спотыкаются чаще всего), собственные итоги в таблице и код для создания группировок из встроенного языка.
Виды группировок в СКД
| Элемент структуры | Что выводит | Типичное применение |
|---|---|---|
| Детальные записи | Каждую строку набора данных без свертки | Отладка набора, реестры документов |
| Группировка по полю | Итоговую строку на каждое значение поля | Продажи по контрагентам |
| Иерархическая группировка | Итоги по элементам и их родителям | Номенклатура по папкам, статьи затрат |
| Составная группировка | Итог по комбинации нескольких полей | Период «начало — конец», склад + организация |
| Таблица | Строки и колонки одновременно | Кросс-отчеты: товары по месяцам |
| Диаграмма | Графическое представление | Дашборды и динамика |
Отдельный элемент структуры добавляется через контекстное меню дерева «Новая группировка» или клавишей Insert. Если в открывшемся окне не указать поле, получится группировка детальных записей.
Детальные записи и группировка по полю
Самый простой отчет — одна группировка детальных записей и все поля в выбранных. Получается плоская таблица, совпадающая с результатом набора данных. Я всегда начинаю новый отчет именно с такого варианта: сразу видно, что реально возвращает запрос, нет ли дублей и пустых значений.
Дальше добавляется группировка по полю, например по контрагенту. И здесь начинающие разработчики получают первый сюрприз: перетащили в выбранные поля всё подряд, а в отчете только колонка «Контрагент».
Причина в том, как СКД строит итоговую запись. На уровне группировки существуют только:
- поля самой группировки;
- ресурсы — поля с агрегатной функцией на вкладке «Ресурсы».
У поля «Номенклатура» на уровне контрагента нет одного значения, поэтому платформа его не выводит. Решения два:
- Объявить числовые поля ресурсами (
Сумма(Количество),Сумма(Сумма)), тогда они появятся в итогах. - Добавить внутрь группировки подчиненную группировку детальных записей или группировку по номенклатуре — тогда неагрегируемые поля появятся на нижнем уровне.
Правило, которое экономит часы отладки: в итоговой строке живут только поля группировки и ресурсы. Всё остальное — уровнем ниже.
Иерархическая группировка
Для полей ссылочного типа на иерархический справочник или план видов характеристик у поля группировки есть свойство «Тип»:
- Элементы — обычная группировка, иерархия игнорируется;
- Иерархия — итоги по каждому элементу плюс итоги по всем папкам-родителям;
- Только иерархия — итоги только по папкам, без конечных элементов.

Тип «Иерархия» удобен для номенклатуры, статей движения денежных средств, подразделений. Учтите, что для каждого уровня родителя платформа добавляет итоговую строку, поэтому на глубоких справочниках отчет становится длинным. Если пользователю нужен свод по группам верхнего уровня, проще добавить в набор поле «Родитель первого уровня» и группировать по нему.
Составные и подчиненные группировки
Группировка по нескольким полям
В одну группировку можно включить несколько полей: щелкните по группировке и в списке полей добавьте второе. По смыслу это то же, что СГРУППИРОВАТЬ ПО Поле1, Поле2 в запросе: одна итоговая строка на каждую комбинацию значений. Типичный пример — группировка по полям НачалоПериода и КонецПериода, чтобы в одной строке видеть границы интервала.
Для полей типа «Дата» у поля группировки есть тип дополнения периода: если выбрать, например, «Месяц» и задать начало и конец, СКД выведет строки и за те месяцы, где данных не было. Это пригодится для графиков и сравнительных таблиц, где пропуски сбивают пользователя.
Подчиненные группировки
Группировки вкладываются друг в друга так же, как первая группировка вкладывалась в отчет. Классическая структура «Контрагент → Детальные записи» дает итоги по контрагенту и под ними расшифровку строк. Вложенность может быть любой, но каждая лишняя ступень увеличивает объем вывода, а значит, и время формирования.
Наследование настроек: что берется от родителя
Здесь кроется большинство вопросов «почему у меня не так». Каждый элемент структуры имеет собственные настройки: выбранные поля, отбор, порядок, условное оформление, другие настройки. Переключиться на них можно в нижней части окна, выбрав в дереве нужную группировку (или переключатель «Настройки» для текущего элемента).
Как это работает:
- Выбранные поля и порядок наследуются от родителя, если в списке подчиненной группировки стоит элемент «Авто». Уберете «Авто» — набор полей нужно будет задать целиком самому.
- Отбор группировки применяется к уже сгруппированным записям этого уровня — по смыслу это
ИМЕЮЩИЕ, а неГДЕ. Поэтому в отборе группировки можно ставить условия на ресурсы, например показывать только контрагентов с суммой больше нуля. - Условное оформление и прочие настройки задавайте там, где они нужны, и проверяйте результат на реальных данных: элемент «Авто» к ним не относится.
Практический прием: в детальных записях оставьте «Авто» и добавьте только недостающее поле, например код номенклатуры. Тогда изменения состава полей у родителя автоматически подтянутся вниз. Чтобы реквизиты выводились отдельными колонками, на вкладке «Другие настройки» поставьте расположение реквизитов «Отдельно».
Таблица: строки и колонки
Элемент «Таблица» разворачивает данные сразу в двух направлениях. У таблицы два измерения: «Строки» и «Колонки», и в каждое добавляются свои группировки, в том числе подчиненные. Например, в строках «Контрагент → Номенклатура», в колонках «Год → Месяц», а ресурсы (количество и сумма) выбраны на уровне отчета.

Собственные итоги в таблице
Частая задача: в общем итоге по горизонтали вывести не сумму ресурсов, а что-то свое — процент, максимум, остаток. Схема решения такая:
- На вкладке «Другие настройки» отключите горизонтальный общий итог (параметр «Расположение общих итогов по горизонтали» = «Нет»).
- Добавьте вычисляемое поле, например
Итогосо значением-константой, и сделайте по нему отдельную группировку в колонках. Она станет «своей» итоговой колонкой с заголовком. - Для этой группировки задайте собственный список выбранных полей: процент, максимум прихода и т. п. У остальных колонок список полей не меняется.
- Если ресурс в итоге должен считаться по другой формуле, на вкладке «Ресурсы» добавьте для того же поля второе выражение и в колонке «Рассчитывать по» укажите группировки, для которых оно действует.
Последний пункт часто позволяет обойтись без дополнительных группировок: если меняется только значение ресурса, а не состав колонок, достаточно «Рассчитывать по». Одно условие — данные в наборе должны быть уже свернуты по измерениям таблицы. Если на одну номенклатуру и месяц приходят две строки, функция Максимум вернет максимум по строкам, а не по месяцам.
Группировки в пользовательских настройках
Если пользователь работает с одним вариантом, но часто перестраивает структуру, дайте ему управлять группировками в режиме предприятия. В настройках варианта отметьте включение в пользовательские настройки:
- для структуры отчета целиком;
- для строк и колонок таблицы отдельно;
- для подчиненных группировок выбранного элемента.
Особенности, о которых стоит предупредить заказчика:
- пользователь может добавлять только обычные группировки — таблицу или диаграмму так не создать;
- составная группировка не создается: выбор двух полей даст две вложенные группировки, а не одну по двум полям;
- группировки пользователя добавляются к тем, что заданы в варианте. Если нужна полная свобода, оставьте структуру варианта пустой.
Подробнее о том, как выносить в форму отбор и параметры, я писал в статье про параметры СКД 1С.
Программное создание группировок
Когда отчет строится из кода (универсальные выгрузки, отчеты по метаданным, настройки по шаблону), группировки добавляются в НастройкиКомпоновкиДанных. Ниже — процедура, которую я использую как основу: она добавляет группировку по полю с нужным типом иерархии и подчиненные детальные записи.
// Добавляет в структуру настроек группировку по полю и, при необходимости, детальные записи.
//
// Параметры:
// Родитель - НастройкиКомпоновкиДанных, ГруппировкаКомпоновкиДанных - куда добавить группировку.
// ИмяПоля - Строка - путь к полю, например "Номенклатура".
// ТипГруппировки - ТипГруппировкиКомпоновкиДанных - Элементы, Иерархия или ТолькоИерархия.
// ДобавитьДетальные - Булево - добавить вложенную группировку детальных записей.
//
// Возвращаемое значение:
// ГруппировкаКомпоновкиДанных - созданная группировка.
//
Функция ДобавитьГруппировкуСКД(Родитель, ИмяПоля, ТипГруппировки = Неопределено,
ДобавитьДетальные = Ложь) Экспорт
Группировка = Родитель.Структура.Добавить(Тип("ГруппировкаКомпоновкиДанных"));
ПолеГруппировки = Группировка.ПоляГруппировки.Элементы.Добавить(Тип("ПолеГруппировкиКомпоновкиДанных"));
ПолеГруппировки.Использование = Истина;
ПолеГруппировки.Поле = Новый ПолеКомпоновкиДанных(ИмяПоля);
ПолеГруппировки.ТипГруппировки = ?(ТипГруппировки = Неопределено,
ТипГруппировкиКомпоновкиДанных.Элементы, ТипГруппировки);
// Без авто-полей группировка не выведет ни полей, ни сортировки.
Группировка.Выбор.Элементы.Добавить(Тип("АвтоВыбранноеПолеКомпоновкиДанных"));
Группировка.Порядок.Элементы.Добавить(Тип("АвтоЭлементПорядкаКомпоновкиДанных"));
Если ДобавитьДетальные Тогда
// Группировка без полей группировки — это детальные записи.
Детальные = Группировка.Структура.Добавить(Тип("ГруппировкаКомпоновкиДанных"));
Детальные.Выбор.Элементы.Добавить(Тип("АвтоВыбранноеПолеКомпоновкиДанных"));
Детальные.Порядок.Элементы.Добавить(Тип("АвтоЭлементПорядкаКомпоновкиДанных"));
КонецЕсли;
Возврат Группировка;
КонецФункцииПример использования: номенклатура с иерархией и расшифровкой, без горизонтальных общих итогов.
Настройки = КомпоновщикНастроек.ПолучитьНастройки();
Настройки.Структура.Очистить();
ДобавитьГруппировкуСКД(Настройки, "Номенклатура",
ТипГруппировкиКомпоновкиДанных.Иерархия, Истина);
Настройки.ПараметрыВывода.УстановитьЗначениеПараметра("ГоризонтальноеРасположениеОбщихИтогов",
РасположениеИтоговКомпоновкиДанных.Нет);
КомпоновщикНастроек.ЗагрузитьНастройки(Настройки);Для таблицы порядок тот же, только элементом структуры будет ТаблицаКомпоновкиДанных, а группировки добавляются в ее коллекции Строки и Колонки:
Таблица = Настройки.Структура.Добавить(Тип("ТаблицаКомпоновкиДанных"));
ГруппировкаСтрок = Таблица.Строки.Добавить();
ПолеСтроки = ГруппировкаСтрок.ПоляГруппировки.Элементы.Добавить(Тип("ПолеГруппировкиКомпоновкиДанных"));
ПолеСтроки.Использование = Истина;
ПолеСтроки.Поле = Новый ПолеКомпоновкиДанных("Контрагент");
ГруппировкаСтрок.Выбор.Элементы.Добавить(Тип("АвтоВыбранноеПолеКомпоновкиДанных"));
ГруппировкаКолонок = Таблица.Колонки.Добавить();
ПолеКолонки = ГруппировкаКолонок.ПоляГруппировки.Элементы.Добавить(Тип("ПолеГруппировкиКомпоновкиДанных"));
ПолеКолонки.Использование = Истина;
ПолеКолонки.Поле = Новый ПолеКомпоновкиДанных("Период");
ГруппировкаКолонок.Выбор.Элементы.Добавить(Тип("АвтоВыбранноеПолеКомпоновкиДанных"));Типичные ошибки
- Поля пропали из итогов. Поле не является ни полем группировки, ни ресурсом. Добавьте ресурс или подчиненную группировку.
- Программная группировка пустая. Забыли
АвтоВыбранноеПолеКомпоновкиДанныхвВыбор. - Задвоение сумм. Ресурс объявлен как
Суммау поля, которое в наборе повторяется из-за соединения с табличной частью. Исправляйте запрос, а не группировку. - Неверный максимум или среднее в итоге. Данные в наборе не свернуты по измерениям таблицы.
- Отбор «не работает». Условие на ресурс поставлено в отбор отчета, а не группировки, или наоборот — условие на реквизит поставлено в группировку и отсекает уже итоговые строки.
- Отчет формируется минутами. Много уровней иерархии и детальные записи на сотнях тысяч строк. Иногда правильнее дать пользователю расшифровку по клику, чем выводить всё сразу.
Если отчеты на СКД нужны под ваш учет или существующие тормозят, их разработку и доработку я веду в рамках услуги отчеты на СКД; для сквозной аналитики по нескольким базам лучше подходит BI-аналитика для 1С.
Итог
- Группировки в СКД 1С определяют структуру отчета; без полей — это детальные записи.
- В итоговую строку попадают только поля группировки и ресурсы, остальное выводится уровнем ниже.
- Поля и порядок наследуются через элемент «Авто», отбор группировки работает как
ИМЕЮЩИЕ. - Собственные итоги в таблице делаются отдельной группировкой по вычисляемому полю или через «Рассчитывать по».
- Из кода группировки добавляются в
Настройки.Структура, обязательно с авто-полями вВыбориПорядок.




