Щодня диспетчер витрачає 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 день. Для замовлення інтеграції зв'яжіться з нами — допоможемо налаштувати автоматизацію доставки.







