Группировки в 1С 8.3: от строк отчёта до итогов в запросе

· 9 мин

Содержание

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

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

Как устроена иерархия данных в отчёте

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

Пример структуры отчёта о продажах:

Отчет
└── Контрагент
    └── Номенклатура
        └── Детальные записи (документ, дата, количество, сумма)

На выходе получается такая таблица:

УровеньЧто в строкеСумма
КонтрагентООО «Ромашка»150 000
НоменклатураБумага А490 000
Детальная записьРеализация № 1240 000
Детальная записьРеализация № 1750 000
НоменклатураКартридж60 000
Общий итог150 000

Итог группы равен сумме её подчинённых строк: 40 000 + 50 000 = 90 000 по бумаге, 90 000 + 60 000 = 150 000 по контрагенту.

Три вида уровней, которые стоит различать:

  • 📁 Группировка по полю — строки с одинаковым значением поля сворачиваются в одну.
  • 📄 Детальные записи — группировка без полей. Она выводит исходные строки набора данных без свёртки.
  • 🌳 Иерархическая группировка — для справочников с группами (номенклатура, контрагенты, статьи затрат) выводит ещё и папки справочника с промежуточными итогами.

Типы группировки по иерархии

У каждого поля группировки в СКД есть тип. От него зависит, будут ли видны папки справочника.

ТипЧто выводитКогда нужен
ЭлементыТолько элементы, без папокПлоский список товаров или клиентов
ИерархияПапки с итогами и элементы внутриПродажи по товарным группам с расшифровкой
Только иерархияТолько папки, без элементовСводка по группам, когда элементов тысячи

Иерархия работает, только если справочник иерархический. Для неиерархического справочника тип «Иерархия» ничего не добавит — выведутся те же элементы.

Настройка группировок в готовом отчёте и в конструкторе

Типовой отчёт в режиме 1С:Предприятие

Стандартные отчёты типовых конфигураций (БП 3.0, ЗУП 3.1, УТ 11) построены на СКД, поэтому порядок одинаковый:

  1. Откройте отчёт и нажмите кнопку Настройки.
  2. Переключите вид настроек на расширенный — без этого вкладка структуры не показывается.
  3. На вкладке структуры выделите узел, под которым нужен новый уровень, и добавьте группировку.
  4. Выберите поле: например, «Контрагент» или «Период, месяц».
  5. Закройте настройки и сформируйте отчёт.

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

Изменённые настройки сохраняются через меню Ещё → Сохранить вариант отчета. Иначе при следующем открытии структура вернётся к исходной.

Свой отчёт в конструкторе схемы компоновки

В Конфигураторе откройте схему компоновки данных отчёта и перейдите на вкладку Настройки:

  1. Щёлкните правой кнопкой по узлу «Отчет» и выберите добавление новой группировки.
  2. В окне выбора полей укажите поле и тип: «Элементы», «Иерархия» или «Только иерархия».
  3. Чтобы вывести исходные строки, добавьте в самый низ группировку без полей — это и есть «Детальные записи».
  4. На закладке Выбранные поля настроек отметьте поля для вывода. Если у группировки список пуст, она берёт поля из родителя — в списке это видно как «Авто».

Группировку по дате можно разбить по периодам. Добавьте поле даты, а в его свойствах выберите тип дополнения периодов (день, месяц, квартал). Тогда отчёт выведет даже месяцы без оборотов — с пустыми суммами, чтобы в графике не было «дыр».

Таблица вместо дерева

Кроме обычной группировки в структуру можно добавить таблицу. У неё есть строки и колонки:

  • в строки ставят, например, «Номенклатура»;
  • в колонки — «Период, месяц»;
  • на пересечении — ресурс «Сумма».

Получается сводная таблица, как в Excel, только формируется она сразу из данных базы.

Итоги и вычисления по группам

Ресурсы — основа итогов

Итог в группе считается только по ресурсам. Ресурсы задаются на вкладке Ресурсы конструктора схемы. Для каждого указывают выражение агрегатной функции:

ФункцияЧто считаетПример
Сумма(Поле)Сумму значенийСумма продаж
Количество(Поле)Число строкСколько документов
Количество(Различные Поле)Число уникальных значенийСколько разных клиентов
Максимум(Поле) / Минимум(Поле)Крайние значенияМаксимальная цена
Среднее(Поле)Среднее арифметическоеСредний чек

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

Вычисляемые показатели

Отношения считайте выражением ресурса, а не суммой готовых процентов. Средняя цена в группе — это Сумма(Сумма) / Сумма(Количество), а не Среднее(Цена).

Пример. В группе две строки: 10 шт. по 100 ₽ (1 000 ₽) и 1 шт. по 1 000 ₽ (1 000 ₽).

  • Среднее(Цена) = (100 + 1 000) / 2 = 550 ₽.
  • Сумма(Сумма) / Сумма(Количество) = 2 000 / 11 ≈ 181,82 ₽.

