Настройка зон доставки на 1С-Битрикс

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

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

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

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

  • image_website-b2b-advance_0.png
    Разработка сайта компании B2B ADVANCE
    1262
  • image_bitrix-bitrix-24-1c_fixper_448_0.png
    Разработка веб-сайта для компании ФИКСПЕР
    851
  • 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
    585
  • image_bitrix-bitrix-24-1c_mirsanbel_458_0.webp
    Разработка на базе 1С Предприятие для компании МИРСАНБЕЛ
    751
  • image_crm_dolbimby_434_0.webp
    Разработка сайта на CRM Битрикс24 для компании DOLBIMBY
    657
  • image_crm_technotorgcomplex_453_0.webp
    Разработка на базе Битрикс24 для компании ТЕХНОТОРГКОМПЛЕКС
    989

Настройка зон доставки на 1С-Битрикс

Зоны доставки в Битрикс — это механизм, позволяющий привязывать правила доставки (обработчики, тарифы, условия) к конкретным географическим регионам. Без грамотно настроенных зон один и тот же метод доставки будет предлагаться покупателям из Владивостока и Москвы с одинаковой ценой — что бессмысленно.

Как устроены зоны в Битрикс

Зоны доставки живут в таблице b_sale_location_group. Каждая зона — набор локаций (городов, регионов, стран) из справочника b_sale_location. Обработчик доставки привязывается к зонам через «Ограничения» (\Bitrix\Sale\Delivery\Restrictions).

Три уровня ограничений:

  • По локации (\Bitrix\Sale\Delivery\Restrictions\ByLocation) — зоны из справочника
  • По сумме заказа — минимальная/максимальная сумма для активации метода
  • По весу — диапазон веса отправления

Настройка через административный интерфейс

Стандартный путь: «Магазин → Настройки → Службы доставки». Для каждой службы:

  1. Вкладка «Ограничения» → «Добавить ограничение» → «Местоположение»
  2. Выбрать зоны, для которых метод доступен
  3. Для разных зон можно создать несколько экземпляров одного обработчика с разными тарифами

Типовая структура зон для интернет-магазина с доставкой по РФ:

Зона Состав Метод доставки
Москва Москва и область Курьер, СДЭК, Boxberry
Крупные города Города 500к+ СДЭК, Boxberry, ПЭК
Регионы РФ Остальная Россия Почта России, СДЭК
СНГ Беларусь, Казахстан, прочие Почта России (EMS)

Программная настройка зон

use Bitrix\Sale\Location\LocationTable;
use Bitrix\Sale\Location\GroupLocationTable;

// Создание группы (зоны)
$group = \Bitrix\Sale\Location\GroupTable::add([
    'CODE' => 'ZONE_MOSCOW_REGION',
]);
$groupId = $group->getId();

// Добавление локаций в группу
$locationIds = LocationTable::getList([
    'filter' => ['NAME.NAME' => ['Москва', 'Московская область']],
    'select' => ['ID'],
])->fetchAll();

foreach ($locationIds as $loc) {
    GroupLocationTable::add([
        'LOCATION_ID' => $loc['ID'],
        'GROUP_ID'    => $groupId,
    ]);
}

Динамические зоны и кастомные ограничения

Стандартных ограничений по локации не всегда достаточно. Пример: зона «Москва в пределах МКАД» — её в справочнике нет. Решение: кастомный класс ограничения.

class ByMoscowRingRoadRestriction extends \Bitrix\Sale\Delivery\Restrictions\Base
{
    public static function getSortedCode(): string { return 'BY_MKAD'; }

    public static function check(array $params, int $serviceId): bool
    {
        $locationCode = $params['LOCATION'] ?? '';
        // Проверяем по коду КЛАДР или собственной геобазе
        return self::isInsideMkad($locationCode);
    }

    public static function getClassTitle(): string { return 'Внутри МКАД'; }
}

Класс регистрируется в init.php:

\Bitrix\Sale\Delivery\Restrictions\Manager::register(ByMoscowRingRoadRestriction::class);

Работа с локациями покупателя

При оформлении заказа Битрикс определяет локацию через свойство заказа с типом LOCATION. Из этого свойства берётся код локации, который сверяется с зонами обработчиков. Если локация не заполнена — все обработчики доступны.

// Получить текущую локацию из заказа
$locationProp = $order->getPropertyCollection()->getDeliveryLocation();
$locationCode = $locationProp?->getValue();

// Найти зоны, в которые попадает локация
$groups = \Bitrix\Sale\Location\GroupLocationTable::getList([
    'filter' => ['LOCATION.CODE' => $locationCode],
    'select' => ['GROUP_ID'],
])->fetchAll();

Сроки

Состав Срок
Стандартная настройка зон через админку 1 день
+ Программная настройка + кастомные ограничения 2–3 дня