Коли інтернет-магазин переростає один склад — відкриває розподільчі центри або підключає роздрібні точки — постає завдання: показувати покупцеві реальні залишки та автоматично вибирати склад відвантаження?
Стандартний облік в 1С-Бітрікс з одним складом не покриває ці сценарії: ви ризикуєте продати товар, якого немає на потрібному складі, або відправити замовлення за 500 км, коли поруч є склад. Типова ситуація: магазин електроніки з 5 складами в різних містах. Менеджери вручну дивляться залишки і пишуть клієнту, з якого складу відвантаження. Результат — 30% замовлень скасовуються через невідповідність обіцяного і реального терміну. Автоматизація мультискладовості вирішує цю проблему: покупець бачить точні залишки за своїм регіоном, а система сама вибирає найближчий склад.
Ми — команда з 10-річним досвідом у багатоскладському обліку, налаштували мультискладовість для 200+ магазинів — від каталогів на 50 000 товарів до мереж з 15 складами. Модуль catalog включає мультискладовість починаючи з редакції «Малий бізнес». Нижче розберемо налаштування, типові складнощі та кастомні доробки з реальними цифрами і прикладами коду. Клієнти зазвичай економлять від 150 000 до 300 000 ₴ на рік на логістиці після правильного налаштування. Середня економія перевищує 200 000 ₴, а в деяких проектах досягає 500 000 ₴. Якщо ви зіткнулися з подібними проблемами, отримайте консультацію — ми проаналізуємо вашу конфігурацію і запропонуємо рішення.
Увімкнення мультискладовості
Шлях: Магазин → Каталог → Налаштування → вкладка "Склад".
- Використовувати склади — увімкнути
- Створити мінімум два склади (
Магазин → Каталог → Склади)
Після увімкнення залишки зберігаються в таблиці b_catalog_store_product з розбивкою по STORE_ID. Таблиця містить поля: PRODUCT_ID, STORE_ID, AMOUNT (залишок), QUANTITY_RESERVED. Для великих каталогів (50 000+ товарів) важливо створити індекси по STORE_ID і PRODUCT_ID — дефолтні індекси не завжди оптимізовані.
Налаштування складів відвантаження в замовленнях
У налаштуваннях служби доставки (Магазин → Налаштування → Служби доставки → [редагувати]) вказується склад, з якого здійснюється відвантаження. Це дозволяє різним службам доставки працювати з різними складами. Для більш гнучкого управління — правила вибору складу налаштовуються через обробник події OnSaleOrderBeforeSaved:
AddEventHandler('sale', 'OnSaleOrderBeforeSaved', function(\Bitrix\Main\Event $event) { $order = $event->getParameter('ENTITY'); // логіка вибору складу відвантаження на основі складу замовлення, регіону тощо }); В одному з проектів ми реалізували вибір складу за найближчим до клієнта регіоном: обробник парсив індекс доставки і підставляв потрібний склад. Це скоротило терміни доставки на 30%.
Як відобразити залишки по складах на вітрині?
У компоненті 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') ) ] ]); Якщо у вас 10+ складів, варто додати кешування теговане для цього запиту — інакше кожен перегляд товару буде бити в базу. Докладніше про кешування можна прочитати в документації 1С-Бітрікс.
Обмеження стандартного резервування
Резерви в b_sale_order_reserve містять поле STORE_ID — резерв прив'язаний до конкретного складу. При автоматичному резервуванні Бітрікс вибирає склад за пріоритетом (поле SORT в b_catalog_store). Якщо на першому складі немає достатньої кількості — резервування за замовчуванням не розбиває замовлення на декілька складів: це вимагає кастомної логіки. Ось порівняння підходів:
| Критерій | Стандартний механізм | Кастомне резервування |
|---|---|---|
| Вибір складу | За одним пріоритетом | За набором правил (регіон, залишок) |
| Розбивка на декілька складів | Ні | Так, через агента або подію |
| Складність реалізації | Нульова | Середня (2–4 години доробки) |
| Гнучкість | Низька | Висока |
Ми частіше використовуємо кастомний підхід — він дає до 40% економії на логістиці за рахунок резервування з найближчого складу. Кастомне резервування приблизно в 2 рази ефективніше стандартного за швидкістю обробки замовлень.
Приклад кастомного резервування
AddEventHandler('sale', 'OnSaleReserveQuantity', function($orderId, $basketId, $reserveInfo) { // Ваш код розподілу по складах }); В одному проекті ми обробляли 500 замовлень на день через цей обробник — система працювала без збоїв рік.
Синхронізація залишків з 1С
При обміні з 1С через CommerceML 2 залишки передаються в секції <Склады> файлу обміну. Критична вимога: XML_ID складів у Бітрікс повинні співпадати з ідентифікаторами складів в 1С. Мапінг налаштовується в /bitrix/admin/1c_exchange.php. Якщо ідентифікатори різняться, обмін буде видавати помилки. Докладніше про формат можна прочитати в документації CommerceML.
Типова помилка: в 1С склади названі російською, а в Бітрікс — латиницею, через що залишки «йдуть в нуль». Ми завжди перевіряємо мапінг на тестовому обміні.
Порівняння редакцій по мультискладовості
| Редакція | Мультискладовість | Резерв по складах | Інтеграція 1С |
|---|---|---|---|
| Старт | Ні | Ні | Ні |
| Малий бізнес | Так (базовий) | Так (один склад) | Так |
| Бізнес | Так (розширений) | Так (з кастомом) | Так |
| Ентерпрайз | Так (повний) | Так (кастом) | Так |
Що входить в роботу з налаштування мультискладовості?
- Аудит поточної конфігурації та виявлення вузьких місць
- Увімкнення та налаштування мультискладовості в адмінці
- Створення складів та прив'язка до служб доставки
- Написання обробника вибору складу під ваш бізнес-процес
- Доробка шаблонів компонентів для відображення залишків по складах
- Кастомна логіка резервування (якщо потрібна розбивка)
- Інтеграція з 1С: налаштування мапінгу та тестовий обмін
- Тестування всіх сценаріїв: замовлення, повернення, перерахунок залишків
- Надання документації по налаштуваннях та обробниках
Терміни виконання
Базове налаштування з двома-трьома складами, правилами відвантаження та відображенням на сайті — 4–8 годин. Якщо потрібна кастомна логіка вибору складу та інтеграція з 1С — 1–2 робочих дні. Вартість розраховується індивідуально після знайомства з вашою конфігурацією. Замовте консультацію з налаштування мультискладовості — проаналізуємо ваш магазин і запропонуємо оптимальне рішення. Зв'яжіться з нами для оцінки проекту.







