Оптимизация маршрутов курьерской доставки в 1С-Битрикс

Представьте: курьерская служба обрабатывает 20 заказов ежедневно. Диспетчер тратит полчаса на построение маршрута, но половина клиентов всё равно недовольна опозданиями. В чём проблема? Чаще всего в ручном планировании и отсутствии точных данных о пробках и временных окнах. Интеграция 1С-Битрикс с с
Услуги, которые мы предлагаем
Показано 1 из 1Все 1626 услуг
Оптимизация маршрутов курьерской доставки в 1С-Битрикс
Простой
~1 день

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

Часто задаваемые вопросы

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

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

Представьте: курьерская служба обрабатывает 20 заказов ежедневно. Диспетчер тратит полчаса на построение маршрута, но половина клиентов всё равно недовольна опозданиями. В чём проблема? Чаще всего в ручном планировании и отсутствии точных данных о пробках и временных окнах. Интеграция 1С-Битрикс с сервисами маршрутизации — Яндекс.Маршрутизация или OR-Tools — решает эту задачу за 5 секунд. Пробег сокращается на 33%, а доля своевременных доставок вырастает с 60% до 95%. Это не просто экономия топлива — это выполнение обязательств перед клиентами и снижение операционных затрат.

Как интеграция решает задачу коммивояжёра?

Суть проста: Битрикс собирает данные о заказах — адреса, временные окна, вес. Внешний сервис решает NP-трудную задачу коммивояжёра — строит оптимальный порядок объезда. Результат передаётся обратно в виде маршрутных листов. Мы делаем эту связь прозрачной и надёжной. Производительность: 20 точек обрабатываются за 5 секунд, а ручное планирование занимает 30 минут — разница в 360 раз.

Подробнее о задаче коммивояжёраЗадача коммивояжёра (TSP) — классическая NP-трудная проблема поиска кратчайшего маршрута, проходящего через все заданные точки ровно один раз. В контексте доставки она решается с учётом временных окон и вместимости транспорта, что делает её ещё более сложной (VRPTW). Современные алгоритмы, такие как муравьиные колонии или линейное программирование, позволяют находить субоптимальные решения за секунды.

Шаг 1: Подготовка данных

Для построения маршрута нужен список адресов с координатами и временными окнами. Адреса берутся из свойств заказов:

$deliveries = \Bitrix\Sale\OrderTable::getList([ 'filter' => [ 'STATUS_ID' => 'TD', // статус "к доставке сегодня" '>=DATE_STATUS' => new \Bitrix\Main\Type\Date(), ], 'select' => ['ID'], ])->fetchAll(); $points = []; foreach ($deliveries as $row) { $order = \Bitrix\Sale\Order::load($row['ID']); $props = $order->getPropertyCollection(); $points[] = [ 'order_id' => $row['ID'], 'address' => $props->getItemByOrderPropertyCode('ADDRESS')?->getValue(), 'lat' => $props->getItemByOrderPropertyCode('LAT')?->getValue(), 'lon' => $props->getItemByOrderPropertyCode('LON')?->getValue(), 'time_from' => $props->getItemByOrderPropertyCode('DELIVERY_TIME_FROM')?->getValue(), 'time_to' => $props->getItemByOrderPropertyCode('DELIVERY_TIME_TO')?->getValue(), 'weight' => $this->getOrderWeight($order), ]; } 

Координаты (LAT/LON) нужно получить при оформлении заказа — через геокодинг API Яндекса или Google по введённому адресу. Сохраните их в пользовательских свойствах заказа.

Почему без геокодирования не получить точный маршрут?

Без координат сервис оптимизации не знает, где конкретно находится точка. Геокодирование превращает текстовый адрес в широту/долготу. Мы реализуем его прямо в форме заказа — AJAX-запрос к геокодеру при заполнении поля адреса. Вот как это выглядит:

fetch(`https://geocode-maps.yandex.ru/1.x/?apikey=KEY&format=json&geocode=${encodeURIComponent(address)}`) .then(r => r.json()) .then(data => { const pos = data.response.GeoObjectCollection.featureMember[0]?.GeoObject?.Point?.pos; if (pos) { const [lon, lat] = pos.split(' '); document.getElementById('lat-field').value = lat; document.getElementById('lon-field').value = lon; } }); 

Координаты молча сохраняются в скрытые поля формы и попадают в свойства заказа. Водитель об этом даже не знает — всё автоматически.

Шаг 2: Интеграция с сервисом оптимизации

После сбора точек отправляем их в API оптимизатора маршрутов. Пример с Яндекс.Маршрутизацией:

$httpClient = new \Bitrix\Main\Web\HttpClient(); $response = $httpClient->post( 'https://courier.yandex.ru/api/v1/companies/{company_id}/routes', json_encode(['vehicles' => $vehicles, 'orders' => $points]), ['Authorization' => 'Bearer ' . YANDEX_COURIER_API_KEY] ); $routes = json_decode($response, true); 

Возвращённые маршруты содержат упорядоченный список точек для каждого курьера. Сохраните их в таблицу bl_courier_routes и назначьте курьерам через CRM-задачи или мобильное приложение.

Шаг 3: Отображение маршрута курьеру

Создайте мобильную страницу или отправьте курьеру ссылку на маршрут в Google Maps или Яндекс.Картах с waypoints. Формат для Google Maps:

https://www.google.com/maps/dir/DEPOT_LAT,DEPOT_LON/STOP1_LAT,STOP1_LON/STOP2_LAT,STOP2_LON/... 

Генерируйте эту ссылку из данных bl_courier_routes и отправляйте курьеру через SMS или email.

Что даёт оптимизация маршрутов?

Параметр Ручная развозка Оптимизированная маршрутизация
Средний пробег на 20 точек 180 км 120 км (на 33% меньше)
Доля выполненных заказов вовремя 60% 95%
Затраты на топливо 100% 70%
Время планирования маршрута 30 минут 5 секунд

Оптимизированная маршрутизация в 30 раз быстрее ручного планирования и на 33% сокращает пробег. Каждый сэкономленный километр снижает расход топлива на существенную величину, а вместе с экономией времени курьеров и диспетчеров бюджет на доставку может сократиться на 30–40%.

Типичные ошибки при настройке

Ошибка Последствие Решение
Адрес без геокодинга Сервис не может построить маршрут Добавить AJAX-запрос к геокодеру
Не заданы временные окна Курьер едет в любое время Создать свойства DELIVERY_TIME_FROM/DELIVERY_TIME_TO
Игнорирование веса Перегрузка курьера Учесть вес в расчёте маршрута
Нет агента сборки Данные устаревают Настроить агент на Cron или Bitrix агенты

Как мы автоматизируем доставку под ключ

Мы выполняем полный цикл работ:

  1. Создание пользовательских свойств заказа LAT, LON, DELIVERY_TIME_FROM, DELIVERY_TIME_TO.
  2. Реализация геокодирования на AJAX через Яндекса или Google.
  3. Агент сборки точек и вызова API оптимизатора.
  4. Таблица bl_courier_routes для хранения маршрутов.
  5. Генерация ссылок на карты и рассылка курьерам.
  6. Обучение диспетчеров и курьеров.
  7. Исходный код и документация по доработке.

Наши клиенты экономят в среднем $270–390 в месяц на топливе и зарплате диспетчеров. Сертифицированные специалисты, прозрачный код, поддержка после сдачи. Свяжитесь с нами для аудита системы доставки — мы оценим бюджет и сроки в течение одного дня. Закажите настройку под ключ и получите консультацию по вашей задаче.