В практике разработчика 1С часто возникает ситуация, когда клиент просит добавить в отчет «Наценку», но при проверке готового результата утверждает, что цифры неверны. Проанализируем классический пример: закупочная цена товара составляет 351,35 руб., а цена продажи — 750,00 руб. Калькулятор наценки выдает 113,46%, а клиент ожидает увидеть 53,1%. Разберем по шагам, почему возникает эта разница и какой алгоритм является правильным.
Основная проблема заключается в том, что в бизнес-среде термины «наценка» и «маржа» (или рентабельность продаж) часто используются как синонимы, хотя с точки зрения экономики это разные показатели. Рассмотрим, что именно посчитал клиент в своем алгоритме:
(1 - (351,35 / 750)) * 100% = 53,1%
Если мы преобразуем эту формулу математически, то получим следующее:
(750 - 351,35) / 750 * 100% = 53,1%
Проанализируем этот расчет. Здесь чистая прибыль (398,65 руб.) делится на цену продажи. В экономике этот показатель называется рентабельностью продаж (или маржинальностью). Он показывает, какой процент прибыли содержится в каждом заработанном рубле выручки. Этот показатель физически не может превышать 100%, что очень удобно для быстрого анализа эффективности продаж и планирования скидок.
Теперь посмотрим на алгоритм, который использовал программист (и калькуляторы наценки):
(750 - 351,35) / 351,35 * 100% = 113,46%
В данном случае прибыль делится на закупочную цену (себестоимость). Это и есть наценка (markup). Она показывает, сколько процентов прибыли мы «накрутили» поверх стоимости покупки товара. Наценка может быть любой: 100%, 200%, 1000% и более.
Чтобы окончательно закрепить разницу, рассмотрим простой пример: купили товар за 100 рублей, продали за 200 рублей.
Именно поэтому клиент в исходной задаче получил 53,1%. Он хочет видеть, какую долю в его обороте занимает прибыль, чтобы понимать, насколько «глубокую» скидку он может дать покупателю, не уйдя в минус.
При разработке отчетов в 1С:Управление торговлей, 1С:ERP или 1С:Комплексная автоматизация, важно четко разделять эти поля. В типовых конфигурациях обычно используются следующие наименования:
(СуммаПродажи - Себестоимость) / Себестоимость * 100.(СуммаПродажи - Себестоимость) / СуммаПродажи * 100.Рассмотрим пример программного кода для вычисления этих показателей в произвольном отчете или обработке:
// Расчет показателей прибыли
Прибыль = ЦенаПродажи - ЦенаЗакупки;
// Наценка (Markup)
Если ЦенаЗакупки <> 0 Тогда
ПроцентНаценки = (Прибыль / ЦенаЗакупки) * 100;
Иначе
ПроцентНаценки = 0;
КонецЕсли;
// Рентабельность (Margin)
Если ЦенаПродажи <> 0 Тогда
ПроцентРентабельности = (Прибыль / ЦенаПродажи) * 100;
Иначе
ПроцентРентабельности = 0;
КонецЕсли;
Для проверки корректности расчетов в коде можно использовать математические формулы взаимосвязи. Если мы знаем один показатель, мы всегда можем вычислить другой:
Чтобы избежать подобных споров с заказчиками в будущем, рекомендуем придерживаться следующих правил при проектировании отчетов:
Наценку, и Рентабельность. Это снимет лишние вопросы и даст пользователю полную картину.ЦенаПродажи <> 0 или ЦенаЗакупки <> 0, чтобы отчет не «вылетал» при наличии ошибочных данных в базе.Таким образом, «странная» наценка клиента оказалась стандартным экономическим показателем рентабельности продаж. Понимание этой разницы позволяет программисту 1С говорить с бизнесом на одном языке и создавать действительно полезные инструменты для анализа прибыли.