Настройка согласования заказа для B2B 1С-Битрикс
В корпоративных закупках рядовой сотрудник не имеет права самостоятельно оплатить заказ на крупную сумму. Ему нужно согласование руководителя или финансового директора. Без этой логики на стороне Битрикса покупатель вынужден согласовывать заказ вне системы — по почте или в мессенджере — и возвращаться оформлять вручную.
Схема согласования
Стандартный сценарий для B2B: сотрудник создаёт заказ со статусом «На согласовании» → уведомление уходит руководителю → руководитель в кабинете подтверждает или отклоняет → при подтверждении заказ переходит в обработку, при отклонении — сотруднику приходит уведомление с причиной.
Более сложные схемы: согласование по сумме (до 50К — не нужно, от 50К до 200К — один уровень, от 200К — два уровня), или согласование по категории товаров.
Реализация через статусы заказов
В Битриксе заказ имеет статус (b_sale_status). Добавляем кастомные статусы:
-
APPROVAL— ожидает согласования -
APPROVED— согласован, передан в обработку -
REJECTED— отклонён
Добавление статусов: CSaleStatus::Add() или через панель управления Магазин → Настройки → Статусы заказов.
При создании заказа сотрудником (не владельцем компании) — обработчик OnSaleOrderSaved проверяет роль пользователя. Если роль требует согласования и сумма выше порога — статус заказа меняется на APPROVAL, стандартная обработка временно приостанавливается.
Уведомления и интерфейс согласования
При переходе в APPROVAL — почтовое событие B2B_ORDER_APPROVAL_REQUEST уходит согласующему. В письме: список позиций, сумма, ссылка на страницу согласования.
Страница согласования в кабинете — список заказов в статусе APPROVAL для текущего пользователя (или для компании, если у него роль approver). Кнопки: «Согласовать» / «Отклонить» с полем причины. При нажатии — AJAX-запрос к обработчику, который меняет статус заказа через CSaleOrder::UpdateStatus() и отправляет уведомление создателю.
Многоуровневое согласование
Для двухуровневой схемы — Highload-блок order_approvals: UF_ORDER_ID, UF_APPROVER_ID, UF_LEVEL (1, 2), UF_STATUS, UF_COMMENT, UF_DATE. Заказ переходит в основную обработку только когда все записи со статусом approved. При отклонении на любом уровне — заказ получает статус REJECTED, цепочка прерывается.
Настройка одноуровневого согласования: 1 неделя. Многоуровневая схема с гибкими правилами: 2-3 недели.







