Настройка комиссий маркетплейса 1С-Битрикс
Комиссия маркетплейса — это процент или фиксированная сумма, которую платформа удерживает с каждой продажи продавца. Правила могут быть простыми (единый % для всех) или сложными (зависит от категории товара, оборота продавца, типа доставки). В 1С-Битрикс стандартных инструментов для этого нет — нужна кастомная реализация.
Структура правил комиссий
Комиссии лучше хранить в отдельной таблице (через HL-инфоблок или кастомную таблицу), а не в b_option. Это позволяет версионировать правила и применять разные правила к разным продавцам/категориям.
Структура таблицы правил:
| Поле | Тип | Описание |
|---|---|---|
| ID | int | |
| RULE_TYPE | varchar | global / category / vendor |
| VENDOR_ID | int | null = применяется ко всем |
| CATEGORY_ID | int | ID раздела инфоблока, null = все категории |
| RATE_TYPE | varchar | percent / fixed |
| RATE_VALUE | decimal | % или фиксированная сумма |
| MIN_AMOUNT | decimal | Минимальная комиссия |
| MAX_AMOUNT | decimal | Максимальная комиссия (null = без ограничений) |
| ACTIVE_FROM | date | Дата начала действия |
| ACTIVE_TO | date | Дата окончания (null = бессрочно) |
Расчёт комиссии при создании суб-заказа
Расчёт происходит в обработчике OnAfterOrderAdd или в логике создания суб-заказа. Алгоритм выбора правила: сначала ищем индивидуальное правило для продавца + категории, затем для продавца, затем для категории, затем глобальное.
function calculateCommission(int $vendorId, int $categoryId, float $amount): float
{
// Приоритет: vendor+category > vendor > category > global
$rule = findRule($vendorId, $categoryId)
?? findRule($vendorId, null)
?? findRule(null, $categoryId)
?? findRule(null, null);
if (!$rule) return 0.0;
$commission = $rule['RATE_TYPE'] === 'percent'
? $amount * $rule['RATE_VALUE'] / 100
: $rule['RATE_VALUE'];
if ($rule['MIN_AMOUNT']) $commission = max($commission, $rule['MIN_AMOUNT']);
if ($rule['MAX_AMOUNT']) $commission = min($commission, $rule['MAX_AMOUNT']);
return round($commission, 2);
}
Рассчитанная комиссия записывается в таблицу финансовых операций с типом commission и привязкой к суб-заказу.
Административный интерфейс управления правилами
Страница в /bitrix/admin/ с CRUD-интерфейсом для правил комиссий. Список правил с фильтрацией по продавцу/категории, форма создания/редактирования, дата-пикер для периодов действия.
Отдельная страница — просмотр начисленных комиссий за период с группировкой по продавцу, выгрузка в Excel для бухгалтерии.
Сроки
Базовая реализация (одна ставка для всех + по категориям) — 1 неделя. Сложная модель (индивидуальные ставки, прогрессивные тарифы, временные акции) — 2–3 недели.







