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

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

Ресурсы в системе компоновки данных 1С: назначение и настройка

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

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

Механизм работает так: запрос выбирает детальные записи, СКД группирует их по измерениям (контрагент, номенклатура, период), а для каждой группы вычисляет ресурсы по заданным выражениям — обычно через агрегатные функции СУММА, КОЛИЧЕСТВО, МИНИМУМ, МАКСИМУМ, СРЕДНЕЕ. Именно поэтому корректное объявление ресурсов — ключевой шаг при разработке отчёта на СКД: без него группировки и итоги теряют смысл.

Что такое ресурс в СКД и чем он отличается от обычного поля

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

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

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

Где объявляются ресурсы: вкладка «Ресурсы» конструктора

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

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

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

Выражения агрегирования: какие функции использовать

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

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

bsl
// Примеры выражений ресурсов на закладке «Ресурсы» СКД
СУММА(СуммаОборот)
КОЛИЧЕСТВО(РАЗЛИЧНЫЕ Контрагент)
СРЕДНЕЕ(Цена)
МАКСИМУМ(ДатаОтгрузки)
СУММА(СуммаПродажи - Себестоимость)

Для процентов, долей и коэффициентов простое СРЕДНЕЕ обычно не подходит: среднее процентов по строкам не равно проценту по итогу. В таких случаях ресурс задают как отношение агрегатов — например, СУММА(Прибыль) / СУММА(Выручка) * 100. Тогда на любом уровне группировки платформа сначала посчитает суммы, а потом поделит их, и итог будет математически верным.

Настройка расчёта по группировкам: колонка «Рассчитывать по»

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

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

Ресурсы и роли полей: связь с закладкой «Настройки»

Объявленный ресурс автоматически появляется в списке доступных полей настроек отчёта. Чтобы пользователь увидел значения, ресурс нужно добавить в «Выбранные поля» — в режиме разработчика или через пользовательские настройки. Если ресурс объявлен, но не выбран, он участвует в расчётах, но не отображается.

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

Отдельно стоит упомянуть пользовательские поля-выражения, которые могут ссылаться на ресурсы. Например, поле «Доля» с выражением СуммаПродаж / ИтогПоГруппе строится поверх уже объявленных ресурсов. Это позволяет выводить производные показатели без изменения запроса и схемы ресурсов.

Типичные ошибки при работе с ресурсами

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

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

Типичные ошибки
01
Поле не добавлено в ресурсы — итоги по группировкам пустые, хотя детальные строки заполнены.
02
СРЕДНЕЕ для процентов и цен — итог не совпадает с реальным показателем; используйте отношение агрегатов.
03
СУММА для остатков на дату — суммирование по периодам завышает итог в разы.
04
КОЛИЧЕСТВО без РАЗЛИЧНЫЕ — считаются строки, а не уникальные объекты.
05
Ресурс не добавлен в выбранные поля — расчёт выполняется, но пользователь его не видит.

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

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

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

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

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

Итог по группировке
Норма

Равен сумме детальных записей группы (для СУММА)

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

Итог пустой или не сходится с детальными строками

Общий итог
Норма

Равен сумме итогов групп верхнего уровня

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

Общий итог отличается — возможно, ресурс не рассчитывается в общем итоге

Процентные ресурсы
Норма

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

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

Итог равен среднему или сумме процентов по строкам

Остатки по периодам
Норма

Итог равен остатку на конечную дату

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

Итог растёт пропорционально числу периодов

Итог

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

Ресурс в СКД — это агрегируемое поле отчёта. Он объявляется на закладке «Ресурсы» с выражением вроде СУММА(Поле) и при необходимости ограничивается списком группировок. Для процентов используйте отношение агрегатов, для остатков — не СУММА. После настройки сверяйте итоги с независимым расчётом по тем же данным.

Частые вопросы о ресурсах в СКД

Почему в итогах отчёта пусто, хотя детальные строки заполнены?

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

Чем КОЛИЧЕСТВО отличается от КОЛИЧЕСТВО(РАЗЛИЧНЫЕ ...)?

КОЛИЧЕСТВО(Поле) считает число непустых значений во всех строках группировки, то есть фактически строки. КОЛИЧЕСТВО(РАЗЛИЧНЫЕ Поле) считает уникальные значения — например, число разных контрагентов, даже если каждый встречается в десятках документов.

Как правильно вывести процент прибыли в итогах?

Задайте ресурс как отношение агрегатов: СУММА(Прибыль) / СУММА(Выручка) * 100. Тогда на каждом уровне группировки сначала вычисляются суммы, а затем их отношение. Вариант СРЕДНЕЕ(Процент) даст среднее арифметическое строковых процентов, которое не совпадает с реальным показателем.

Можно ли сделать ресурсом нечисловое поле, например дату?

Да, если выражение осмысленно для набора записей. Типичный пример — МАКСИМУМ(ДатаДокумента) для определения даты последней операции по группе или МИНИМУМ(ДатаОплаты). СУММА и СРЕДНЕЕ к датам и строкам неприменимы.

Для чего нужна колонка «Рассчитывать по» у ресурса?

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

Как посчитать количество документов, если один документ встречается в нескольких строках?

Используйте выражение КОЛИЧЕСТВО(РАЗЛИЧНЫЕ Ссылка) — оно посчитает уникальные документы независимо от того, сколько строк табличной части попало в выборку. Простое КОЛИЧЕСТВО(Ссылка) завысит результат, считая строки вместо документов.