Группировки в отчётах 1С на СКД: от настройки пользователя до вычисляемых полей
Содержание
Чтобы добавить поле группировки в отчёт 1С, откройте настройки отчёта, перейдите к его структуре и вложите в нужное место новую группировку с выбранным полем. Пользователь делает это кнопкой Настройки в расширенном режиме, разработчик — на закладке Настройки схемы компоновки данных (СКД) в конфигураторе. Если нужного поля в списке нет, его сначала добавляют в запрос набора данных или создают как вычисляемое поле.
Всё ниже относится к отчётам на СКД в 1С:Предприятие 8.3 с интерфейсом «Такси»: это почти все отчёты БП 3.0, ЗУП 3.1, УТ 11 и внешние отчёты. Механизм общий для платформы, конфигурации различаются только видом формы настроек.
Как устроена группировка в компоновке данных
СКД строит отчёт по дереву структуры. Каждый узел дерева — это группировка, таблица или диаграмма. У группировки есть свои поля, отбор, порядок, выбранные поля и условное оформление.
Четыре понятия, без которых настройка превращается в перебор:
- 🧩 Поле группировки — реквизит, по одинаковым значениям которого строки сворачиваются в одну: контрагент, номенклатура, склад, период.
- 📊 Ресурс — числовое поле, которое считается на каждом уровне группировки: сумма, количество, средняя цена. Ресурсы описывают на закладке
Ресурсысхемы. - 🪜 Вложенность — группировка внутри группировки. «Контрагент → Договор → Документ» даёт три уровня итогов.
- 📄 Детальные записи — группировка без полей. Она выводит каждую строку набора данных как есть, без свёртки.
Пример: продажи за квартал. Группировка по контрагенту даёт 40 строк с суммой по каждому покупателю. Вложенная группировка по номенклатуре раскрывает каждого покупателя на товары. Детальные записи внутри покажут отдельные строки документов.
| Элемент структуры | Что выводит | Когда нужен |
|---|---|---|
| Группировка с полями | Строку на каждое уникальное значение и итог по ресурсам | Свод по контрагентам, товарам, периодам |
| Детальные записи | Все строки набора без свёртки | Расшифровка до документа |
| Таблица | Группировки строк и колонок | Кросс-отчёт «товар × месяц» |
| Диаграмма | Точки и серии | Наглядное сравнение |
Группировка в режиме пользователя, без конфигуратора
Права разработчика здесь не нужны. Хватит права на сохранение пользовательских настроек отчёта, оно есть почти во всех типовых профилях.
Отчёты на стандартной форме БСП
Так устроены универсальные отчёты в ЗУП 3.1, УТ 11 и многие отчёты БП 3.0:
- Откройте отчёт и нажмите
Настройки. - Переключите вид настроек с простого на расширенный.
- Перейдите на закладку со структурой отчёта.
- Выделите уровень, внутрь которого добавляете поле. Чтобы добавить группировку верхнего уровня, выделите корень «Отчёт».
- Добавьте новую группировку и выберите поле из дерева доступных полей. Реквизиты ссылочных полей раскрываются плюсиком: например,
Контрагент.ИННилиНоменклатура.Вид номенклатуры. - Нажмите
Закрыть и сформировать.
Поле можно не только добавить, но и перетащить мышью на другой уровень. Так быстро меняют порядок «сначала склад, потом товар» на обратный.
Стандартные отчёты БП 3.0
ОСВ, ОСВ по счёту, анализ счёта и карточка счёта имеют свою форму. Нажмите Показать настройки и откройте закладку Группировка. Там в таблицу добавляют поле (обычно субконто счёта или его реквизит) и тип вывода: по элементам, по иерархии или только иерархия.
Пример: в ОСВ по счёту 62 нужна разбивка по договорам. Добавьте в группировку субконто «Договоры» под «Контрагентами» и сформируйте отчёт заново.
Пользовательское поле, если готового нет
В расширенных настройках отчёта на СКД можно создать пользовательское поле. Платформа предлагает два вида:
- Поле-выбор — значение по условиям. Например, «Крупный клиент», если выручка больше 1 000 000, иначе «Прочие».
- Поле-выражение — формула из других полей, например наценка как разница выручки и себестоимости.
Созданное поле появляется в списке доступных, и по нему можно группировать как по обычному реквизиту.
Как добавить группировку в схему компоновки в конфигураторе
Этот путь нужен, когда отчёт разрабатывают или дорабатывают, а не просто настраивают. Для типового отчёта лучше работать в расширении конфигурации или во внешнем отчёте: так обновления не затрут доработку. Расширения доступны с платформы 8.3.6.
Шаг 1. Убедитесь, что поле есть в наборе данных
- Откройте макет
ОсновнаяСхемаКомпоновкиДанныхотчёта. - На закладке
Наборы данныхвыделите набор и запустите конструктор запроса. - Добавьте поле в выборку и нажмите
ОК. Поле появится в списке полей набора.
Если поле есть в наборе, но в настройках его не видно, проверьте колонку ограничений поля на закладке Наборы данных. Флажок ограничения по группе запрещает группировать по полю. Снимите его.
Шаг 2. Опишите ресурсы
На закладке Ресурсы перенесите числовые поля и задайте выражение: Сумма(Сумма), Сумма(Количество). Без этого числа выводятся только в детальных записях, а в строках группировок пусто.
Для средней цены не берите Среднее(Цена) — получится среднее по строкам, а не взвешенное. Правильнее так:
ВЫБОР КОГДА Сумма(Количество) = 0 ТОГДА 0
ИНАЧЕ Сумма(Сумма) / Сумма(Количество)
КОНЕЦ
Шаг 3. Соберите структуру на закладке «Настройки»
- В дереве структуры щёлкните правой кнопкой по «Отчёт» и добавьте новую группировку.
- В окне выбора поля укажите поле, например
Контрагент, и тип группировки. - Чтобы получить вложенный уровень, выделите созданную группировку и добавьте группировку внутри неё.
- На закладках
Выбранные поляиПорядокоставьте или добавьтеАвто: тогда поля и сортировка подтянутся сами. - Сохраните макет и проверьте отчёт в режиме «1С:Предприятие».
Изменения в макете типового отчёта на поддержке без расширения снимают конфигурацию с поддержки и усложняют обновления. Перед такой правкой сделайте копию базы .
Добавление группировки кодом
Иногда группировку нужно включать по условию: например, по флажку на форме отчёта. Пример для модуля объекта отчёта, обработчик ПриКомпоновкеРезультата:
Настройки = КомпоновщикНастроек.ПолучитьНастройки();
Группировка = Настройки.Структура.Добавить(Тип("ГруппировкаКомпоновкиДанных"));
ПолеГруппировки = Группировка.ПоляГруппировки.Элементы.Добавить(Тип("ПолеГруппировкиКомпоновкиДанных"));
ПолеГруппировки.Использование = Истина;
ПолеГруппировки.Поле = Новый ПолеКомпоновкиДанных("Контрагент");
ПолеГруппировки.ТипГруппировки = ТипГруппировкиКомпоновкиДанных.Элементы;
Группировка.Выбор.Элементы.Добавить(Тип("АвтоПолеВыбораКомпоновкиДанных"));
Группировка.Порядок.Элементы.Добавить(Тип("АвтоЭлементПорядкаКомпоновкиДанных"));
Дальше эти Настройки передают в компоновщик макета вместо стандартных. Две последние строки не пропускайте: без автополя выбора в строках группировки не появятся ресурсы, а без автопорядка строки выведутся без сортировки.
Вычисляемые поля для нестандартной аналитики
Вычисляемое поле живёт в схеме, а не в запросе. Его описывают на закладке Вычисляемые поля: путь к данным, выражение и заголовок. Язык выражений — язык СКД, похожий на язык запросов.
Когда вычисляемое поле удобнее правки запроса:
- 🔀 нужна разбивка по диапазонам: «до 10 000», «10 000–100 000», «свыше 100 000»;
- 🏷️ нужно объединить значения: три склада одного города показать как один;
- 📅 нужна аналитика по части даты, которой нет в периодах, например по дню недели;
- 🧮 нужна формула из полей разных наборов после их связи.
Пример поля КатегорияСделки для группировки продаж по размеру документа:
ВЫБОР
КОГДА Сумма < 10000 ТОГДА "Мелкая"
КОГДА Сумма < 100000 ТОГДА "Средняя"
ИНАЧЕ "Крупная"
КОНЕЦ
Проверьте на числах: документ на 9 500 попадёт в «Мелкую», на 10 000 — уже в «Среднюю», на 250 000 — в «Крупную». Границы в условии строгие, поэтому ровно 10 000 не окажется в двух категориях сразу.
Если поле участвует только в группировке, в колонке ограничений запретите для него условие и порядок, если они не нужны. Список доступных полей у пользователя станет короче.
Вычисляемое поле не видит агрегатных значений строк чужой группировки. Чтобы разбить клиентов по годовой выручке, а не по размеру отдельного документа, итог считайте в запросе (вложенным запросом с СГРУППИРОВАТЬ ПО) и уже по нему стройте категорию.
Иерархия и многоуровневая вложенность
Для справочников с группами (номенклатура, контрагенты, статьи затрат) у поля группировки есть три типа:
| Тип группировки | Что выводит | Пример |
|---|---|---|
| Элементы | Только элементы, без папок | Плоский список товаров |
| Иерархия | Папки с итогами и элементы внутри | «Бытовая химия → Порошки → конкретный порошок» |
| Только иерархия | Только папки с итогами | Свод по товарным группам |
Иерархия работает, только если справочник иерархический и в запросе выбрана сама ссылка, а не её представление. Строка «Наименование» иерархию не даёт.
Группировки по периодам
Для поля даты выберите в группировке нужную периодичность: день, неделя, месяц, квартал, год. Чтобы в отчёте были все месяцы, даже без движений, задайте тип дополнения периода и границы: начало и конец отчётного периода. Иначе месяц без продаж просто пропадёт, и график по такой таблице будет врать.
Вложенность и таблицы
- Вложенные группировки читаются сверху вниз: верхний уровень — самый крупный разрез.
- В таблице СКД группировки строк и колонок задаются отдельно. «Номенклатура» в строках и «Период» по месяцам в колонках дают матрицу продаж.
- Несколько группировок одного уровня выводятся последовательно, одна под другой: так строят отчёт с двумя независимыми сводами.
Почему группировка не работает и что проверить
Ещё одна частая ловушка: группировка добавлена, но пользователь её не видит. Обычно отчёт открыт со старыми сохранёнными пользовательскими настройками. Сбросьте их к стандартным в меню Ещё формы отчёта и сформируйте заново.
Как сохранить настроенный отчёт и передать коллегам
Настройку, собранную в режиме пользователя, легко потерять при следующем открытии. Закрепите её как вариант отчёта.
- Соберите структуру и проверьте результат.
- В форме отчёта выберите
Ещё → Сохранить вариант отчёта. - Дайте варианту понятное имя: «Продажи по клиентам и договорам», а не «Мой отчёт 2».
- Укажите, кому доступен вариант: только автору или всем пользователям.
- Отметьте разделы, где вариант будет показан в списке отчётов.
Чем отличаются способы хранения:
| Способ | Где хранится | Кто увидит |
|---|---|---|
| Пользовательские настройки | Профиль пользователя | Только вы |
| Вариант отчёта «для всех» | Справочник вариантов в базе | Все с правом на отчёт |
| Вариант в схеме СКД | Макет отчёта | Все, после обновления конфигурации |
Внешний отчёт .erf | Файл или справочник дополнительных отчётов | Те, кому файл передан или подключён |
Чтобы перенести вариант в другую базу, проще всего пересоздать его там же по тем же шагам. Для внешнего отчёта достаточно передать .erf: структура группировок хранится внутри файла вместе со схемой.
После обновления конфигурации поле в типовом отчёте могут переименовать. Сохранённый вариант тогда откроется без этой группировки. Проверьте ключевые варианты после каждого обновления.