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

Бизнес-аналитик Управленческий учет Торговля и дистрибуция
← На главную

В торговой практике часто возникает ситуация, когда итоговая цена продажи включает в себя переменные затраты, которые сами рассчитываются как процент от этой итоговой цены. Это может быть страховка товара, банковская комиссия, агентское вознаграждение или бонусы маркетплейсов. На первый взгляд задача кажется цикличной (эффект «Ахиллеса и черепахи»), так как изменение цены меняет сумму расхода, что в свою очередь требует изменения цены. Разберем подробно, как правильно рассчитывать такие величины без бесконечных итераций и какие инструменты для этого есть в 1С.

Анализ проблемы: наценка против маржи

Основная сложность, с которой столкнулся автор темы, заключается в подмене понятий наценки (markup) и маржи (margin). Проанализируем ситуацию:

  1. Наценка: Мы берем закупочную цену и прибавляем к ней процент. Если закупка 1 000 000 руб., а наценка 15%, то цена будет 1 150 000 руб. Но в этом случае 150 000 руб. — это 15% от закупки, а не от продажи.
  2. Маржа: Условие задачи требует, чтобы страховка составляла 15% именно от цены продажи. Если мы установим цену 1 150 000 руб., то страховая компания потребует 172 500 руб. (1 150 000 * 0,15). В итоге после выплаты страховки у нас останется меньше миллиона, и мы сработаем в убыток.

Выясним причину этой ошибки. Когда мы говорим «процент от продажи», мы имеем дело с долей в конечном результате. Чтобы получить корректную сумму, нам нужно использовать метод Gross-up (доведение до целого).

Математическое решение задачи

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

Составим уравнение на основе условий задачи:
Цена продажи = Закупочная цена + (Цена продажи * Процент страховки)

Подставим значения из примера:
X = 1 000 000 + 0,15 * X

Теперь перенесем все слагаемые с X в одну сторону:
X - 0,15 * X = 1 000 000
0,85 * X = 1 000 000

Отсюда находим X:
X = 1 000 000 / 0,85
X ≈ 1 176 470,59 руб.

Проверим расчет: если цена продажи составляет 1 176 470,59 руб., то 15% от этой суммы — это 176 470,59 руб. Вычитаем страховку из цены: 1 176 470,59 - 176 470,59 = 1 000 000 руб. Условие выполнено идеально, мы вышли «в ноль», сохранив себестоимость товара.

Реализация расчета в 1С:Предприятие

В типовых конфигурациях (1С:Управление торговлей 11, 1С:ERP, 1С:Комплексная автоматизация) подобные расчеты автоматизируются через справочник Виды цен. Проанализируем, как настроить формулу для автоматического расчета.

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


// Пример формулы для расчета цены с учетом 15% страховки от оборота
[ЦенаЗакупки] / 0.85

Если нам нужно добавить к этой цене еще и желаемую прибыль (например, 20% маржинальности), формула усложнится. Важно понимать, что проценты в знаменателе вычитаются из единицы совместно, а не накладываются друг на друга последовательно.


// Формула: Закупка / (1 - %Страховки - %Прибыли)
[ЦенаЗакупки] / (1 - 0.15 - 0.20)
// Что эквивалентно
[ЦенаЗакупки] / 0.65

Сложные случаи: НДС и вложенные зависимости

Проанализируем ситуацию, когда в расчет вмешивается налог на добавленную стоимость. Если ваша компания работает на общей системе налогообложения (ОСНО), возникает важный нюанс: на какую сумму страховая компания начисляет свои 15%?

  1. Вариант А: Страховка считается от цены без НДС. В этом случае мы сначала считаем «чистую» цену продажи по формуле выше, а затем сверху накручиваем НДС (20%).
  2. Вариант Б: Страховка считается от полной суммы чека (с учетом НДС). Это самая опасная ситуация, так как возникает «налог на налог».

Для решения варианта Б в 1С придется использовать более сложный коэффициент. Если S — цена с НДС, то формула будет выглядеть так:


// Расчет итоговой цены с НДС, где 15% страховки берется от итогового чека
[ЦенаЗакупкиБезНДС] * 1.20 / (1 - 0.15)

Посмотрим на пример с «зацикливанием» (Circular Dependencies). Если параметров много (логистика, страховка, комиссия банка, процент менеджера), и каждый зависит от итоговой цены, расчет вручную становится невозможным. В 1С это решается выведением единого коэффициента маржинальности.

Эффект «Ахиллеса и черепахи»

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

1. Добавили 150 000 к миллиону (15% от 1 млн).
2. Увидели, что не хватает 22 500 (15% от 150 000).
3. Добавили 15% от этих 22 500 (3 375).
4. Добавили 15% от 3 375... и так далее.

Математически, сумма этой бесконечно убывающей геометрической прогрессии как раз и стремится к результату деления на 0.85. Использование формулы 1 / (1 - P) мгновенно дает результат, который методом последовательного прибавления пришлось бы искать очень долго.

Практические советы для бизнеса

Бухгалтеру и финансовому аналитику: всегда уточняйте базу для расчета процентов в договорах. Фраза «15% от цены реализации» всегда требует использования деления (маржа), а не умножения (наценка).

Программисту 1С: при настройке ценообразования для менеджеров по продажам полезно выводить в интерфейс два поля: «Процент наценки» и «Процент маржи», чтобы исключить ошибки в планировании прибыли. В коде обработок по расчету цен используйте только проверенные математические модели Gross-up, чтобы избежать расхождений в копейках при больших оборотах.

Рассмотрим, как это реализовать программно в модуле объекта при расчете динамических цен:


Функция РассчитатьЦенуСУчетомКомиссии(Себестоимость, ПроцентКомиссии) Экспорт
    Если ПроцентКомиссии >= 100 Тогда
        ВызватьИсключение "Процент комиссии не может быть больше или равен 100";
    КонецЕсли;
    
    // Применяем формулу Gross-up
    Коэффициент = (100 - ПроцентКомиссии) / 100;
    ЦенаПродажи = Себестоимость / Коэффициент;
    
    Возврат ЦенаПродажи;
КонецФункции

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

← На главную