Почему при возврате товара рентабельность выводится с плюсом и как настроить ее расчет в 1С

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

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

Экономическая и математическая природа знака рентабельности

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

Рентабельность = (Выручка - Себестоимость) / Выручка * 100%

Или через торговую наценку:

Рентабельность от себестоимости = Валовая прибыль / Себестоимость * 100%

Рассмотрим, что происходит в базе данных при проведении документов отгрузки и последующего возврата:

  1. Прямая реализация с прибылью: товар продан за 2000 рублей при себестоимости 1000 рублей. Числитель (прибыль) равен 2000 - 1000 = +1000. Знаменатель (выручка) равен +2000. Результат: +1000 / +2000 = +50%. Сделка прибыльная, знак положительный.
  2. Возврат покупателя (сторно): документ сторнирует ранее зафиксированные показатели. Выручка становится отрицательной (-2000), себестоимость сторнируется со знаком минус (-1000). Подставим данные в формулу: (-2000 - (-1000)) / -2000 = -1000 / -2000 = +0.5 (+50%).

С точки зрения математики деление отрицательного числа на отрицательное всегда дает положительный результат. Документ возврата лишь зеркально корректирует финансовую базу с тем же коэффициентом эффективности, с которым товар отгружался. Однако для восприятия руководства знак плюс ассоциируется с получением прибыли, а возврат воспринимается как отрицательное событие, которое «должно уменьшать процент».

Анализ ошибки наивного изменения запроса

Часто программисты пытаются быстро удовлетворить требование руководства, меняя условие в запросе отчета через проверку знака стоимости продажи:


|ИНАЧЕ ВЫБОР
|   КОГДА СУММА(Стоимость) > 0
|       ТОГДА (СУММА(Стоимость) - СУММА(Себестоимость)) / СУММА(Стоимость)
|   КОГДА СУММА(Стоимость) < 0
|       ТОГДА -(СУММА(Стоимость) - СУММА(Себестоимость)) / СУММА(Стоимость)
|   ИНАЧЕ 0
|КОНЕЦ

Проанализируем скрытую проблему этой конструкции. Данный алгоритм корректно сменит знак на минус только в том случае, если исходная отгрузка была прибыльной. Но если товар изначально отгрузили с убытком (например, распродажа неликвида: продажа за 1000 при себестоимости 1200), то в момент возврата произойдет следующее:

  1. Прибыль возврата: -1000 - (-1200) = +200.
  2. Знаменатель (выручка): -1000 (меньше нуля, срабатывает ветка с минусом).
  3. Формула вычислит: -(+200) / (-1000) = -200 / -1000 = +20%.

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

Способ 1: Математически корректная корректировка через модуль знаменателя

Если бизнес-требование жестко предписывает, чтобы знак процента рентабельности строго совпадал со знаком валовой прибыли (положительная прибыль дает плюс, убыток или сторно прибыли дают минус), необходимо брать знаменатель по модулю. В языке запросов 1С это реализуется через конструкцию ВЫБОР:


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

Посмотрим, как отрабатывает данный расчет во всех возможных сценариях:

  1. Прибыльная отгрузка: +1000 / |+2000| = +50%.
  2. Убыточная отгрузка: -200 / |+1000| = -20%.
  3. Возврат прибыльной отгрузки: -1000 / |-2000| = -1000 / 2000 = -50% (руководство видит желаемый минус).
  4. Возврат убыточной отгрузки: +200 / |-1000| = +200 / 1000 = +20% (уменьшение убытка компании математически обоснованно выводится со знаком плюс).

Важное замечание для отчетов на Построителе и СКД: не забывайте переопределять формулу не только в выборке детальных записей запроса, но и в секции ИТОГИ или на вкладке «Ресурсы» в СКД. Нельзя применять стандартное суммирование СУММА(Рентабельность) к процентам. В СКД выражение ресурса должно вычисляться от общих итоговых сумм стоимости и себестоимости по группировке.

Способ 2: Визуальное разделение потоков и условное оформление

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

  1. Разделение на продажи и возвраты: в настройках отчета продажи выводятся отдельной группировкой или колонками («Сумма продаж», «Себестоимость продаж», «Рентабельность продаж»), а возвраты — отдельным блоком («Сумма возвратов», «Себестоимость возвратов»). Для строк возвратов колонка рентабельности может не рассчитываться вовсе, так как возврат не является самостоятельной продажей.
  2. Условное оформление: в СКД для строк, где регистратором выступает документ ВозвратТоваровОтПокупателя, можно настроить форматное отображение: заменять значение колонки рентабельности на прочерк либо выводить текст «Сторно», сохраняя исходную точность итоговых финансовых расчетов.

Учетные нюансы: проверка себестоимости возвратов

Если в отчете рентабельность возврата принимает аномальные значения (например, ровно -100% или 0%), перед правкой запросов проверьте корректность заполнения учетных регистров:

  1. Убедитесь, что в документе Возврат товаров от покупателя указан конкретный документ партии или документ реализации. Если партия не указана, себестоимость списания при возврате может зафиксироваться нулевой, из-за чего числитель формулы будет равен полной сумме выручки со знаком минус.
  2. Проверьте наличие дополнительных расходов, распределенных на исходную реализацию. Если допрасходы не были сторнированы вместе с себестоимостью номенклатуры, рентабельность возврата неизбежно будет отличаться по модулю от рентабельности первичной продажи.
← На главную