Группировки в отчётах, запросах, СКД и списках 1С 8.3: от кнопки «Настройки» до кода

· 10 мин

Содержание

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

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

Где в 1С бывает группировка и какой способ выбрать

Сначала определите, что вы хотите получить. От этого зависит, куда идти.

ЗадачаГде делаетсяКто делаетНужен Конфигуратор
Свернуть строки отчёта по контрагенту, складу, месяцуНастройки отчётаПользовательНет
Субконто и подитоги в ОСВ по счётуПоказать настройки → вкладка ГруппировкаБухгалтерНет
Новая группировка по полю, которого нет в отчётеСхема компоновки данныхРазработчикДа или расширение
Свернуть данные в запросе, посчитать суммыТекст запросаРазработчикДа
Сгруппировать строки в журнале или спискеНастройка списка или формаПользователь или разработчикТолько для «зашитой» настройки
Разложить элементы справочника по папкамСписок справочника, кнопка создания группыПользовательНет, если справочник иерархический

Если ваша задача в первых двух строках таблицы, хватит следующих трёх разделов. Запросы, СКД и код — для тех, кто дорабатывает конфигурацию.

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

Большинство отчётов в БП 3.0, ЗУП 3.1 и УТ 11 построены на системе компоновки данных (СКД). Их структуру можно менять прямо в пользовательском режиме.

Отчёт на СКД с кнопкой «Настройки»

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

Если нужного поля нет в списке выбора, нажмите Показать все поля (или раскройте ссылочное поле через плюс). Часто нужный реквизит лежит внутри: Номенклатура → Вид номенклатуры, Контрагент → Основной менеджер.

Оборотно-сальдовая ведомость и отчёты по счёту

В бухгалтерских отчётах (Отчёты → Оборотно-сальдовая ведомость, ОСВ по счёту, Анализ счёта) группировка устроена проще:

  1. Нажмите Показать настройки.
  2. Откройте вкладку Группировка.
  3. Добавьте строку: выберите счёт и поле — субконто (Контрагенты, Договоры, Номенклатура) или аналитику (Подразделение).
  4. Поставьте флажок по нужным строкам и сформируйте отчёт.

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

Многоуровневая группировка: как задать порядок уровней

Иерархия «Организация → Контрагент → Договор → Документ» — это несколько вложенных группировок. Главное правило: порядок уровней в структуре = порядок вложенности в отчёте.

Есть два способа сделать несколько уровней:

  • 🧩 Одна группировка с несколькими полями. Строка в отчёте будет одна на каждую пару «Контрагент + Договор». Итог по контрагенту отдельно не выводится.
  • 🪜 Вложенные группировки. Сначала группировка по Контрагент, внутри неё — по Договор. Каждый уровень получает свой подытог и сворачивается кнопками + / − слева.

Что выбирать:

НужноСпособ
Подытог по каждому верхнему уровнюВложенные группировки
Плоский список уникальных сочетанийОдна группировка, несколько полей
Выгрузка в Excel для сводной таблицыОдна группировка без подытогов

Тип группировки: элементы или иерархия

Для полей-справочников с папками (номенклатура, контрагенты, статьи затрат) у группировки есть тип:

  • Без иерархии (элементы) — только сами элементы, папки игнорируются.
  • Иерархия — папки справочника и вложенные в них элементы, с итогами по каждой папке.
  • Только иерархия — одни папки, без элементов. Удобно для сводки «по группам номенклатуры».

Тип меняется в свойствах поля группировки. В пользовательском режиме он доступен в расширенных настройках, в Конфигураторе — двойным щелчком по полю в группировке.

Группировка по вычисляемому полю

Бывает, что сгруппировать нужно по признаку, которого в базе нет: «Крупный / мелкий клиент», «Просрочено / в срок», квартал вместо месяца.

В пользовательском режиме

В расширенных настройках отчёта на СКД можно добавить пользовательское поле. Это вычисляемое поле, которое пользователь создаёт сам:

  1. В настройках откройте вкладку с полями (обычно там же, где выбор показателей).
  2. Добавьте пользовательское поле типа «Выбор» — оно работает как ВЫБОР КОГДА.
  3. Задайте условия: например, Сумма > 100000 → «Крупный», иначе «Мелкий».
  4. Используйте новое поле в группировке.

В схеме компоновки

Разработчик добавляет поле на вкладке Вычисляемые поля конструктора СКД. Выражение пишется на языке выражений СКД:

ВЫБОР
    КОГДА СуммаОборот >= 100000 ТОГДА "Крупный"
    КОГДА СуммаОборот >= 10000 ТОГДА "Средний"
    ИНАЧЕ "Мелкий"
КОНЕЦ

После этого поле появляется в списке доступных для группировки.

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

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

В языке запросов есть два разных механизма. Их часто путают.

КонструкцияЧто делаетРезультат
СГРУППИРОВАТЬ ПОСворачивает строки и считает агрегатыПлоская таблица, одна строка на группу
ИТОГИ ... ПОДобавляет строки итогов поверх детальныхДерево: группы + детальные записи

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

Пример: сумма продаж по контрагентам за период.

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

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

Отбор по сгруппированным суммам делают через ИМЕЮЩИЕ, а не ГДЕ:

СГРУППИРОВАТЬ ПО
    Продажи.Контрагент
ИМЕЮЩИЕ
    СУММА(Продажи.СуммаОборот) > 100000

Группировка по выражению

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

ВЫБРАТЬ
    НАЧАЛОПЕРИОДА(Док.Дата, МЕСЯЦ) КАК Месяц,
    СУММА(Док.СуммаДокумента) КАК Сумма
