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

В этой статье разберем 5 способов группировки — от простых настроек в конструкторе отчетов до сложных запросов в СКД (Система Компоновки Данных). Особое внимание уделим типичным ошибкам, которые приводят к дублированию строк или потере данных. Все примеры актуальны для последних версий платформы 1С:Предприятие 8.3, но majority методов работают и в более ранних редакциях.

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

📊 Как часто вы настраиваете отчеты в 1С?
Ежедневно
Несколько раз в неделю
Редко, по необходимости
Никогда не настраивал сам

1. Группировка в конструкторе отчетов (для пользователей)

Самый простой способ сгруппировать строки — использовать встроенный конструктор отчетов. Он доступен в большинстве типовых конфигураций (например, 1С:Бухгалтерия, 1С:Управление торговлей) и не требует знания языка запросов.

Чтобы сгруппировать данные:

  1. Откройте нужный отчет (например, Оборотно-сальдовая ведомость или Анализ продаж).
  2. Нажмите кнопку Настройки (обычно в верхнем меню или на панели инструментов).
  3. Перейдите на вкладку Группировки.
  4. Добавьте новое поле для группировки (например, Контрагент, Номенклатурная группа или Месяц).
  5. Настройте порядок группировки перетаскиванием полей вверх/вниз.

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

  • 📌 Плюсы метода: не требует программирования, изменения сохраняются для повторного использования.
  • ⚠️ Минусы: ограниченная функциональность (нельзя задать сложные условия группировки).

Сохраните текущие настройки отчета (на случай ошибки)|Проверьте, что все нужные поля добавлены в отчет|Убедитесь, что данные отфильтрованы по нужному периоду|Сверьте права доступа (некоторые группировки могут быть заблокированы)

-->

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

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

Чтобы сгруппировать строки в СКД:

  1. Откройте отчет, созданный на основе СКД (например, Универсальный отчет или Анализ субконто).
  2. Перейдите в Настройки → Группировки.
  3. Добавьте новое поле группировки (например, Организация.Наименование).
  4. Настройте иерархию группировок — поля, добавленные выше, будут родительскими для нижних.
  5. При необходимости задайте условия отбора (например, группировать только активные контрагенты).

В СКД можно создавать вложенные группировки до 5 уровней. Например:

  • 1 уровень: Год
  • 2 уровень: Квартал
  • 3 уровень: Контрагент
  • 4 уровень: Номенклатурная группа
Как убрать лишние группировки в СКД?

Если в отчете появились ненужные группировки (например, по пустым значениям), откройте настройки СКД, найдите вкладку Другие настройки и установите флаг Игнорировать пустые группы. Также проверьте, не добавлены ли лишние поля в Поля и сортировки.

В СКД можно группировать данные не только по полям базы, но и по вычисляемым выражениям. Например, создать группу "Крупные сделки" для строк, где сумма превышает 100 000 рублей.

3. Группировка в запросах (для программистов)

Если вам нужна максимальная гибкость, используйте язык запросов 1С. Это позволит группировать данные с учетом сложных условий, агрегировать значения (сумма, среднее, количество) и даже создавать динамические группировки на лету.

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

ВЫБРАТЬ

Контрагент.Наименование КАК Контрагент,

СУММА(Документ.Сумма) КАК ИтогоСумма

ИЗ

Документ.РеализацияТоваровУслуг КАК Документ

ГДЕ

Документ.Дата МЕЖДУ &НачалоПериода И &КонецПериода

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

Контрагент.Наименование

Ключевые моменты:

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

Пример сложной группировки с условием:

ВЫБРАТЬ

ВЫРАЗИТЬ(Номенклатура.Родитель КАК Справочник.Номенклатура) КАК ГруппаНоменклатуры,

СУММА(Документ.Количество) КАК ИтогоКоличество

ИЗ

Документ.ПоступлениеТоваров КАК Документ

ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Номенклатура КАК Номенклатура

ПО Документ.Номенклатура = Номенклатура.Ссылка

ГДЕ

Документ.Дата МЕЖДУ &НачалоПериода И &КонецПериода

И Номенклатура.ЭтоГруппа = ИСТИНА

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

Номенклатура.Родитель

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

4. Динамическая группировка по условию

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

  • "Крупные клиенты" (сумма > 500 000 руб.)
  • "Средние клиенты" (100 000–500 000 руб.)
  • "Мелкие клиенты" (< 100 000 руб.)

