Технические данные
- Опубликовано:
- 07.12.2021
- Обновлено:
- 08.09.2026
- Версия:
- 2.0.0
- Установлено:
- 100 - 499 раз
- Подходящие редакции:
- «Малый бизнес», «Бизнес»
- Адаптивность:
- Нет
- Поддержка Композита:
- Нет
- Совместимо с Сайты24
- Нет
Пользовательское соглашение
Описание
Модуль добавляет в интернет-магазин службы доставки с расчётом стоимости по адресу клиента. Адрес уточняется через сервис DaData: подсказки при вводе и определение координат. Тарифы DaData опубликованы на сайте сервиса.
Доступны три службы:
- МКАД — стоимость относительно Московской кольцевой автодороги;
- КАД — стоимость относительно кольцевой автодороги Санкт-Петербурга;
- Зоны на карте — фиксированная цена, если адрес попадает в полигон, который администратор нарисовал в админке.
Тарификация МКАД и КАД
- цена за километр за пределами кольца;
- таблица дистанций — разная стоимость для диапазонов, например от 0 до 20 км и от 21 до 40 км.
Можно задать стоимость доставки внутри кольца и при необходимости прибавлять её к цене за пределами МКАД или КАД.
Произвольные зоны
Функция выключена по умолчанию. После включения в настройках модуля администратор рисует зоны на Яндекс.Карте, задаёт название, цвет и цену. На оформлении заказа модуль берёт координаты адреса из DaData и определяет, в какую зону он попал. Если адрес вне всех зон, можно показать фиксированную цену.
Для рисования зон в админке нужен ключ JavaScript API Яндекс.Карт.
Нестандартная логика магазина
Расчёт можно дополнить своими обработчиками событий. Типичный пример: внутри МКАД доставка 300 ₽, а при сумме заказа от 3500 ₽ — бесплатно.
Модуль совместим со стандартным шаблоном компонента sale.order.ajax. Если шаблон оформления заказа сильно переработан, может понадобиться доработка.
ОБЯЗАТЕЛЬНЫЕ УСЛОВИЯ ДЛЯ КОРРЕКТНОЙ РАБОТЫ МОДУЛЯ
- в PHP включено расширение curl;
- на счёте DaData положительный баланс — тарифицируется каждый запрос;
- в свойствах заказа есть свойство с флагом «Является адресом», его поле выведено на странице оформления заказа;
- если модуль в демо-режиме, демо-период не должен быть просрочен;
- для зон: опция включена в настройках модуля и указан ключ JavaScript API Яндекс.Карт.
| 2.0.0 (08.09.2026) | Добавлена служба доставки по зонам на Яндекс.Карте.
|
| 1.2.0 (03.09.2026) | Ограничение подсказок адресов DaData по местоположению заказа.
|
| 1.1.8 (13.04.2026) |
|
| 1.1.7 (22.12.2023) |
|
| 1.1.6 (20.06.2023) |
|
| 1.1.5 (03.02.2023) |
|
| 1.1.4 (14.03.2022) |
|
| 1.1.3 (29.12.2021) |
|
| 1.1.2 (21.12.2021) |
|
| 1.1.1 (21.12.2021) |
|
| 1.1.0 (16.12.2021) |
|
| 1.0.3 (15.12.2021) |
|
| 1.0.2 (15.12.2021) |
|
| 1.0.1 (15.12.2021) |
|
1. Установите модуль из Маркетплейса.
2. Зарегистрируйтесь в сервисе DaData и получите API-ключ и секретный ключ в личном кабинете.
3. Откройте Настройки → Настройки продукта → Настройки модулей → Расчёт доставки: МКАД, КАД и произвольные зоны. На вкладке «Интеграция с Dadata» укажите API-ключ и секретный ключ.
В свойствах заказа должно быть свойство с флагом «Является адресом», его поле нужно вывести на страницу оформления заказа.
Служба МКАД или КАД
- Перейдите в Магазин → Настройки → Службы доставки, нажмите «Добавить» и выберите службу для МКАД или КАД.
- На вкладке «Общие настройки» при необходимости измените название и описание.
- На вкладке «Настройка обработчика» укажите цену доставки внутри кольца. Для расчёта за километр заполните цену за километр. Для таблицы дистанций отметьте чекбокс «Рассчитывать стоимость доставки на основе таблицы дистанций».
- Если включена таблица дистанций, откройте Магазин → Настройки → МКАД — стоимость доставки или КАД — стоимость доставки и задайте цены по диапазонам (например, 0–20 км и 21–40 км).
Служба по зонам на карте
- В настройках модуля на вкладке «Зоны доставки» включите расчёт по зонам и укажите ключ JavaScript API Яндекс.Карт (не ключ Геокодера и не ключ DaData). Ключ получают в кабинете разработчика Яндекса. При необходимости задайте центр карты.
- Сохраните настройки. В меню появится пункт Магазин → Настройки → Зоны доставки. Нарисуйте полигоны, укажите название и цену каждой зоны.
- В Магазин → Настройки → Службы доставки добавьте службу «Доставка по зонам на карте». На вкладке «Настройка обработчика» выберите, что делать, если адрес вне зон: фиксированная цена или сообщение (например, «по согласованию»).
Готово: модуль настроен.
Разработчикам
Можно изменить уже рассчитанную стоимость через события модуля 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;
}
} |