Налаштування мультискладовості в 1С-Бітрікс
Коли у магазину кілька точок зберігання — центральний склад, регіональні, роздрібні точки — та потрібно показувати покупцеві доступність товару за кожною з них або автоматично вибирати склад відгрузки при замовленні, стандартного одного складу недостатньо. Мультискладовість в Бітрікс — частина модуля catalog, вимагає ліцензії не нижче «Малий бізнес».
Включення мультискладовості
Магазин → Каталог → Налаштування → вкладка "Склад":
- Використовувати склади — включити
- Створити мінімум два склади (
Магазин → Каталог → Склади)
Після включення остатки зберігаються в b_catalog_store_product з розбивкою по STORE_ID. Таблиця містить поля: PRODUCT_ID, STORE_ID, AMOUNT (остаток), QUANTITY_RESERVED.
Налаштування складів відгрузки в замовленнях
У налаштуваннях служби доставки (Магазин → Налаштування → Служби доставки → [редагування]) указується склад, з якого виробляється відгрузка. Це дозволяє різним службам доставки працювати з різними складами.
Для більш гнучкого управління — правила вибору складу налаштовуються через обробник события OnSaleOrderBeforeSaved:
AddEventHandler('sale', 'OnSaleOrderBeforeSaved', function(\Bitrix\Main\Event $event) {
$order = $event->getParameter('ENTITY');
// логіка вибору складу відгрузки на основі складу замовлення, регіону тощо
});
Відображення остатків по складам на публічній частині
У компоненті catalog.element (bitrix:catalog.element) параметр USE_STORE_QUANTITY — включити відображення остатків по складам. Шаблон компонента отримує змінну $arResult['STORE_QUANTITY'] — масив остатків за кожним складом.
Для виводу остатків використовується допоміжний метод:
$storeData = \Bitrix\Catalog\StoreProductTable::getList([
'filter' => ['=PRODUCT_ID' => $productId],
'select' => ['STORE_ID', 'AMOUNT', 'STORE_TITLE' => 'STORE.TITLE'],
'runtime' => [
new \Bitrix\Main\ORM\Fields\Relations\Reference(
'STORE', \Bitrix\Catalog\StoreTable::class,
\Bitrix\Main\ORM\Query\Join::on('this.STORE_ID', 'ref.ID')
)
]
]);
Резервування при мультискладовості
Резерви в b_sale_order_reserve містять поле STORE_ID — резерв прив'язаний до конкретного складу. При автоматичному резервуванні Бітрікс вибирає склад за пріоритетом (поле SORT в b_catalog_store). Якщо на першому складі недостатньо кількості — за замовчуванням не розбиває замовлення на кілька складів: це вимагає кастомної логіки.
Синхронізація остатків з 1С
При обмені з 1С через CommerceML 2 остатки передаються в секції <Склади> файла обміну. XML_ID складів в Бітрікс повинні збігатися з ідентифікаторами складів в 1С. Маппінг складів налаштовується в /bitrix/admin/1c_exchange.php.
Часові рамки виконання
Налаштування мультискладовості з двома-трьома складами, правилами відгрузки та відображенням на сайті — 4–8 годин. Якщо потрібна кастомна логіка вибору складу та інтеграція з 1С — 1–2 робочі дні.







