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

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

Как добавить группировку в 1С: полное руководство

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

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

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

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

Где именно нужна группировка: выбор инструмента

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

Важное различие: группировка в запросе (ИТОГИ ПО) формирует иерархический результат с итоговыми строками, а группировка в СКД — это визуальная структура отчета, которая опирается на набор данных. Часто путают эти уровни: запрос может не содержать итогов вообще, а группировку и подсчет сумм выполнит сама компоновка.

Маршрут решения

Как выбрать действие

Отчет типовой, нужно только изменить представлениеИспользуйте кнопку «Настройки» в режиме 1С:Предприятие, вкладка «Группировка»
Пишете собственный отчет или обработкуСоздайте схему компоновки данных и добавьте группировку на закладке «Настройки»
Нужен иерархический результат в коде для обходаИспользуйте секцию ИТОГИ ПО в запросе и обход по группировке
Нужно сгруппировать строки в динамическом спискеВключите группировку через «Еще» → «Настроить список» → «Группировка»

Группировка в типовом отчете без программирования

Большинство отчетов в типовых конфигурациях (БП, УТ, ERP, ЗУП) построены на СКД, поэтому порядок действий одинаков. Откройте отчет, нажмите кнопку «Настройки» (или «Показать настройки»). Если открылся простой вид настроек — переключитесь в расширенный режим, там доступны все вкладки.

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

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

Порядок действий в типовом отчете
  1. 1
    Откройте отчет и нажмите «Настройки»
  2. 2
    Переключитесь в расширенный режим настроек
  3. 3
    На вкладке «Группировка» нажмите «Добавить» и выберите поле
  4. 4
    Расставьте группировки в нужном порядке вложенности
  5. 5
    Проверьте тип группировки: элементы или иерархия
  6. 6
    Нажмите «Закрыть и сформировать» и проверьте итоги

Как сохранить настройку для повторного использования

Чтобы не настраивать отчет каждый раз, сохраните вариант: в расширенных настройках есть команда сохранения варианта отчета (обычно кнопка со стрелкой рядом с «Сформировать» или пункт «Сохранить вариант»). Задайте понятное имя, например «Продажи по складам и номенклатуре». Вариант появится в списке и будет доступен другим пользователям, если разрешить это при сохранении.

Группировка в запросе: конструктор и секция ИТОГИ ПО

Когда данных из готового отчета недостаточно, используется запрос. Откройте консоль запросов или модуль, вызовите конструктор запроса. На закладке «Таблицы и поля» выберите источник и поля, затем перейдите на закладку «Итоги».

На закладке «Итоги» в левой части укажите группировочные поля — те, по которым сворачиваются данные. В правой части выберите суммируемые поля и агрегатные функции: Сумма, Количество, Среднее, Максимум, Минимум. Конструктор сформирует текст с секцией ИТОГИ ПО.

Пример текста запроса с группировкой по контрагенту:

ВЫБРАТЬ

Продажи.Контрагент КАК Контрагент,

СУММА(Продажи.СуммаОборот) КАК Сумма

ИЗ

РегистрНакопления.Продажи.Обороты КАК Продажи

СГРУППИРОВАТЬ ПО

Продажи.Контрагент

ИТОГИ

СУММА(Сумма)

ПО

ОБЩИЕ

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

bsl
Выборка = Запрос.Выполнить().Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
Пока Выборка.Следующий() Цикл
	// обработка итоговой строки группировки
КонецЦикла;

Группировка в схеме компоновки данных (СКД)

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

Внутри группировки можно добавить вложенную группировку или таблицу. У каждой группировки есть собственные вкладки: выбранные поля, отбор, сортировка, условное оформление. Это позволяет, например, показывать разные наборы колонок на разных уровнях иерархии.

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

Автополя и типовые проблемы

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

Типичные ошибки при работе с СКД
01
Ресурс не добавлен на закладке «Ресурсы» — группировка выводится без итоговых сумм
02
Поле группировки недоступно, потому что не выбрано в запросе набора данных — добавьте его в текст запроса
03
Удалено автополе у группировки — пропадают итоги и представления полей
04
Отбор наложен на уровне всего отчета вместо группировки — фильтруются лишние данные на вложенных уровнях

Группировка в динамических списках и табличных частях

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

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

В табличных частях документов группировка как таковая отсутствует, но есть смежные механизмы: свертка табличной части программно (метод Свернуть() таблицы значений), сортировка строк и подбор с итогами. Если нужно свернуть строки товаров по номенклатуре с суммированием количества — это делается кодом через Свернуть("Номенклатура", "Количество,Сумма").

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

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

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

Контрольные точки

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

Общий итог отчета
Норма

Равен сумме итогов групп верхнего уровня

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

Итог больше или меньше суммы групп — проверяйте отборы и соединения

Строка с пустым значением группировки
Норма

Отсутствует или осознанно содержит записи без значения

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

В ней большая сумма — данные не заполнены или теряются при соединении

Вложенность группировок
Норма

Каждый уровень раскрывается и показывает детализацию

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

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

Скорость формирования
Норма

Отчет формируется за приемлемое время

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

Минутное ожидание — лишние уровни иерархии или группировка по полю с высокой детализацией

Ограничения и частые ошибки

Группировка по полю, которого нет в наборе данных, невозможна — сначала добавьте поле в запрос. В пользовательском режиме список доступных полей ограничен настройками варианта отчета; если нужного поля нет, потребуется доработка схемы программистом.

Производительность — второй подводный камень. Группировка по полю с большим количеством уникальных значений (например, по документам внутри группировки по контрагентам) на больших базах формируется медленно. В таких случаях ограничьте период, добавьте отборы или уберите лишний уровень детализации.

Еще одна ошибка — путаница между группировкой и сортировкой. Сортировка только упорядочивает строки, итогов не создает. Если нужны именно итоги по признаку — используйте группировку, а не сортировку по этому полю.

Итог

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

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

Часто задаваемые вопросы

Чем группировка отличается от отбора?

Отбор ограничивает состав данных — отсекает лишние записи до вывода. Группировка не удаляет данные, а структурирует их: объединяет строки по признаку и подсчитывает итоги. Эти механизмы дополняют друг друга: сначала отбором сужают выборку, затем группировкой строят структуру отчета.

Почему в отчете появилась группа с пустым названием?

В неё попадают записи, где поле группировки не заполнено или содержит битую ссылку. Проверьте заполнение реквизита в исходных документах. Если записи появляются из-за левого соединения в запросе, добавьте проверку на NULL или пересмотрите тип соединения.

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

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

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

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

Группировка добавлена, но суммы не выводятся. Что проверить?

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

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

Используйте таблицу значений: загрузите результат запроса и вызовите метод Свернуть(), указав группировочные колонки и суммируемые. Для иерархического результата выполните запрос с ИТОГИ ПО и обойдите выборку в режиме ПоГруппировкам.