СКД в 1С

Ресурсы в СКД 1С: как настроить формулы и «Рассчитывать по»

Коротко

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

Поле и ресурс: что именно суммирует СКД

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

Для примера используем продажи: склад А, товар Т1 — 100; склад А, товар Т2 — 200; склад Б, товар Т3 — 50. Все суммы принадлежат одному набору. Имена этих полей условные и должны существовать в вашей схеме.

Как добавить ресурс в СКД программно

// Схема уже содержит поле СуммаПродажи.
Ресурс = Схема.ПоляИтога.Добавить();
Ресурс.ПутьКДанным = "СуммаПродажи";
Ресурс.Выражение = "Сумма(СуммаПродажи)";
// Группировки не заполняем: формула действует на всех уровнях.
ПолеИтогаСхемыКомпоновкиДанных
ПутьКДаннымПоле схемы, для которого описан итог
ВыражениеСтрока языка выражений СКД
ГруппировкиМассив имён полей; пустой массив — все уровни
→ Описание ресурса

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

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

Для структуры «Склад → Товар» добавим в массив только "Склад". Формула применяется к складу и вложенному уровню товара. Она не ограничивается одной строкой заголовка склада.

Ресурс.Группировки.Добавить("Склад");
УровеньКонтрольный результат
Склад А300
Товары Т1 и Т2100 и 200
Склад Б / товар Т350 / 50
Общий итогНе выводится этой настройкой

Этот сценарий воспроизведён на платформе 8.3.27.1989 с отдельным набором из трёх строк. Положение ячеек зависит от макета, но область действия ресурса от оформления не меняется.

Как включить общий итог и иерархические записи

Ресурс.Группировки.Добавить("ОбщийИтог");
// Для иерархических записей поля:
// Ресурс.Группировки.Добавить("Номенклатура Иерархия");

После добавления ОбщийИтог ожидаем 350. Для иерархического поля имя с суффиксом Иерархия задаёт правило для иерархических записей и вложенных группировок без собственного выражения этого ресурса. Не смешивайте иерархию справочника с обычной вложенностью «Склад → Товар».

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

Средняя цена и процент маржи: отношение итогов

Среднее арифметическое цен не равно средневзвешенной цене. Для продаж 1 штуки за 100 и 9 штук за 1800 средняя цена единицы — 190, а не 150. Формула ресурса:

ВЫБОР
 КОГДА Сумма(Количество) = 0 ТОГДА 0
 ИНАЧЕ Сумма(СуммаПродажи) / Сумма(Количество)
КОНЕЦ

Для маржи относительно выручки применяют 100 * (Сумма(Выручка) - Сумма(Себестоимость)) / Сумма(Выручка) с проверкой знаменателя. Выбор базы процента — бизнес-правило: наценка относительно себестоимости даст другое число. Сумма(ПроцентСтроки) его не заменяет.

В ИИ Консоли отчётов 1С можно попросить задать формулу ресурса, собрать .erf и проверить итоги на контрольном примере. В запросе укажите, от какой базы считается процент.

Как проверить ресурс и не скрыть дубли

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

У связи отдельных наборов другое правило: согласно §10.3.1.5 каждая запись набора участвует в расчёте его ресурса один раз. Замена Сумма на Максимум без проверки уровня и ключа способна потерять настоящие продажи.

Источник: руководство разработчика 8.3.27, глава 10, §10.3.1.5 и §10.3.5.5; справка платформы «ПолеИтогаСхемыКомпоновкиДанных.Группировки». Для оконных расчётов используйте отдельный разбор ВычислитьВыражение.

Частые ошибки

  • Ограничить ресурс складом и ожидать пустые значения на всех вложенных уровнях — правило распространяется и на вложенные группировки.
  • Сложить проценты строк — итоговая доля рассчитывается через суммы числителя и знаменателя.
  • Лечить дубли максимумом — сначала установите ключ исходной записи и место размножения.

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

Почему ресурс отсутствует в общем итоге?

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

Ресурс по складу считается и по товарам?

Да, выбранная группировка включает вложенные группировки. Для собственных выражений вложенного уровня действуют правила выбора формулы ресурса.

Почему нельзя суммировать проценты?

Проценты относятся к разным базам. Итог рассчитывают как отношение агрегатов с проверкой знаменателя.

Тарифы

ИИ Консоль отчётов 1С

Лайт

Бесплатно
≈ 0,1 млн токенов на 2 дн.

Для ознакомления с возможностями

  • Все функции бесплатно на 2 дня +2 дня за подписку на Telegram или Max
  • Полный набор инструментов без урезаний
  • Без ввода карты

Старт

Популярный выбор
1990 руб. в месяц
≈ 10 млн токенов

Для индивидуального использования

Продвинутый

3990 руб. в месяц
≈ 25 млн токенов

Для интенсивного использования или команд