Налаштування мультискладовості в 1С-Бітрікс: підходи та рішення

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

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

Часті запитання

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

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

Коли інтернет-магазин переростає один склад — відкриває розподільчі центри або підключає роздрібні точки — постає завдання: показувати покупцеві реальні залишки та автоматично вибирати склад відвантаження?

Стандартний облік в 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. Аудит поточної конфігурації та виявлення вузьких місць
  2. Увімкнення та налаштування мультискладовості в адмінці
  3. Створення складів та прив'язка до служб доставки
  4. Написання обробника вибору складу під ваш бізнес-процес
  5. Доробка шаблонів компонентів для відображення залишків по складах
  6. Кастомна логіка резервування (якщо потрібна розбивка)
  7. Інтеграція з 1С: налаштування мапінгу та тестовий обмін
  8. Тестування всіх сценаріїв: замовлення, повернення, перерахунок залишків
  9. Надання документації по налаштуваннях та обробниках

Терміни виконання

Базове налаштування з двома-трьома складами, правилами відвантаження та відображенням на сайті — 4–8 годин. Якщо потрібна кастомна логіка вибору складу та інтеграція з 1С — 1–2 робочих дні. Вартість розраховується індивідуально після знайомства з вашою конфігурацією. Замовте консультацію з налаштування мультискладовості — проаналізуємо ваш магазин і запропонуємо оптимальне рішення. Зв'яжіться з нами для оцінки проекту.