Представьте: интернет-магазин с тремя складами — Москва, Санкт-Петербург, Екатеринбург. Клиент заказывает три позиции, каждая на разных складах. Без консолидации система отправит три посылки с тройной стоимостью доставки. Клиент недоволен, маржа падает. Мы решаем эту задачу с помощью кастомной логики на Битрикс. За 10+ лет мы реализовали более 50 проектов по складской логистике, и наше решение стабильно работает под нагрузкой до 10 000 заказов в сутки. При этом стоимость доставки для клиентов снижается в среднем на 30%, а один из клиентов сэкономил 1,2 млн рублей за год за счет умного распределения.
Почему Битрикс не умеет консолидировать заказы по умолчанию?
Стандартный модуль «Склады» в 1С-Битрикс хранит остатки в b_catalog_store_product и резервирование в b_sale_reserve_quantity, но не предоставляет механизма автоматического выбора склада при оформлении заказа. Разработчику нужно вручную писать логику распределения. Мы используем \Bitrix\Catalog\StoreProductTable::getList() с фильтром по PRODUCT_ID и условием AMOUNT > 0, чтобы получить доступные остатки. Далее выбираем склад по стратегии, заданной в настройках. При этом учитываем не только наличие, но и расстояние до клиента, стоимость доставки, загруженность склада.
Стратегии консолидации: сравнение
| Стратегия | Скорость выполнения заказа | Количество посылок | Затраты на доставку |
|---|---|---|---|
| Максимальная скорость | Высокая (отправка сразу) | Много (по складам) | Высокие |
| Минимальное количество посылок | Низкая (ожидание сборки) | Одна | Низкие (одна доставка) |
| Гибридная | Средняя | Оптимальное | На 40% ниже максимальной |
Стратегия 1: Максимальная скорость — каждый товар отправляется с ближайшего склада сразу при наличии. Клиент получает несколько посылок. Реализация: при создании заказа агент немедленно разбивает его на подзаказы по складам.
Стратегия 2: Минимальное количество посылок — ждём сборки всего заказа на одном «главном» складе, куда перемещаются нужные позиции. Реализация: межскладское перемещение через b_catalog_store_document с типом M.
Стратегия 3: Гибридная — товары в наличии отправляем сразу, под заказ ждём. Оптимальный баланс между скоростью и стоимостью доставки. Гибридная стратегия позволяет сократить количество посылок в 2–3 раза по сравнению с максимальной скоростью, одновременно сохраняя время доставки на приемлемом уровне. По нашим данным, гибридная стратегия на 40% эффективнее по затратам на логистику.
Как мы реализуем разбивку заказа на подзаказы?
Создаём таблицу 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. Статусы подзаказов отслеживаются независимо. При изменении документа склада (например, отгрузка) агент обновляет статус соответствующего подзаказа.
Логика выбора склада настраивается через b_option: для каждого товара можно задать приоритет — сначала остатки на складе, потом товары под заказ. Если на складе недостаточно, ищем на других. Если нигде нет — ставим ожидание. Это позволяет менять стратегию без участия программиста.
Отображение клиенту: прозрачность логистики
В личном кабинете и письме о заказе показываем разбивку: Посылка 1 (склад Москва): 2 товара — отправлена, Посылка 2 (склад СПб): 1 товар — в пути. Компонент личного кабинета получает данные из bl_order_shipments и объединяет их с основным заказом по order_id. Это повышает доверие и снижает количество обращений в поддержку.
Процесс работы: этапы и сроки
| Этап | Длительность | Результат |
|---|---|---|
| Аудит схемы складов | 1–2 дня | Аналитическая записка |
| Проектирование стратегии | 1–2 дня | Техническое задание |
| Разработка агентов и таблиц | 2–5 дней | Рабочий код |
| Тестирование | 1–2 дня | Отчет о тестировании |
| Деплой и документирование | 1 день | Инструкции и обучение |
Что входит в работу?
- Аудит текущей складской схемы и остатков
- Проектирование стратегии консолидации под ваш бизнес
- Разработка таблицы
bl_order_shipmentsи агентов распределения - Настройка стратегии через
b_option(возможность переключения без программиста) - Реализация отображения подзаказов в личном кабинете и админке
- Интеграция с 1С через CommerceML для синхронизации остатков и отгрузок
- Документация по доработке и обучение ваших менеджеров
- Гарантия на код — 6 месяцев бесплатной поддержки
Сроки и стоимость
Сроки — от 5 до 14 рабочих дней в зависимости от количества складов и сложности интеграции. Стоимость рассчитывается индивидуально после аудита. Получите готовое решение под ключ: мы проанализируем вашу схему работы и предложим оптимальную стратегию консолидации. Свяжитесь с нашими специалистами — мы работаем с любыми конфигурациями Битрикс и гарантируем результат. Закажите аудит текущей складской схемы — это бесплатно и ни к чему не обязывает.







