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