Проверить маржу по переданным позициям и себестоимости
Робот «Проверить маржу по переданным позициям и себестоимости» сравнивает расчетную маржу переданного состава с заданным порогом и показывает нехватку себестоимости.

Видимая часть формы настройки в Битрикс24. Скриншот показывает поля действия; он не подтверждает выполнение учебного примера.
Для кого и какую задачу решает
Руководителю продаж и администратору согласования, который проверяет порог маржи для подготовленного набора позиций.
Неполная себестоимость создаёт ложное впечатление высокой прибыли. Робот отличает известные затраты от полного расчёта и не подставляет ноль вместо отсутствующей цены закупки. Нулевая выручка также отмечается как неопределённая маржа.
Параметры и подготовка
| Поле | Как заполнить |
|---|---|
Единая валюта, код из трех латинских букв (CURRENCY) |
Обязательное поле |
Число дробных знаков: 0–6 (SCALE) |
Обязательное поле |
Позиции с количеством, ценой и согласованной себестоимостью JSON (LINES) |
Обязательное поле |
Дополнительные затраты JSON (EXTRA_COSTS) |
Необязательное поле. по умолчанию [] |
Округление сумм строк (LINE_ROUNDING) |
Обязательное поле. Только точная сумма (exact); Ближайшее, половина вверх (half_up); Вниз (down); Вверх (up) |
Минимальная маржа, % от выручки (MIN_MARGIN_PERCENT) |
Обязательное поле |
Перед настройкой выберите, откуда процесс получит каждое значение: постоянная настройка, поле карточки или результат предыдущего шага. Подписи в таблице соответствуют полям робота. Коды в скобках помогают различать похожие параметры при передаче данных между шагами.
Как использовать
- Передайте LINES с id, quantity, unitPrice, unitCost и currency. Цена и согласованная себестоимость должны быть на одной налоговой базе.
- При необходимости заполните EXTRA_COSTS объектами id/amount/currency. Если дополнительных затрат нет, оставьте
[]. - Укажите SCALE, обязательное LINE_ROUNDING и MIN_MARGIN_PERCENT от 0 до 100. Округление применяется отдельно к произведениям по каждой строке.
- После статуса проверьте complete и marginDefined. Для решения используйте thresholdResult: pass, below, unknown либо undefined.
Как заполнить JSON-поля
Позиции с количеством, ценой и согласованной себестоимостью JSON (LINES)
[
{
"id": "A",
"quantity": "2",
"unitPrice": "100.00",
"unitCost": "60.00",
"currency": "RUB"
}
]
До 1000 позиций; id уникальны, quantity неотрицательно, цены точные строки на согласованной налоговой базе. Отсутствующая/null unitCost означает неизвестную себестоимость. [] даёт нулевую выручку и неопределённую маржу.
Это массив: внешние квадратные скобки обязательны. Пустой массив [] отличается от объекта {}; возможность пустого списка определяется правилами этого поля, описанными ниже.
Дополнительные затраты JSON (EXTRA_COSTS)
[]
Пустой массив означает отсутствие допзатрат. Для затрат используйте [{"id":"delivery","amount":"10.00","currency":"RUB"}]. id уникальны внутри этого списка, amount точно соответствует SCALE.
Это массив: внешние квадратные скобки обязательны. Пустой массив [] отличается от объекта {}; возможность пустого списка определяется правилами этого поля, описанными ниже.
Учебный пример и ожидаемый результат
LINES=[{"id":"A","quantity":"2","unitPrice":"100.00","unitCost":"60.00","currency":"RUB"}], EXTRA_COSTS=[], CURRENCY=RUB, SCALE=2, LINE_ROUNDING=exact, MIN_MARGIN_PERCENT=30. Ожидаются выручка 200.00, себестоимость 120.00, прибыль 80.00, маржа 40% и pass. Если unitCost отсутствует, полный итог и маржа останутся пустыми, результат порога будет unknown.
Пример показывает подготовленные учебные данные. Фактический результат зависит от переданных значений и доступных данных вашего процесса.
Что возвращает и как продолжить процесс
- «Выручка переданного состава» (
revenue). - «Известная себестоимость с дополнительными затратами» (
knownCost). - «Полная себестоимость, если известна» (
totalCost). - «Прибыль, если известна» (
profit). - «Маржа %, если определена» (
marginPercent). - «Все себестоимости переданы» (
complete). - «Маржа определена» (
marginDefined). - «pass/below/unknown/undefined» (
thresholdResult). - «ID строк без себестоимости JSON» (
missingCostIdsJson). - «Валюта» (
currency). - «Дробных знаков» (
scale).
Порог сравнивается с точной маржой до округления отображаемого процента. knownCost показывает только известную часть с дополнительными затратами. Не используйте его как полную себестоимость при complete=N.
Выход «Статус выполнения» проверяйте перед передачей результата дальше. При отрицательном статусе прочитайте «Пояснение ошибки» и направьте процесс на исправление исходных данных. Успешный статус подтверждает выполнение действия; содержательные признаки результата проверяйте отдельно.
Ограничения и разбор ошибок
LINES: [{"id":"A","quantity":"2","unitPrice":"100.00","unitCost":"60.00","currency":"RUB"}]. EXTRA_COSTS: [{"id":"delivery","amount":"10.00","currency":"RUB"}], по умолчанию []. Цены и согласованная себестоимость должны быть переданы на одной налоговой базе; налоги не рассчитываются. LINE_ROUNDING обязателен: exact/half_up/down/up; применяется отдельно к произведениям количества на цену/себестоимость. MIN_MARGIN_PERCENT задается явно от 0 до 100. Порог сравнивается точно до округления показателя; marginPercent для отображения округляется до 6 знаков, половина вверх. Пропущенная/null unitCost означает unknown, complete=N: итоговая себестоимость, прибыль и маржа пустые. Нулевая выручка означает неопределенную маржу, а не 0%; пустой состав дает валидный ноль и undefined. Ничего не загружает из CRM/склада и не проверяет полноту реальной сделки. Суммы неотрицательные и меньше 10^24; до 36 значащих и 18 дробных цифр. Готовые суммы соответствуют SCALE 0–6. До 1000 записей; ID уникальны. Вход и каждый результат до 1 МБ.
Робот не загружает реальные закупочные цены и не доказывает полноту состава сделки. При нулевой выручке marginDefined выключен и verdict undefined, а не 0%. Расчёт не заменяет бухгалтерский учёт и не меняет цены товаров.