Настройка дропшиппинга на 1С-Битрикс

Наша компания занимается разработкой, поддержкой и обслуживанием решений на Битрикс и Битрикс24 любой сложности. От простых одностраничных сайтов до сложных интернет магазинов, CRM систем с интеграцией 1С и телефонии. Опыт разработчиков подтвержден сертификатами от вендора.
Предлагаемые услуги
Показано 1 из 1 услугВсе 1626 услуг
Настройка дропшиппинга на 1С-Битрикс
Простая
~1 рабочий день
Часто задаваемые вопросы
Наши компетенции:
Этапы разработки
Последние работы
  • image_website-b2b-advance_0.png
    Разработка сайта компании B2B ADVANCE
    1173
  • image_bitrix-bitrix-24-1c_fixper_448_0.png
    Разработка веб-сайта для компании ФИКСПЕР
    811
  • image_bitrix-bitrix-24-1c_development_of_an_online_appointment_booking_widget_for_a_medical_center_594_0.webp
    Разработка на базе Битрикс, Битрикс24, 1С для компании Development of an Online Appointment Booking Widget for a Medical Center
    564
  • image_bitrix-bitrix-24-1c_mirsanbel_458_0.webp
    Разработка на базе 1С Предприятие для компании МИРСАНБЕЛ
    745
  • image_crm_dolbimby_434_0.webp
    Разработка сайта на CRM Битрикс24 для компании DOLBIMBY
    655
  • image_crm_technotorgcomplex_453_0.webp
    Разработка на базе Битрикс24 для компании ТЕХНОТОРГКОМПЛЕКС
    976

Настройка дропшиппинга на 1С-Битрикс

Магазин принимает заказы, поставщик отгружает напрямую покупателю — логика простая, реализация нет. Стандартный модуль торговли Битрикс не имеет встроенной поддержки дропшиппинга: нет маршрутизации заказов по поставщикам, нет синхронизации остатков в реальном времени, нет разделения выплат. Всё это собирается из модулей и кастомного кода.

Архитектурная схема

Минимальная дропшиппинг-система на Битрикс держится на трёх элементах:

  1. Привязка товар → поставщик через свойство инфоблока или HL-блок
  2. Маршрутизация заказов — при создании заказа определяем, каким поставщикам передавать позиции
  3. Синхронизация остатков — поставщик передаёт актуальные данные по API или через файл

Привязка товаров к поставщикам

Два подхода. Первый — свойство SUPPLIER_ID в инфоблоке каталога (тип «Привязка к элементу» или «Список»). Быстро, но неудобно масштабировать.

Второй — HL-блок SupplierProduct:

Поле Тип Описание
UF_PRODUCT_ID integer ID товара в b_iblock_element
UF_SUPPLIER_ID integer ID поставщика (b_user)
UF_SUPPLIER_SKU string Артикул товара у поставщика
UF_SUPPLIER_PRICE float Закупочная цена
UF_STORE_ID integer Склад поставщика (b_catalog_store)

HL-блок удобнее: поддерживает множество поставщиков на один товар, хранит закупочные цены отдельно от розничных.

Обработчик событий создания заказа

При создании заказа обработчик на событие OnSaleOrderSaved разбивает позиции по поставщикам и отправляет уведомления:

// /local/php_interface/init.php
AddEventHandler('sale', 'OnSaleOrderSaved', ['\\Local\\Dropshipping\\OrderRouter', 'route']);
// /local/lib/Dropshipping/OrderRouter.php
namespace Local\Dropshipping;

use Bitrix\Main\Application;

class OrderRouter
{
    public static function route(\Bitrix\Sale\Order $order): void
    {
        $supplierItems = [];

        foreach ($order->getBasket() as $item) {
            $productId  = (int)$item->getProductId();
            $supplierId = self::getSupplierByProduct($productId);

            if ($supplierId) {
                $supplierItems[$supplierId][] = [
                    'product_id' => $productId,
                    'name'       => $item->getField('NAME'),
                    'quantity'   => $item->getQuantity(),
                    'price'      => $item->getPrice(),
                    'sku'        => self::getSupplierSku($productId, $supplierId),
                ];
            }
        }

        foreach ($supplierItems as $supplierId => $items) {
            self::notifySupplier($order, $supplierId, $items);
        }
    }

    private static function notifySupplier(\Bitrix\Sale\Order $order, int $supplierId, array $items): void
    {
        // Email-уведомление или POST на вебхук поставщика
        $supplier = self::getSupplierData($supplierId);
        if (!empty($supplier['WEBHOOK_URL'])) {
            self::sendWebhook($supplier['WEBHOOK_URL'], $order, $items);
        } else {
            self::sendEmail($supplier['EMAIL'], $order, $items);
        }
    }
}

Складской учёт по поставщикам

Каждый поставщик получает отдельный склад в b_catalog_store. Остатки хранятся в b_catalog_store_product. Это позволяет видеть не только общий остаток, но и остаток конкретного поставщика.

// Создание склада для нового поставщика
$storeId = \CCatalogStore::Add([
    'TITLE'       => 'Склад поставщика ' . $supplierId,
    'ACTIVE'      => 'Y',
    'XML_ID'      => 'supplier_' . $supplierId,
    'SORT'        => 100,
]);

Сроки реализации

Конфигурация Состав Срок
Базовая (1 поставщик, email-уведомления) HL-блок + обработчик + шаблон письма 3–5 дней
Стандартная (несколько поставщиков, вебхуки) + личный кабинет поставщика + API 2–3 недели
Полная (синхронизация в реальном времени, аналитика) + фид остатков + отчёты + разделение выплат 1–2 месяца