Калькуляция — это ядро партнёрской программы: именно она решает, сколько и когда получит аффилиат за приведённый заказ. В 1С-Битрикс расчёт задаётся не в интерфейсе, а плагином плана и привязан к статусу заказа. Ниже — как это устроено и где чаще всего ломается.
Где в Битрикс живёт калькуляция выплат
Партнёрская программа — часть модуля Интернет-магазин (sale). Раздел управления находится в Магазин → Аффилиаты и делится на три сущности: аффилиаты (сами партнёры), планы аффилиатов (правила вознаграждения) и транзакции (начисленные суммы).
Собственно калькуляция задаётся в плане. У каждого плана есть тип расчёта — плагин, то есть PHP-скрипт, который принимает данные заказа и возвращает сумму вознаграждения. Стандартные плагины лежат в /bitrix/modules/sale/affiliate/, а класс, отвечающий за начисления, — CSaleAffiliate. Результат расчёта пишется в транзакцию (таблица b_sale_affiliate_transact).
Когда срабатывает расчёт
Вознаграждение не начисляется в момент клика по партнёрской ссылке. Битрикс сначала фиксирует переход (сохраняет ID аффилиата в cookie покупателя), а собственно калькуляция запускается позже — при изменении статуса заказа. Как правило, триггером служит признак оплаты (PAYED = Y) либо переход заказа в целевой статус.
- Покупатель приходит по ссылке вида
?partner=IDs— переход учтён. - Оформляется заказ, к нему привязывается аффилиат.
- Заказ оплачивается / достигает нужного статуса — создаётся транзакция начисления.
- При возврате или отмене формируется обратная (сторнирующая) транзакция.
Поэтому одна выплата в жизни проходит несколько состояний. Если считать «по клику», цифры не сойдутся с реально оплаченными заказами — это первая типовая ошибка внедрения.
Типы плагинов и база вознаграждения
Стандартная поставка предлагает несколько схем расчёта. Выбор влияет и на сумму, и на прозрачность отчётности для партнёра.
| Тип расчёта | Что берётся за базу | Когда уместен |
|---|---|---|
| Фиксированный процент | Итоговая сумма заказа | Универсальный старт, простая партнёрка |
| Процент по группам товаров | Стоимость позиций из заданных разделов | Разная маржа по категориям |
| Фиксированная сумма за заказ | Факт оформления | Лидогенерация, подписки |
| Многоуровневый | Заказы партнёров нижних уровней | Реферальные сети |
Важно определиться, что именно входит в базу: считать ли доставку, налоги и применённые скидки. По умолчанию за основу берётся сумма заказа, но доставку и налоги почти всегда стоит исключать — иначе партнёр получает процент с ваших логистических расходов.
Как формируется сумма выплаты
Плагин получает контекст заказа и возвращает число. Прежде чем настраивать процент, зафиксируйте три параметра, от которых зависит корректность результата.
- Валюта. План хранит валюту вознаграждения; если валюта заказа отличается, суммы приводятся по курсу модуля
currency. Расхождения в курсах — частый источник копеечных ошибок в отчётах. - База расчёта. Полная сумма заказа, сумма товаров без доставки или стоимость конкретных разделов каталога. Выбор фиксируется в логике плагина.
- Скидки. Решите заранее: процент считается от цены до или после применения купонов и правил корзины. Обычно — после, от реально оплаченного.
Отдельно продумайте округление. Битрикс хранит суммы транзакций с копейками, поэтому округляйте единообразно (например, до двух знаков) на стороне плагина, чтобы итог по отчёту совпадал с суммой построчных начислений.
Когда нужен собственный плагин
Стандартные схемы покрывают базовые кейсы, но бизнес-правила часто сложнее: разные ставки для новых и повторных клиентов, потолок вознаграждения на заказ, исключение товаров с нулевой маржой, бонус за достижение объёма. Всё это — повод написать свой плагин калькуляции.
Технически плагин — это скрипт по образцу стандартных файлов в /bitrix/modules/sale/affiliate/, который на вход получает данные заказа и параметры плана, а на выход отдаёт сумму начисления. Размещать кастомную логику правильнее в своём решении, а не править файлы ядра, чтобы обновления модуля не затирали доработку.
Внутри плагина обычно нужно:
- получить корзину заказа (позиции, разделы, цены) — например, через
CSaleBasketили D7-API заказа; - применить бизнес-правило (ставки, лимиты, исключения);
- вернуть итоговую сумму в валюте плана.
Для сложных условий держите расчёт детерминированным и логируемым: партнёр должен по каждой транзакции понимать, из чего сложилась сумма.
Как проверить и отладить расчёт
Калькуляцию нельзя принимать «на веру» — её проверяют на реальных заказах до запуска программы. Порядок отладки прост.
- Проведите тестовый заказ по партнёрской ссылке и доведите его до оплаченного статуса.
- Откройте
Магазин → Аффилиаты → Транзакциии сверьте сумму начисления с ожидаемой по формуле. - Проверьте краевые случаи: заказ со скидкой, с несколькими валютами, частичную оплату, возврат.
- Сверьте отчёт по аффилиату: сумма построчных транзакций должна совпадать с итогом «к выплате».
Транзакции удобно рассматривать как журнал калькуляции: каждая строка — отдельное событие (начисление, сторно, выплата). Если итог не сходится, ищите лишнюю или недостающую транзакцию, а не ошибку в проценте. Подробный разбор состояний вынесен в отдельный материал по учёту и отчётности.
Типичные ошибки калькуляции
Большинство проблем с выплатами — не в проценте, а в моменте и базе расчёта. Чаще всего встречаются:
- Начисление по клику, а не по оплате — раздутые суммы и недовольные бухгалтеры.
- Процент с полной суммы вместе с доставкой и налогами — переплата партнёрам.
- Отсутствие сторно при возврате — выплаты за отменённые заказы.
- Смешение валют без приведения по курсу — расхождения в отчётах.
- Правка файлов ядра вместо своего плагина — потеря доработки при обновлении модуля
sale.
Итог
Калькуляция партнёрских выплат в 1С-Битрикс держится на трёх решениях: что берём за базу, сколько начисляем (плагин плана) и когда фиксируем начисление (статус заказа и сторно при возврате). Стандартные схемы подходят для простого процента, но реальные правила почти всегда требуют собственного плагина и аккуратной работы с валютой, скидками и округлением.
Мы в B2Bsite проектируем и дорабатываем партнёрские программы на Битрикс: пишем плагины калькуляции под ваши бизнес-правила, связываем начисления с оплатой и возвратами, настраиваем прозрачную отчётность и интеграции с 1С и внешними системами. Если расчёт выплат должен быть точным и защищённым от обновлений ядра — поможем сделать его надёжным.
Частые вопросы
В какой момент Битрикс начисляет вознаграждение аффилиату?
Не по клику, а при изменении статуса заказа — обычно по факту оплаты. Тогда создаётся транзакция начисления, а при возврате формируется сторнирующая запись.
Где задаётся сама формула расчёта?
В плагине плана аффилиата — PHP-скрипте по образцу файлов из /bitrix/modules/sale/affiliate/. Поля плана лишь настраивают параметры, а логику расчёта определяет плагин.
Считать процент от полной суммы заказа или без доставки?
Как правило, доставку и налоги из базы исключают, иначе партнёр получает процент с ваших логистических расходов. Решение фиксируется в логике плагина.
Что происходит с выплатой при возврате заказа?
Автоматического обнуления нет: нужно создать компенсирующую (сторнирующую) транзакцию. Иначе аффилиат останется с начислением за несостоявшуюся продажу.
Как считается вознаграждение, если валюта заказа и плана разные?
Суммы приводятся по курсу модуля currency к валюте плана. Расхождения в курсах — частая причина копеечных отклонений в отчётах, их стоит проверять отдельно.
Можно ли задать разные ставки для категорий товаров?
Да, для этого есть расчёт по группам товаров, где база берётся из заданных разделов каталога. Для более сложных правил пишут собственный плагин.
Как проверить правильность калькуляции перед запуском?
Провести тестовый заказ по партнёрской ссылке до оплаченного статуса и сверить сумму в разделе Магазин → Аффилиаты → Транзакции с ожидаемой по формуле, включая случаи со скидками и возвратами.
Стоит ли править стандартные файлы модуля для своей логики?
Нет. Кастомную калькуляцию размещают в своём решении по образцу штатных плагинов, чтобы обновления модуля sale не затирали доработку.
Поможем с настройкой и поддержкой 1С-Битрикс: Управление сайтом
Поможем с настройкой, доработкой и поддержкой 1С-Битрикс: Управление сайтом.