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