+7 499 938 8452 пн.-пт. 10:00 – 17:00
Есть идея по этому модулю?

Опишите доработку или сценарий — обсудим вместе с другими клиентами.

Все идеи для обсуждения

Отправка доступна после входа или регистрации. Текст формы сохранится.

Расчёт доставки: МКАД, КАД и произвольные зоны

100 - 499 раз установок
Ставится из 1С-Битрикс Marketplace за пару минут — вкладка «Установка».

Скриншоты

Технические данные

Число установок:
100 - 499 раз
Дата обновления:
08.09.2026
Версия:
2.0.0
Адаптивность:
Нет
Поддержка композита:
Нет
Дата публикации:
07.12.2021

Совместимые редакции

Описание

Модуль добавляет в интернет-магазин службы доставки с расчётом стоимости по адресу клиента. Адрес уточняется через сервис DaData: подсказки при вводе и определение координат. Тарифы DaData опубликованы на сайте сервиса.

Доступны три службы:

  • МКАД — стоимость относительно Московской кольцевой автодороги;
  • КАД — стоимость относительно кольцевой автодороги Санкт-Петербурга;
  • Зоны на карте — фиксированная цена, если адрес попадает в полигон, который администратор нарисовал в админке.
Службы можно использовать по отдельности или вместе: например, МКАД для Москвы и зоны — для другого города.

Тарификация МКАД и КАД

  • цена за километр за пределами кольца;
  • таблица дистанций — разная стоимость для диапазонов, например от 0 до 20 км и от 21 до 40 км.

Можно задать стоимость доставки внутри кольца и при необходимости прибавлять её к цене за пределами МКАД или КАД.

Произвольные зоны

Функция выключена по умолчанию. После включения в настройках модуля администратор рисует зоны на Яндекс.Карте, задаёт название, цвет и цену. На оформлении заказа модуль берёт координаты адреса из DaData и определяет, в какую зону он попал. Если адрес вне всех зон, можно показать фиксированную цену.

Для рисования зон в админке нужен ключ JavaScript API Яндекс.Карт.

Нестандартная логика магазина

Расчёт можно дополнить своими обработчиками событий. Типичный пример: внутри МКАД доставка 300 ₽, а при сумме заказа от 3500 ₽ — бесплатно.

Модуль совместим со стандартным шаблоном компонента sale.order.ajax. Если шаблон оформления заказа сильно переработан, может понадобиться доработка.

ОБЯЗАТЕЛЬНЫЕ УСЛОВИЯ ДЛЯ КОРРЕКТНОЙ РАБОТЫ МОДУЛЯ

  • в PHP включено расширение curl;
  • на счёте DaData положительный баланс — тарифицируется каждый запрос;
  • в свойствах заказа есть свойство с флагом «Является адресом», его поле выведено на странице оформления заказа;
  • если модуль в демо-режиме, демо-период не должен быть просрочен;
  • для зон: опция включена в настройках модуля и указан ключ JavaScript API Яндекс.Карт.

1. Установите модуль из Маркетплейса.

2. Зарегистрируйтесь в сервисе DaData и получите API-ключ и секретный ключ в личном кабинете.

3. Откройте Настройки → Настройки продукта → Настройки модулей → Расчёт доставки: МКАД, КАД и произвольные зоны. На вкладке «Интеграция с Dadata» укажите API-ключ и секретный ключ.

В свойствах заказа должно быть свойство с флагом «Является адресом», его поле нужно вывести на страницу оформления заказа.

Служба МКАД или КАД

  1. Перейдите в Магазин → Настройки → Службы доставки, нажмите «Добавить» и выберите службу для МКАД или КАД.
  2. На вкладке «Общие настройки» при необходимости измените название и описание.
  3. На вкладке «Настройка обработчика» укажите цену доставки внутри кольца. Для расчёта за километр заполните цену за километр. Для таблицы дистанций отметьте чекбокс «Рассчитывать стоимость доставки на основе таблицы дистанций».
  4. Если включена таблица дистанций, откройте Магазин → Настройки → МКАД — стоимость доставки или КАД — стоимость доставки и задайте цены по диапазонам (например, 0–20 км и 21–40 км).

Служба по зонам на карте

  1. В настройках модуля на вкладке «Зоны доставки» включите расчёт по зонам и укажите ключ JavaScript API Яндекс.Карт (не ключ Геокодера и не ключ DaData). Ключ получают в кабинете разработчика Яндекса. При необходимости задайте центр карты.
  2. Сохраните настройки. В меню появится пункт Магазин → Настройки → Зоны доставки. Нарисуйте полигоны, укажите название и цену каждой зоны.
  3. В Магазин → Настройки → Службы доставки добавьте службу «Доставка по зонам на карте». На вкладке «Настройка обработчика» выберите, что делать, если адрес вне зон: фиксированная цена или сообщение (например, «по согласованию»).

Готово: модуль настроен.

Разработчикам

Можно изменить уже рассчитанную стоимость через события модуля tmg.kaddelivery:

  • OnDeliveryInMkadCalculated — стоимость внутри МКАД;
  • OnDeliveryOutMkadDistanceCalculated — за МКАД по таблице дистанций;
  • OnDeliveryOutMkadForKmCalculated — за МКАД по цене за километр;
  • OnDeliveryInKadCalculated — стоимость внутри КАД;
  • OnDeliveryOutKadDistanceCalculated — за КАД по таблице дистанций;
  • OnDeliveryOutKadForKmCalculated — за КАД по цене за километр;
  • OnDeliveryZoneCalculated — стоимость по зоне на карте (в том числе если адрес вне зон).

События МКАД и КАД получают три аргумента:

  • $order — экземпляр Bitrix\Sale\Order;
  • $arAddress — ответ DaData по адресу, см. документацию clean/address;
  • &$price — рассчитанная стоимость, её можно изменить.

OnDeliveryZoneCalculated получает четвёртый аргумент $zone — строка найденной зоны или null, если адрес вне зон. Порядок аргументов: $order, $arAddress, $zone, &$price.

Пример: внутри МКАД доставка бесплатна, если сумма заказа больше 3500 ₽. В файле /bitrix/php_interface/init.php или /local/php_interface/init.php:

\Bitrix\Main\EventManager::getInstance()->addEventHandler(
    'tmg.kaddelivery',
    'OnDeliveryInMkadCalculated',
    'OnDeliveryInMkadCalculatedHandler'
);
function OnDeliveryInMkadCalculatedHandler($order, $arAddress, &$amp;price)
{
    if ($order->getPrice() > 3500) {
        $price = 0;
    }
}
Служба поддержки support@tree-web.ru

Установите этот модуль прямо сейчас!

Для этого укажите адрес сайта:

пример: https://www.site.ru
Расчет стоимости доставки относительно МКАД (г. Москва) и КАД (г. Санкт-Петербург)
Расчет стоимости доставки относительно МКАД (г. Москва) и КАД (г. Санкт-Петербург)
7 990 руб

Каталог для ИИ