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

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

Что такое группировка в 1С и как её использовать

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

Группировка в 1С — это способ объединить однотипные строки данных в блоки по общему признаку и посчитать по каждому блоку итоги: сумму, количество, среднее, максимум. Без группировок отчёт по продажам был бы плоским списком из тысяч строк; с группировкой та же информация превращается в структуру «менеджер → контрагент → документ» с итогами на каждом уровне.

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

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

Где в 1С встречаются группировки

Чтобы не путаться, полезно сразу разделить четыре основных контекста, в которых пользователь сталкивается с группировками. Первый и самый частый — отчёты на системе компоновки данных (СКД): практически все типовые отчёты в «1С:Бухгалтерии», «Управлении торговлей» и ERP построены именно на СКД, и их структура состоит из вложенных группировок.

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

Где какой механизм применять

Группировка в настройках отчёта (СКД)

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

СГРУППИРОВАТЬ ПО в запросе

Для разработчиков и работы в консоли запросов; даёт полный контроль над агрегацией. Требует знания языка запросов.

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

Для навигации в журналах и списках; не считает итоги, только упорядочивает отображение.

Папки (группы) справочника

Для постоянной классификации элементов, например номенклатуры; влияет на хранение, а не только на отображение.

Как работает группировка в отчётах на СКД

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

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

У группировки есть важные вспомогательные свойства: отбор внутри группы (например, показать только контрагентов с суммой больше заданной), сортировка (по убыванию суммы продаж), ограничение количества выводимых строк. Эти настройки задаются отдельно для каждого уровня, что позволяет строить отчёты вида «топ-10 клиентов по каждому менеджеру».

Как настроить группировку в типовом отчёте без программирования

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

Порядок настройки группировки в отчёте
  1. 1
    Откройте отчёт и перейдите в настройки (кнопка «Настройки» или «Ещё → Изменить вариант»).
  2. 2
    На вкладке структуры добавьте новую группировку и выберите поле, по которому нужно объединять строки, например «Контрагент».
  3. 3
    При необходимости добавьте вложенную группировку внутрь первой — например, «Номенклатура» внутрь «Контрагент».
  4. 4
    На вкладке «Поля» отметьте ресурсы, которые нужно видеть: сумму, количество.
  5. 5
    Задайте сортировку и отбор для уровня группировки, если нужны топ-N или фильтр по итогу.
  6. 6
    Сформируйте отчёт и проверьте: строки объединены по признаку, по каждой группе выведен итог, общий итог сходится с исходными данными.

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

Группировка в языке запросов: СГРУППИРОВАТЬ ПО

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

Отдельно стоит конструкция ИТОГИ ПО: она не сворачивает строки, а добавляет к выборке итоговые записи по указанным измерениям. Результат такого запроса обходится иерархически. Именно этот механизм лежит в основе многих программно формируемых отчётов и обработок.

bsl
ВЫБРАТЬ
	Продажи.Контрагент КАК Контрагент,
	СУММА(Продажи.СуммаОборот) КАК СуммаПродаж
ИЗ
	РегистрНакопления.Продажи.Обороты(&НачалоПериода, &КонецПериода, , ) КАК Продажи
СГРУППИРОВАТЬ ПО
	Продажи.Контрагент
УПОРЯДОЧИТЬ ПО
	СуммаПродаж УБЫВ

При работе с итогами в запросах по регистрам помните про виртуальные таблицы оборотов и остатков: в большинстве случаев группировать данные на уровне запроса к ним эффективнее, чем выбирать детальные движения и сворачивать их вручную — СУБД выполнит агрегацию быстрее.

Группировка в списках и справочниках

В журналах документов и списках на управляемых формах доступна команда группировки по реквизиту (обычно через меню «Ещё» или настройку списка). Она визуально объединяет строки с одинаковым значением реквизита под общим заголовком, но не считает итоги — это инструмент навигации, а не аналитики. Для анализа по списку лучше использовать отчёт или универсальный отчёт по регистру.

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

Типичные ошибки и ограничения

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

Ещё одно ограничение касается производительности. Отчёт с большим числом вложенных группировок и детальными записями на нижнем уровне по крупной базе может формироваться долго. Если отчёт «висит», сократите период, уберите лишние уровни детализации, отключите вывод детальных записей там, где достаточно итогов по группе.

Как проверить, что группировка настроена правильно

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

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

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

Совпадает с контрольной цифрой: оборотом по счёту, суммой документов за период

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

Итог отличается — вероятны лишние соединения, отборы или потерянные строки

Сумма по группам
Норма

Сумма итогов всех групп верхнего уровня равна общему итогу

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

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

Количество строк в группе
Норма

При раскрытии группы детальные строки соответствуют ожидаемым документам

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

Строки дублируются — признак некорректного соединения в запросе или наборе данных

Группа с пустым значением
Норма

Отсутствует или её наличие объяснимо (незаполненный реквизит у части объектов)

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

Большая группа «пустышка» — поле не заполняется в данных, группировка по нему бессмысленна

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

Перед тем как строить сложную многоуровневую структуру, сформируйте отчёт с одной группировкой и сверьте итог. Затем добавляйте уровни по одному, проверяя, что общий итог не меняется. Так ошибка локализуется сразу на том уровне, где она появилась, а не ищется по всей структуре.
ПЗ
Практическое замечание
Итог

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

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

Частые вопросы о группировках в 1С

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

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

Можно ли сгруппировать отчёт по полю, которого нет в настройках?

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

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

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

Как показать в отчёте только топ-10 строк в каждой группе?

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

Что выбрать: ИТОГИ ПО или СГРУППИРОВАТЬ ПО в запросе?

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

Влияет ли изменение группировок в отчёте на данные в базе?

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