Настройка транзитной доставки со склада поставщика 1С-Битрикс
Транзитная доставка — схема dropshipping: заказ приходит на сайт, магазин передаёт его поставщику, поставщик отправляет товар напрямую клиенту. Магазин в цепочке физически не держит товар. В Битрикс эта схема требует: связи товаров с поставщиками, механизма автоматической передачи заказов и отслеживания статуса от поставщика.
Привязка товаров к поставщикам
Создайте пользовательское свойство инфоблока SUPPLIER_ID типа «Список» или «Привязка к инфоблоку» — зависит от того, хранятся ли поставщики как элементы инфоблока или в отдельной таблице. Если поставщиков много или нужны детальные данные (API-ключ, email, формат заказа) — используйте отдельную таблицу bl_suppliers.
Структура bl_suppliers: id, name, order_method (api/email/edi), api_url, api_key, email, order_template, active.
Связь «товар — поставщик»: таблица bl_product_supplier с полями product_id, supplier_id, supplier_sku (артикул у поставщика), price, lead_time_days.
Передача заказа поставщику
При оплате заказа (OnSaleOrderPaid) или при ручном переводе в нужный статус — определяем поставщика по товарам корзины и передаём заказ:
$basket = $order->getBasket();
$supplierOrders = [];
foreach ($basket as $item) {
$supplierId = SupplierMap::getBySku($item->getProductId());
$supplierOrders[$supplierId][] = [
'sku' => SupplierMap::getSupplierSku($item->getProductId()),
'qty' => $item->getQuantity(),
'address' => $deliveryAddress,
'order_id' => $orderId,
];
}
foreach ($supplierOrders as $supplierId => $items) {
$supplier = SupplierTable::getById($supplierId)->fetch();
SupplierGateway::send($supplier, $items);
}
SupplierGateway::send() отправляет HTTP-запрос к API поставщика, или формирует письмо, или XML для EDI — в зависимости от order_method.
Получение трек-номера от поставщика
Поставщик присылает трек-номер обратно — через вебхук на эндпоинт вашего сайта или ответом на API-запрос. Создайте публичный обработчик /bitrix/supplier_webhook.php, который:
- Принимает
supplier_order_id,tracking_number,carrier - Находит связанный заказ Битрикс по
supplier_order_idчерез таблицуbl_supplier_orders - Записывает трек-номер в пользовательские поля заказа (
UF_TRACKING_NUMBER,UF_CARRIER) - Отправляет клиенту email с трек-номером через
\Bitrix\Main\Mail\Event::send() - Меняет статус заказа на «Передан в доставку»
Контроль сроков
Агент раз в 6 часов проверяет заказы поставщикам старше lead_time_days. Если поставщик не прислал трек-номер вовремя — создаётся задача менеджеру через CRM или отправляется уведомление администратору.
Что настраиваем
- Таблицы
bl_suppliersиbl_product_supplierс привязкой товаров к поставщикам - Обработчик события оплаты с логикой маршрутизации по поставщикам
- Класс
SupplierGatewayс адаптерами для API/email/EDI - Вебхук-эндпоинт для получения трек-номеров от поставщиков
- Агент контроля сроков и уведомлений о просрочках







