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

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

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

Этапы разработки

Последние работы

  • image_website-b2b-advance_0.webp
    Разработка сайта компании B2B ADVANCE
    1330
  • image_bitrix-bitrix-24-1c_fixper_448_0.webp
    Разработка веб-сайта для компании ФИКСПЕР
    924
  • 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 Appointment Booking Widget for a Medical Center
    672
  • image_bitrix-bitrix-24-1c_mirsanbel_458_0.webp
    Разработка на базе 1С Предприятие для компании МИРСАНБЕЛ
    815
  • image_crm_dolbimby_434_0.webp
    Разработка сайта на CRM Битрикс24 для компании DOLBIMBY
    714
  • image_crm_technotorgcomplex_453_0.webp
    Разработка на базе Битрикс24 для компании ТЕХНОТОРГКОМПЛЕКС
    1051

Когда интернет-магазин перерастает один склад — открывает распределительные центры или подключает розничные точки — встаёт задача: показывать покупателю реальные остатки и автоматически выбирать склад отгрузки?

Стандартный учёт в 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 рабочих дня. Стоимость рассчитывается индивидуально после знакомства с вашей конфигурацией. Закажите консультацию по настройке мультискладовости — проанализируем ваш магазин и предложим оптимальное решение. Свяжитесь с нами для оценки проекта.