ИЗ
    Документ.РеализацияТоваровУслуг КАК Док
ГДЕ
    Док.Проведен
СГРУППИРОВАТЬ ПО
    НАЧАЛОПЕРИОДА(Док.Дата, МЕСЯЦ)

ИТОГИ и обход по группировкам

Если нужны и детальные строки, и подытоги, используют ИТОГИ:

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

Ключевое слово ИЕРАРХИЯ добавляет итоги по папкам справочника. Результат обходят вложенными выборками:

Результат = Запрос.Выполнить();
ВыборкаСклад = Результат.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам, "Склад");
Пока ВыборкаСклад.Следующий() Цикл
    Сообщить(Строка(ВыборкаСклад.Склад) + ": " + Формат(ВыборкаСклад.Количество, "ЧГ=0"));
    ВыборкаТовар = ВыборкаСклад.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкамСИерархией, "Номенклатура");
    Пока ВыборкаТовар.Следующий() Цикл
        Сообщить("  " + Строка(ВыборкаТовар.Номенклатура) + ": " + Формат(ВыборкаТовар.Количество, "ЧГ=0"));
    КонецЦикла;
КонецЦикла;

Конструктор запроса (правой кнопкой по тексту → Конструктор запроса...) собирает обе конструкции мышкой: вкладка Группировка — для СГРУППИРОВАТЬ ПО, вкладка Итоги — для ИТОГИ. Агрегаты он расставляет сам.

Как добавить группировку в СКД отчёта

Это основной инструмент разработчика. Схема компоновки задаёт, какие группировки доступны и какая структура выводится по умолчанию.

Пошагово в конструкторе схемы

  1. Откройте отчёт в Конфигураторе (или в расширении, если конфигурация типовая и на поддержке).
  2. Откройте основную схему компоновки данных.
  3. На вкладке Ресурсы укажите поля, по которым считаются итоги (Сумма, Количество), и функцию — обычно Сумма. Без ресурсов группировки выводят строки без подытогов.
  4. Перейдите на вкладку Настройки.
  5. В дереве структуры щёлкните правой кнопкой по корню «Отчёт» → Новая группировка.
  6. Выберите поле и тип (элементы, иерархия, только иерархия). Группировка без полей — это «Детальные записи».
  7. Для вложенного уровня щёлкните правой кнопкой уже по созданной группировке и добавьте новую внутрь.
  8. Проверьте отчёт: в Предприятии сформируйте его заново.

Таблица вместо списка

Для отчёта «товары по строкам, месяцы по колонкам» вместо группировки добавляют Новая таблица. У таблицы две ветки: строки и колонки. В каждую добавляются свои группировки. Например, строки — Номенклатура, колонки — Период с типом «Месяц».

Разрешить пользователю менять структуру

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

Не правьте схему типового отчёта напрямую в конфигурации на поддержке: доработка потеряется или помешает обновлению. Делайте копию отчёта во внешнем файле или через расширение конфигурации (доступны с платформы 8.3.6).

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

Строки в журнале документов или списке

В формах списков на управляемом интерфейсе есть настройка списка: она открывается из меню Ещё. В окне настройки несколько вкладок — отбор, сортировка, условное оформление и группировка.

  1. Откройте список, например Продажи → Реализация (акты, накладные).
  2. Откройте настройку списка через Ещё.
  3. На вкладке группировки добавьте поле — Контрагент или Организация.
  4. Нажмите Завершить редактирование.

Список покажет строки-заголовки групп, которые сворачиваются. Настройка сохраняется для текущего пользователя.

Программно в динамическом списке

Разработчик задаёт группировку в модуле формы, в ПриСозданииНаСервере:

ЭлементГруппировки = Список.Группировка.Элементы.Добавить(Тип("ПолеГруппировкиКомпоновкиДанных"));
ЭлементГруппировки.Поле = Новый ПолеКомпоновкиДанных("Контрагент");
ЭлементГруппировки.Использование = Истина;

Поле указывается так, как оно называется в запросе или основной таблице динамического списка.

Группа (папка) в справочнике

Если под «группировкой» имеется в виду папка в справочнике — например, «Канцтовары» в номенклатуре:

  1. Откройте справочник (Справочники → Номенклатура, Справочники → Контрагенты).
  2. Нажмите кнопку создания группы — с иконкой папки, рядом с Создать. Если её не видно, она есть в меню Ещё.
  3. Введите наименование и укажите родителя, если папка вложенная.
  4. Перенесите элементы: выделите их и перетащите мышью в папку или используйте команду перемещения в группу.

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

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

Где чаще всего ошибаются при группировке

  • 📅 Группировка по полю «Дата» без периода. Каждая секунда — отдельная строка. Для дат выбирайте поле Период с типом «Месяц» или «День», в запросе — НАЧАЛОПЕРИОДА.
  • 🔁 Одинаковое поле на двух уровнях. Группировка Контрагент внутри Контрагент даёт пустые подуровни. Проверьте структуру сверху вниз.
  • 🧮 Ресурс считается неправильной функцией. Остаток на дату — это не Сумма по дням. Для остатков выбирайте поля ...КонечныйОстаток по периоду, а не суммируйте ежедневные значения.
  • 📉 ГДЕ вместо ИМЕЮЩИЕ. Условие по агрегату (СУММА(...) > 0) в ГДЕ не работает .
  • 🗂 Группировка по представлению. Группировать по строке вместо ссылки опасно: два контрагента с одинаковым наименованием сольются в одну строку.

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

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