Налаштування консолідації замовлень із різних складів 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С-Bitrix

Клієнт замовив три товари: один є на складі А, інший на складі Б, третій потрібно везти з віддаленого складу В. Задача — або чекати складання всього замовлення та відправити однією посилкою, або відправити частинами. Bitrix не управляє цим автоматично — логіка консолідації будується поверх стандартної багатоскладської системи.

Багатоскладовість у Bitrix

Склади зберігаються в b_catalog_store, залишки — в b_catalog_store_product. Резервування при замовленні працює через b_sale_reserve_quantity. При оформленні замовлення Bitrix не вибирає склад автоматично — це робиться вручну або через кастомну логіку.

Для визначення, з якого складу везти кожен товар, використовуйте \Bitrix\Catalog\StoreProductTable::getList() з фільтром по PRODUCT_ID та умовою AMOUNT > 0.

Стратегії консолідації

Стратегія 1: Максимальна швидкість — кожен товар відправляється з найближчого складу одразу при наявності. Клієнт отримує кілька посилок. Реалізація: при створенні замовлення агент негайно розбиває його на підзамовлення по складам.

Стратегія 2: Мінімальне число посилок — чекаємо складання всього замовлення на одному «головному» складі, куди перемішуються потрібні позиції. Реалізація: міжскладське перемішення через b_catalog_store_document з типом M.

Стратегія 3: Гібридна — товари в наявності відправляємо одразу, під замовлення чекаємо.

Розбивка замовлення на підзамовлення

Створіть таблицю bl_order_shipments з полями order_id, store_id, status, items_json. При підтвердженні замовлення агент аналізує кошик:

foreach ($basket as $item) {
    $stores = StoreProductTable::getList([
        'filter' => ['PRODUCT_ID' => $item->getProductId(), '>AMOUNT' => 0],
        'order'  => ['AMOUNT' => 'DESC'],
    ])->fetchAll();

    $bestStore = $stores[0]['STORE_ID'] ?? $defaultStoreId;

    $shipments[$bestStore][] = [
        'product_id' => $item->getProductId(),
        'quantity'   => $item->getQuantity(),
    ];
}

Кожна група записується в bl_order_shipments. Статусу підзамовлень відслідковуються незалежно.

Відображення клієнту

У особистому кабінеті та листі про замовлення показуйте розбивку: «Посилка 1 (склад Москва): 2 товари — відправлена», «Посилка 2 (склад СПб): 1 товар — у дорозі». Компонент особистого кабінету отримує дані з bl_order_shipments та об'єднує їх з основним замовленням за order_id.

Що налаштовуємо

  • Таблицю bl_order_shipments для зберігання інформації про підзамовлення по складам
  • Агент аналізу наявності та розподілення товарів по складам
  • Стратегію консолідації (налаштовується в b_option)
  • Оновлення статусів підзамовлень при змінах документів складу
  • Відображення підзамовлень у особистому кабінеті клієнта та адміністративному інтерфейсі