Как в СКД правильно настроить расчет процентов для итогов группировок?

Программист 1С v8.3 (Управляемые формы) Управленческий учет Торговля и дистрибуция
← На главную

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

Почему стандартное суммирование дает неверный результат

По умолчанию, когда мы добавляем поле в ресурсы СКД, система применяет функцию Сумма(). Если в детальных записях у нас есть значения процентов (например, 20%, 30%, 50%), то для группировки более высокого уровня (например, по документу) СКД просто сложит эти числа. В итоге мы получим 100%, что в корне неверно. Процент — это отношение двух величин (например, маржи к себестоимости), и для итоговой строки мы должны сначала получить общую сумму маржи, общую сумму себестоимости, и только потом разделить их друг на друга.

Пошаговое решение: меняем выражение ресурса

Для корректного расчета нам необходимо переопределить формулу вычисления в настройках ресурсов. Рассмотрим, как это сделать по шагам:

  1. Перейдите на вкладку «Ресурсы» в редакторе СКД.
  2. Найдите поле, которое отвечает за ваш процент (например, ПроцентНаценки).
  3. В колонке «Выражение» вместо стандартной функции Сумма(ПроцентНаценки) введите формулу, основанную на ваших базовых показателях.

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

Сумма(Маржа) / Сумма(Себестоимость) * 100

Важное примечание: При такой настройке СКД автоматически пересчитает значение для каждой группировки. В строках детальных записей результат останется прежним, а вот в итогах по документу или по отчету в целом вы получите математически верное средневзвешенное значение.

Обработка деления на ноль

При работе с делением всегда существует риск получить ошибку, если знаменатель (в нашем случае Себестоимость) окажется равен нулю. Чтобы отчет работал стабильно и не выдавал ошибки, рекомендуем использовать функцию ВЫБОР или стандартную функцию ЕстьNull().

Рассмотрим более надежный вариант формулы:


ВЫБОР
    КОГДА Сумма(Себестоимость) = 0 ТОГДА 0
    ИНАЧЕ Сумма(Маржа) / Сумма(Себестоимость) * 100
КОНЕЦ

Использование такой конструкции позволит вам избежать проблем с отображением данных в тех случаях, когда себестоимость по какой-то причине не заполнена или отсутствует.

Настройка оформления результата

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

Это позволит пользователю видеть понятные проценты, например, 91.75 вместо длинного дробного числа. Таким образом, мы получаем профессионально настроенный отчет, в котором итоговые показатели рассчитываются корректно, а интерфейс остается удобным для восприятия.

← На главную