Каждый день диспетчер тратит 2-3 часа на ручное планирование маршрутов. Курьеры не успевают доставить все заказы в срок, повторные выезды увеличивают расходы на топливо. Интеграция 1С-Битрикс с API сервисов оптимизации маршрутов решает эти проблемы: алгоритмы находят оптимальный маршрут за секунды, учитывая пробки, временные окна и загрузку автомобиля. Наша команда выполнила 30+ таких интеграций для бизнеса от 1 до 100 машин. Опыт показывает, что после внедрения время планирования сокращается до 10 минут, а пробег — на 15-25%. Гарантируем стабильную работу интеграции на всех этапах.
Задача оптимизации маршрутов (Vehicle Routing Problem, VRP) — NP-трудная, согласно Wikipedia. На практике справляются коммерческие сервисы: Яндекс.Маршрутизация, Route4Me, Routific, OptimoRoute. Они обрабатывают 10 000 точек за секунды — в 10 раз быстрее самописных решений. Бесплатный OR-Tools от Google тоже даёт отличные результаты. Мы интегрируем любой из них в вашу CRM на Битрикс через универсальный адаптер. Сертифицированные инженеры подберут подходящий сервис под ваш бюджет.
Проблемы, которые решаем
- Долгое ручное планирование: логист тратит 2-3 часа утром. Автоматизация сокращает это до 10 минут.
- Перегруженные маршруты: без оптимизации курьер проезжает лишние 50 км в день. Оптимизатор снижает пробег на 15-25%, экономя затраты на топливо.
- Ошибки геокодирования: если адрес не преобразован в координаты, машина едет не туда. Мы геокодируем при импорте заказа, используя свежие базы.
Экономия времени диспетчера — 2 часа в день. Снижение затрат на логистику — до 25%.
Как выбрать сервис оптимизации под бизнес?
| Сервис | Особенности | Модель оплаты |
|---|---|---|
| Яндекс.Маршрутизация | Российская инфраструктура, хорошая геокодинговая база | Запросы + склад курьеров |
| Route4Me | Гибкий API, временные окна, мультидепо | Подписка |
| Routific | Простое API, подходит для малого автопарка | Подписка от 5 машин |
| OptimoRoute | Приоритеты, компетенции водителей | Подписка |
| OR-Tools | Бесплатный, self-hosted, требует Python-сервер | Свои серверы |
Выбор зависит от числа машин и объёма заказов. Для 1-3 машин — Routific или Яндекс, для 10+ — Route4Me с мультидепо. Мы помогаем подобрать вариант.
Архитектура интеграции
Цикл работы:
- Утром агент собирает заказы на сегодня со статусом «К доставке» из
b_sale_order. - Формирует список точек с адресами, координатами и временными окнами.
- Отправляет запрос в API оптимизатора.
- Сохраняет маршруты в
bl_delivery_routes. - Назначает водителей через CRM или вручную.
- При завершении доставки вебхук от оптимизатора обновляет статусы заказов.
Кейс: автоматизация для сети доставки
Для сети из 15 машин с мультидепо интегрировали Route4Me. Время планирования сократилось с 3 часов до 15 минут, пробег — на 20%. Клиент получил карту маршрутов в админке и автоматические уведомления клиентам.Почему интеграция через адаптер — надёжный способ?
Реализуем паттерн адаптер — один интерфейс, несколько реализаций:
interface RouteOptimizerInterface
{
public function optimize(array $depot, array $vehicles, array $orders): array;
}
class YandexRouteOptimizer implements RouteOptimizerInterface
{
public function optimize(array $depot, array $vehicles, array $orders): array
{
$payload = [
'depot' => $depot,
'vehicles' => $vehicles,
'orders' => array_map(fn($o) => [
'id' => (string)$o['order_id'],
'point' => ['lat' => $o['lat'], 'lon' => $o['lon']],
'time_window' => [$o['time_from'], $o['time_to']],
'service_duration' => 300,
], $orders),
];
$http = new \Bitrix\Main\Web\HttpClient();
$http->setHeader('Content-Type', 'application/json');
$http->setHeader('X-Ya-Courier-Request-Id', uniqid());
$response = $http->post(
'https://courier.yandex.ru/api/v1/companies/' . $this->companyId . '/routes',
json_encode($payload)
);
return json_decode($response, true);
}
}
class Route4MeOptimizer implements RouteOptimizerInterface
{
public function optimize(array $depot, array $vehicles, array $orders): array
{
// Route4Me-специфичная логика
}
}
Конкретная реализация выбирается через фабричный метод, конфигурируется в b_option.
Преобразование данных заказа
Ключевой момент — корректное преобразование данных Битрикс в формат API оптимизатора. Адрес нужно геокодировать в координаты (если не сделано при заказе), временные окна — конвертировать в формат оптимизатора. Данные о товарах могут импортироваться через CommerceML, что упрощает загрузку веса и объёма.
function buildOrderPoint(\Bitrix\Sale\Order $order): array
{
$props = $order->getPropertyCollection();
return [
'order_id' => $order->getId(),
'lat' => (float)$props->getItemByOrderPropertyCode('LAT')?->getValue(),
'lon' => (float)$props->getItemByOrderPropertyCode('LON')?->getValue(),
'time_from' => $this->toUnix($props->getItemByOrderPropertyCode('DELIVERY_TIME_FROM')?->getValue()),
'time_to' => $this->toUnix($props->getItemByOrderPropertyCode('DELIVERY_TIME_TO')?->getValue()),
'weight_kg' => $this->getBasketWeight($order->getBasket()),
'volume_m3' => $this->getBasketVolume($order->getBasket()),
'priority' => (int)$props->getItemByOrderPropertyCode('DELIVERY_PRIORITY')?->getValue(),
];
}
Сохранение и отображение маршрутов
Структура таблицы bl_delivery_routes:
route_id — ID маршрута от оптимизатора
route_date — дата доставки
vehicle_id — ID транспортного средства
driver_id — CRM-контакт водителя
stops_json — JSONB упорядоченный список остановок
total_distance — общий пробег в км
estimated_time — предполагаемое время в минутах
status — planned / in_progress / completed
created_at
Маршрут отображается на карте в административном разделе через Яндекс.Карты API или Leaflet.js. Водителю — ссылка с waypoints.
Обновление статусов заказов
По завершении доставки в точке оптимизатор (или водитель через мобильное приложение) отправляет событие. Вебхук Битрикс обновляет статус конкретного заказа:
// /bitrix/route_webhook.php
$data = json_decode(file_get_contents('php://input'), true);
foreach ($data['completed_stops'] as $stop) {
$order = \Bitrix\Sale\Order::load((int)$stop['order_id']);
if ($order) {
$order->setField('STATUS_ID', 'F');
$order->save();
// Отправка письма клиенту о доставке
}
}
Сроки выполнения по масштабу
| Масштаб | Особенности | Сроки |
|---|---|---|
| Малый (1–3 машины) | Один адаптер, ручное назначение водителей | 3–5 дней |
| Средний (5–20 машин) | Автоназначение, карта маршрутов, вебхуки статусов | 8–12 дней |
| Крупный (20+ машин) | Мультидепо, компетенции водителей, реалтайм-трекинг | 20–35 дней |
Что входит в работу
- Разработка интерфейса
RouteOptimizerInterfaceс адаптерами под ваши сервисы (1-3 дня на первый адаптер) - Настройка агента сборки заказов и отправки в оптимизатор утром рабочего дня
- Создание таблицы
bl_delivery_routesс хранением маршрутов и статусов - Реализация карты маршрутов в административном разделе
- Настройка вебхука обновления статусов заказов при выполнении доставки
- Документация по архитектуре и обучение логистов (1-2 часа)
- Поддержка 30 дней после сдачи
Интеграция выполняется под ключ. Оценим ваш проект за 1 день. Для заказа интеграции свяжитесь с нами — поможем настроить автоматизацию доставки.







