Налаштування дропшипінгу на 1С-Бітрікс

Наша компанія займається розробкою, підтримкою та обслуговуванням рішень на Бітрікс та Бітрікс24 будь-якої складності. Від простих односторінкових сайтів до складних інтернет-магазинів, CRM систем з інтеграцією 1С та телефонії. Досвід розробників підтверджено сертифікатами від вендора.
Пропоновані послуги
Показано 1 з 1 послугУсі 1626 послуг
Налаштування дропшипінгу на 1С-Бітрікс
Проста
~1 робочий день
Часті питання

Наші компетенції:

Етапи розробки

Останні роботи

  • image_website-b2b-advance_0.png
    Розробка сайту компанії B2B ADVANCE
    1262
  • image_bitrix-bitrix-24-1c_fixper_448_0.png
    Розробка веб-сайту для компанії ФІКСПЕР
    851
  • 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
    585
  • image_bitrix-bitrix-24-1c_mirsanbel_458_0.webp
    Розробка на базі 1С Підприємство для компанії МИРСАНБЕЛ
    751
  • image_crm_dolbimby_434_0.webp
    Розробка сайту на CRM Бітрікс24 для компанії DOLBIMBY
    657
  • image_crm_technotorgcomplex_453_0.webp
    Розробка на базі Бітрікс24 для компанії ТЕХНОТОРГКОМПЛЕКС
    989

Налаштування дропшипінгу на 1С-Бітрікс

Магазин приймає замовлення, постачальник відвантажує напряму покупцю — логіка проста, реалізація ні. Стандартний модуль торгівлі 1С-Бітрікс не має вбудованої підтримки дропшипінгу: немає маршрутизації замовлень за постачальниками, немає синхронізації залишків у реальному часі, немає розподілу виплат. Усе це збирається з модулів і кастомного коду.

Архітектурна схема

Мінімальна дропшипінг-система на 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 місяці