К статье
Практический материал

Отчеты и Аналитика · 9 мин

Как в СКД 1С вывести ресурс только в итогах

Как в СКД 1С вывести ресурс только в итогах: настройка закладки «Ресурсы», группировки, выражения, типичные ошибки и проверка результата отчёта.

Задача вывести ресурс только в итогах возникает, когда значение в детальных строках не имеет смысла или загромождает отчёт. Классический пример — плановое значение, заданное на уровне месяца: в строках по дням или по документам его показывать нельзя, иначе пользователь воспримет его как реальные данные. Система компоновки данных позволяет управлять этим поведением штатно, без программирования.

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

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

Как СКД рассчитывает ресурсы и почему они попадают в детали

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

Проблема возникает в двух ситуациях. Первая — ресурс физически существует только на верхнем уровне (например, план продаж на месяц, полученный соединением с другим набором данных), и в детальных строках он дублируется или искажает картину. Вторая — требуется показать процент, среднее или нарастающий итог, которые в детальных строках бессмысленны.

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

Способ 1: ограничить расчёт ресурса по группировкам

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

Порядок настройки: откройте схему компоновки данных, перейдите на закладку «Ресурсы», найдите нужное поле (или добавьте его кнопкой с полями). В колонке «Рассчитывать по» снимите лишние группировки, оставив только ту, где ресурс должен отображаться. Имена группировок должны совпадать с именами, заданными на закладке «Настройки» в структуре отчёта.

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

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

Способ 2: выражение с функцией Уровень()

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

Идея выражения: вернуть значение только тогда, когда запись является итогом. Например, в выражении ресурса или вычисляемого поля используют конструкцию вида Выбор Когда Уровень() = 1 Тогда Сумма(План) Иначе Null Конец. Конкретный номер уровня зависит от структуры отчёта: чем глубже группировка, тем больше значение.

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

Способ 3: вычисляемое поле и настройки варианта

Если ресурс нужен только как итоговая аналитика (например, доля процента от общего итога), часто проще создать вычисляемое поле на закладке «Вычисляемые поля» и задать для него выражение с агрегатными функциями. Затем поле добавляется в ресурсы, и для него снова ограничивается расчёт по группировкам.

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

Сравнение способов

Ограничение «Рассчитывать по»

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

Выражение с Уровень()

Гибко для сложных иерархий, но ломается при изменении структуры варианта.

Отдельные выбранные поля группировки

Не требует правки схемы, но значение всё равно рассчитывается — влияет на производительность при больших данных.

Проверка результата и контрольные точки

После настройки сформируйте отчёт и проверьте три вещи: детальные строки не содержат значения ресурса, итог по группировке (или общий итог) содержит корректное число, и при сворачивании/разворачивании группировок поведение не меняется. Также полезно проверить отчёт в разных вариантах настроек, если их несколько.

Контрольные точки

Как проверить результат

Детальные записи
Норма

Ячейки ресурса пустые

Тревожный признак

Значение дублируется в каждой строке

Итог группировки / общий итог
Норма

Ресурс заполнен и значение корректно

Тревожный признак

Итог пустой или равен нулю

Другой вариант настроек
Норма

Поведение ресурса соответствует структуре

Тревожный признак

Ресурс пропал или появился везде

Если итог пустой — чаще всего поле не добавлено в ресурсы или группировка в «Рассчитывать по» названа иначе, чем в структуре настроек. Если ресурс виден везде — проверьте, не осталась ли колонка «Рассчитывать по» пустой (тогда расчёт идёт по всем уровням).

Типичные ошибки и ограничения

Типичные ошибки
01
Пустая колонка «Рассчитывать по» — ресурс рассчитывается по всем группировкам и деталям, задача не решена.
02
Несовпадение имени группировки в ресурсах и в настройках — итог не выводится вовсе.
03
Поле не добавлено в выбранные поля — ресурс не виден даже в итогах.
04
Жёсткий номер в Уровень() — после добавления группировки в вариант выражение начинает работать неверно.
05
Скрытие колонки условным оформлением вместо настройки ресурса — значение считается, расходуются ресурсы, а при выгрузке в Excel данные «всплывают».

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

FAQ

Итог

Что важно запомнить

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

Почему ресурс не выводится даже в итогах?

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

Можно ли вывести ресурс в итоге группировки, но не в общем итоге?

Да. В колонке «Рассчитывать по» укажите только имя нужной группировки, не включая «Общий итог». Тогда в подвале отчёта поле останется пустым, а в итогах группировки появится.

Чем отличается Уровень() от УровеньВГруппировке()?

Уровень() возвращает абсолютный уровень записи во всей иерархии результата, а УровеньВГруппировке() — относительный уровень внутри текущей ветки группировки. Для отчётов с изменяемой структурой вторая функция обычно устойчивее.

Влияет ли ограничение расчёта ресурса на производительность?

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

Ресурс из второго набора данных в итогах задваивается. Что делать?

Проверьте связь наборов данных на закладке «Связи наборов данных»: поля связи должны однозначно определять соответствие строк. Задвоение обычно означает, что одна детальная строка связывается с несколькими строками второго набора.