Это можно реализовать двумя способами:

  1. Через вычисляемое поле в СКД:
    1. В настройках отчета добавьте вычисляемое поле с формулой:
      ВЫБОР
      

      КОГДА СУММА(СуммаДокумента) > 500000 ТОГДА "Крупные клиенты"

      КОГДА СУММА(СуммаДокумента) > 100000 ТОГДА "Средние клиенты"

      ИНАЧЕ "Мелкие клиенты"

      КОНЕЦ

    2. Затем сгруппируйте отчет по этому полю.
  2. Через запрос с конструкцией ВЫБОР КОГДА:
    ВЫБРАТЬ
    

    ВЫБОР

    КОГДА СУММА(Продажи.Сумма) > 500000 ТОГДА "Крупные клиенты"

    КОГДА СУММА(Продажи.Сумма) > 100000 ТОГДА "Средние клиенты"

    ИНАЧЕ "Мелкие клиенты"

    КОНЕЦ КАК ГруппаКлиентов,

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

    ИЗ

    Документ.РеализацияТоваровУслуг КАК Продажи

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

    ВЫБОР

    КОГДА СУММА(Продажи.Сумма) > 500000 ТОГДА "Крупные клиенты"

    КОГДА СУММА(Продажи.Сумма) > 100000 ТОГДА "Средние клиенты"

    ИНАЧЕ "Мелкие клиенты"

    КОНЕЦ

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

💡

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

5. Группировка по периодам (день, неделя, месяц, квартал)

Одна из самых распространенных задач — группировка данных по времени. В 1С есть несколько способов это сделать:

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

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

ВЫБРАТЬ

НАЧАЛОПЕРИОДА(Документ.Дата, НЕДЕЛЯ) КАК Неделя,

СУММА(Документ.Сумма) КАК ИтогоСумма

ИЗ

Документ.РеализацияТоваровУслуг КАК Документ

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

НАЧАЛОПЕРИОДА(Документ.Дата, НЕДЕЛЯ)

Для группировки по произвольным периодам (например, "первая половина месяца" / "вторая половина месяца") используйте конструкцию ВЫБОР КОГДА:

ВЫБРАТЬ

ВЫБОР

КОГДА ДЕНЬ(Документ.Дата) <= 15 ТОГДА "Первая половина месяца"

ИНАЧЕ "Вторая половина месяца"

КОНЕЦ КАК ПоловинаМесяца,

СУММА(Документ.Сумма) КАК ИтогоСумма

ИЗ

Документ.РеализацияТоваровУслуг КАК Документ

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

ВЫБОР

КОГДА ДЕНЬ(Документ.Дата) <= 15 ТОГДА "Первая половина месяца"

ИНАЧЕ "Вторая половина месяца"

КОНЕЦ

⚠️ Внимание: При группировке по нестандартным периодам (например, "декады") учитывайте, что в разных месяцах количество дней различается. Используйте функции НАЧАЛОПЕРИОДА и ДЕНЬ для точных расчетов.

6. Типичные ошибки и как их избежать

При группировке строк в 1С пользователи часто сталкиваются с следующими проблемами:

  • 🔴 Дублирование строк: возникает, если в группировку попадает поле с повторяющимися значениями (например, Номенклатура.Наименование вместо Номенклатура.Ссылка). Решение: группируйтесь по уникальным идентификаторам (ссылкам).
  • 🔴 Потеря данных: если в запросе не указаны все необходимые поля в ВЫБРАТЬ или СГРУППИРОВАТЬ ПО, часть данных может "схлопнуться". Решение: проверяйте список полей перед выполнением запроса.
  • 🔴 Медленная работа отчета: группировка по неиндексированным полям или слишком большому количеству уровней замедляет выполнение. Решение: используйте индексы или предварительные отборы.
  • 🔴 Неправильные итоги: если в отчете есть вложенные группировки, итоги могут считаться некорректно. Решение: настройте иерархию итогов в СКД.

Чтобы избежать ошибок, следуйте чек-листу:

Убедитесь, что все поля для группировки добавлены в отчет|Проверьте уникальность группировочных полей (нет дублей)|Настройте правильную иерархию группировок (родительские → дочерние)|Протестируйте отчет на небольшом объеме данных

-->

Если отчет все равно работает неправильно:

  1. Проверьте логическую целостность данных (нет ли пустых значений в группировочных полях).
  2. Используйте ОБЪЕДИНИТЬ в запросе, если данные хранятся в разных таблицах.
  3. Для сложных отчетов разбейте задачу на несколько запросов с временными таблицами.
💡

Всегда тестируйте группировки на копии базы или на ограниченном периоде данных. Это поможет избежать ошибок в рабочей системе.

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

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

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

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

Контрагент.Наименование,

Номенклатура.Группа

Почему в отчете появляются пустые группы?

Это происходит, если в данных есть пустые значения в полях, по которым идет группировка. Чтобы убрать их:

  1. В конструкторе отчетов установите флаг Игнорировать пустые группы.
  2. В запросе добавьте условие ГДЕ НЕ Контрагент.Наименование ЕСТЬ NULL.

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

Нет, группировка работает только по данным (полям базы, вычисляемым выражениям). Однако вы можете:

  • Добавить в отчет условное оформление (например, раскрасить строки по группам).
  • Создать вычисляемое поле с категорией (например, "Красная группа", "Синяя группа") и сгруппировать по нему.

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

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

Что делать, если группировка работает слишком долго?

Оптимизируйте запрос:

  • Используйте индексированные поля для группировки.
  • Добавьте предварительный отбор (например, по дате или организации).
  • Разбейте сложный запрос на несколько простых с временными таблицами.
  • Проверьте, не грузятся ли лишние данные (например, все реквизиты документов вместо нужных полей).