Правильная средняя цена — вторая. Чтобы не получить деление на ноль в пустой группе, оберните выражение:

ВЫБОР
    КОГДА Сумма(Количество) = 0 ТОГДА 0
    ИНАЧЕ Сумма(Сумма) / Сумма(Количество)
КОНЕЦ

Где выводятся итоги

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

Оформление групп и условное выделение

Строки разного уровня легче читать, когда они выглядят по-разному. Для этого в СКД есть два инструмента.

Оформление группировки. У каждой группировки есть свои настройки: её можно выделить из общей структуры и задать ей условное оформление и параметры вывода отдельно от остального отчёта.

Условное оформление. На вкладке Условное оформление настроек добавьте правило:

  1. В поле «Оформление» укажите, что менять: цвет текста, фон, шрифт, формат числа.
  2. В «Условии» задайте отбор, например Сумма Меньше 0.
  3. В «Оформляемых полях» выберите, какие колонки красить. Если оставить пусто — изменится вся строка.
  4. В «Области использования» отметьте, где правило действует: в группировке, в иерархической группировке, в общем итоге, в заголовке полей.

Практичные правила оформления:

  • 🔴 отрицательные остатки — красным текстом;
  • 🟡 строки-папки иерархии — жирным шрифтом с серым фоном;
  • 🔢 суммы — формат с разделителем разрядов и двумя знаками после запятой;
  • ⚪ нулевые суммы — пустой ячейкой вместо «0,00» (параметр «ЧН=» в формате).

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

Группировка в запросе и в СКД: в чём разница

Группировку можно сделать ещё до СКД — в тексте запроса. Делают это двумя способами, и они решают разные задачи.

СГРУППИРОВАТЬ ПО — свёртка строк

Конструкция сворачивает строки и оставляет одну на каждое сочетание полей. Все поля в ВЫБРАТЬ, кроме агрегатных функций, должны стоять в СГРУППИРОВАТЬ ПО.

ВЫБРАТЬ
    Продажи.Контрагент,
    СУММА(Продажи.Сумма) КАК Сумма
ИЗ
    РегистрНакопления.Продажи КАК Продажи
СГРУППИРОВАТЬ ПО
    Продажи.Контрагент
ИМЕЮЩИЕ
    СУММА(Продажи.Сумма) > 100000

ИМЕЮЩИЕ — это отбор уже по итогу группы. Пример выше оставит только контрагентов с продажами больше 100 000 ₽. Условие ГДЕ тут не подойдёт: оно срабатывает до группировки и проверяет каждую строку.

ИТОГИ ПО — дерево с промежуточными итогами

ИТОГИ не сворачивает данные, а добавляет над детальными строками строки итогов:

ВЫБРАТЬ
    Продажи.Номенклатура,
    Продажи.Регистратор,
    Продажи.Сумма
ИЗ
    РегистрНакопления.Продажи КАК Продажи
ИТОГИ
    СУММА(Сумма)
ПО
    ОБЩИЕ,
    Номенклатура ИЕРАРХИЯ

ОБЩИЕ даёт строку общего итога, ИЕРАРХИЯ — итоги по папкам справочника. Есть и ТОЛЬКО ИЕРАРХИЯ, она выводит только папки. Для дат есть дополнение ПЕРИОДАМИ(МЕСЯЦ, &Начало, &Конец) — оно заполняет пустые месяцы.

Результат с итогами обходят по группировкам:

Выборка = Результат.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
Пока Выборка.Следующий() Цикл
    Сообщить(СтрШаблон("%1: %2", Выборка.Номенклатура, Формат(Выборка.Сумма, "ЧДЦ=2")));
    ВыборкаДетали = Выборка.Выбрать();
    Пока ВыборкаДетали.Следующий() Цикл
        // строки следующего уровня
    КонецЦикла;
КонецЦикла;

Что выбрать

ЗадачаГде группировать
Отчёт, который пользователь будет перестраиватьВ настройках СКД
Уменьшить объём данных до выводаСГРУППИРОВАТЬ ПО в запросе
Отбор по сумме группыИМЕЮЩИЕ в запросе или отбор по ресурсу в СКД
Обработка или печатная форма с промежуточными итогамиИТОГИ ПО в запросе

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

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

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

Частые ошибки при группировке и как их исправить

Диагностика: выберите симптом

Ещё две ошибки, которые встречаются при перестройке типовых отчётов:

  • ⚠️ Остатки в группировке по документу. Для регистра остатков группировка по регистратору показывает обороты, а не остаток на момент документа. Остатки корректны на уровне аналитики (склад, номенклатура) и периода.
  • ⚠️ Количество(Различные) по группам не складывается. Если у первого менеджера 10 уникальных клиентов, а у второго 8, в общем итоге может быть 15 — часть клиентов общая. Это правильное поведение, а не сбой.

Частые вопросы

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