Настройка региональных складов и доставки 1С-Битрикс

Наша компания занимается разработкой, поддержкой и обслуживанием решений на Битрикс и Битрикс24 любой сложности. От простых одностраничных сайтов до сложных интернет магазинов, CRM систем с интеграцией 1С и телефонии. Опыт разработчиков подтвержден сертификатами от вендора.
Предлагаемые услуги
Показано 1 из 1 услугВсе 1626 услуг
Настройка региональных складов и доставки 1С-Битрикс
Простая
~1 рабочий день
Часто задаваемые вопросы
Наши компетенции:
Этапы разработки
Последние работы
  • image_website-b2b-advance_0.png
    Разработка сайта компании B2B ADVANCE
    1173
  • image_bitrix-bitrix-24-1c_fixper_448_0.png
    Разработка веб-сайта для компании ФИКСПЕР
    811
  • 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
    564
  • image_bitrix-bitrix-24-1c_mirsanbel_458_0.webp
    Разработка на базе 1С Предприятие для компании МИРСАНБЕЛ
    745
  • image_crm_dolbimby_434_0.webp
    Разработка сайта на CRM Битрикс24 для компании DOLBIMBY
    655
  • image_crm_technotorgcomplex_453_0.webp
    Разработка на базе Битрикс24 для компании ТЕХНОТОРГКОМПЛЕКС
    976

Настройка региональных складов и доставки 1С-Битрикс

Когда у интернет-магазина несколько складов в разных городах, простая схема «один склад — одна доставка» перестаёт работать. Покупатель из Екатеринбурга должен получить доставку с уральского склада, а не ждать отправки из Москвы. Битрикс предоставляет инструменты для такой архитектуры, но их правильная конфигурация требует понимания взаимосвязей между модулями sale, catalog и службами доставки.

Склады в Битрикс

Склады управляются через модуль торгового каталога: Торговый каталог → Склады. Каждый склад — запись в таблице b_catalog_store с полями: адрес, GPS-координаты, признак «активен», связь с местоположением.

Остатки по складам хранятся в b_catalog_store_product:

SELECT cs.title, csp.amount, csp.quantity_reserved
FROM b_catalog_store_product csp
JOIN b_catalog_store cs ON cs.id = csp.store_id
WHERE csp.product_id = 12345;

Резервирование при добавлении в корзину или оформлении заказа — настраивается в Торговый каталог → Настройки → Резервирование.

Логика выбора склада для заказа

Битрикс не выбирает склад автоматически на основе геолокации покупателя из коробки — это кастомная логика. Реализуется через обработчик события перед созданием отгрузки:

AddEventHandler('sale', 'OnBeforeShipmentSave', 'SelectOptimalStore');

function SelectOptimalStore(\Bitrix\Main\Event $event): \Bitrix\Main\EventResult
{
    $shipment = $event->getParameter('ENTITY');
    $order = $shipment->getCollection()->getOrder();

    // Получаем регион покупателя из адреса доставки
    $propertyCollection = $order->getPropertyCollection();
    $cityProp = $propertyCollection->getDeliveryLocation();
    $cityId = $cityProp ? $cityProp->getValue() : null;

    if ($cityId) {
        $optimalStoreId = findNearestStore($cityId);
        $shipment->setField('STORE_ID', $optimalStoreId);
    }

    return new \Bitrix\Main\EventResult(\Bitrix\Main\EventResult::SUCCESS);
}

Функция findNearestStore реализуется через таблицу b_catalog_store с фильтрацией по географическому признаку или по заранее созданному маппингу «регион → склад».

Региональные службы доставки

Для каждого склада/региона настраивают свой набор служб доставки. Технически — создают несколько экземпляров одной службы с разными параметрами:

  • CDEK «Москва» — from_location: 44 (код Москвы в CDEK)
  • CDEK «Екатеринбург» — from_location: 270 (код Екатеринбурга)

Условие показа службы доставки задаётся через правила: Магазин → Настройки → Правила доставки. Привязка к складу:

// Кастомный обработчик доставки с привязкой к складу
class RegionalDeliveryHandler extends \Bitrix\Sale\Delivery\Services\Base
{
    public function isCompatible(\Bitrix\Sale\Shipment $shipment): bool
    {
        $storeId = $shipment->getField('STORE_ID');
        return in_array($storeId, $this->arParams['ALLOWED_STORES']);
    }

    protected function calculateConcrete(\Bitrix\Sale\Shipment $shipment): \Bitrix\Sale\Result
    {
        // Расчёт стоимости с учётом склада-источника
        $fromCity = $this->getStoreCityCode($shipment->getField('STORE_ID'));
        return $this->callDeliveryApi($fromCity, $shipment);
    }
}

Остатки и доступность

Важный момент при региональных складах: покупатель видит «в наличии», но на ближайшем к нему складе товара нет — он есть только на московском. Решение — показывать остатки конкретного склада или суммарные с пометкой срока доставки:

$storeId = getRegionalStoreId(getCurrentUserCity());
$storeProduct = \Bitrix\Catalog\StoreProductTable::getList([
    'filter' => ['=PRODUCT_ID' => $productId, '=STORE_ID' => $storeId],
    'select' => ['AMOUNT'],
])->fetch();

$isAvailable = $storeProduct && $storeProduct['AMOUNT'] > 0;

Сроки

Конфигурация Срок
Настройка складов + маппинг регион→склад 1–2 дня
Автовыбор склада + региональные службы доставки 3–5 дней
Полная схема с резервированием и синхронизацией 1С 5–10 дней