Как правильно рассчитать проценты и рентабельность в группировках СКД

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

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

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

Золотое правило агрегации: Отношение сумм, а не сумма отношений

Разберем ситуацию на примере. Допустим, у нас есть две продажи:

  1. Товар А: Себестоимость 80, Продажа 100. Рентабельность = (100-80)/100 = 20%.
  2. Товар Б: Себестоимость 50, Продажа 100. Рентабельность = (100-50)/100 = 50%.

Если СКД просто просуммирует проценты в группировке, мы получим 70%. Однако правильный расчет должен выглядеть так: (Сумма Продаж - Сумма Себестоимости) / Сумма Продаж. То есть: (200 - 130) / 200 = 35%.

Главный вывод: Формула для ресурса в СКД должна оперировать агрегатными функциями Сумма(), а не просто именем поля.

Настройка формулы на закладке «Ресурсы»

Многие начинающие разработчики совершают ошибку, настраивая формулу только на закладке Вычисляемые поля. Этого недостаточно, так как вычисляемое поле определяет логику только для детальной записи. Для управления итогами необходимо перейти на закладку Ресурсы.

Рассмотрим по шагам, как настроить поле Рентабельность:

  1. Перейдите на закладку Ресурсы.
  2. Выберите ваше поле (например, Рентабельность) и переместите его в список ресурсов.
  3. В колонке Выражение вместо стандартного Сумма(Рентабельность) напишите формулу, использующую суммы исходных данных.

Пример правильного выражения для ресурса:


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

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

Использование функции ВычислитьВыражение для сложных расчетов

Иногда требуется рассчитать долю текущей строки в общем итоге или в итоге родительской группировки. Для этих целей в СКД существует мощная функция ВычислитьВыражение. Рассмотрим пример, когда нам нужно вычислить процент оборота товара от общего оборота всего склада:


Выразить(ВЫБОР КОГДА 
    ВычислитьВыражение("Сумма(СуммаОборот)", , , "Первая", "Последняя") = 0 
    ТОГДА 0 
    ИНАЧЕ 100 * Сумма(СуммаОборот) / 
    ВычислитьВыражение("Сумма(СуммаОборот)", , , "Первая", "Последняя") 
КОНЕЦ, "Число(15,2)")

Разберем параметры этой функции:

Разделение формул для разных уровней группировок

СКД позволяет задавать разные формулы для разных уровней итогов. В колонке Рассчитывать по... на закладке ресурсов можно указать конкретную группировку. Это полезно, если, например, на уровне "Номенклатура" вы хотите видеть процент наценки, а на уровне "Склад" — долю этого склада в прибыли компании.

Если оставить колонку Рассчитывать по... пустой, формула будет применяться ко всем уровням группировок и к общему итогу.

Оформление процентов: Условное оформление vs Форматная строка

Часто разработчики пытаются добавить символ "%" прямо в формулу ресурса, преобразуя число в строку. Это плохая практика, так как строковое значение нельзя использовать в диаграммах или для дальнейших расчетов.

Проанализируем правильный подход:

  1. Оставьте поле числовым.
  2. Перейдите на закладку Настройки -> Условное оформление.
  3. Добавьте новый элемент оформления.
  4. В поле Оформление выберите Формат и настройте его (например, ЧЦ=10; ЧДЦ=2).
  5. В поле Текст можно указать формат отображения с суффиксом.
  6. В Условии можно задать правила (например, выделять отрицательную рентабельность красным цветом).

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

Выясним причины самых частых проблем:

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

← На главную