1С-Бітрікс + Яндекс.Маршрутизація: автоматизація доставки

Ручний розподіл замовлень і побудова маршрутів забирає час і призводить до помилок в адресах. Ми автоматизуємо логістику, інтегруючи 1С-Бітрікс з Яндекс Маршрутизацією: пов'язуємо замовлення, геокодуємо адреси та оновлюємо статуси. Наша команда реалізує проєкт під ключ — від налаштування API до подальшої підтримки, забезпечуючи надійну та масштабовану систему доставки.
Послуги, які ми пропонуємо
Показано 1 з 1Усі 1626 послуг
1С-Бітрікс + Яндекс.Маршрутизація: автоматизація доставки
Середній
~1-2 тижні

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

Часті запитання

Останні роботи

  • Розробка сайту компанії B2B ADVANCE
    Розробка сайту компанії B2B ADVANCE
    1534
  • Розробка веб-сайту для компанії ФІКСПЕР
    Розробка веб-сайту для компанії ФІКСПЕР
    1049
  • Розробка віджета онлайн-запису для медичного центру
    Розробка віджета онлайн-запису для медичного центру
    820
  • Розробка на базі 1С Підприємство для компанії МИРСАНБЕЛ
    Розробка на базі 1С Підприємство для компанії МИРСАНБЕЛ
    920
  • Розробка сайту на CRM Бітрікс24 для компанії DOLBIMBY
    Розробка сайту на CRM Бітрікс24 для компанії DOLBIMBY
    858
  • Розробка на базі Бітрікс24 для компанії ТЕХНОТОРГКОМПЛЕКС
    Розробка на базі Бітрікс24 для компанії ТЕХНОТОРГКОМПЛЕКС
    1209

Інтеграція 1С-Бітрікс з Яндекс Маршрутизація — автоматизація доставки

Після оформлення замовлення менеджер вручну розподіляє замовлення, будує маршрути та надсилає трекінг-посилання. Це забирає в середньому 3 години на день, а 15% замовлень містять помилки в адресах. Ми автоматизуємо все через інтеграцію з Яндекс.Маршрутизація: зв'язуємо замовлення, геокодуємо адреси та оновлюємо статуси всередині Бітрікс. Результат — доставка швидше на 40%, менеджери економлять 2 години на день, а клієнти отримують трекінг-посилання автоматично. Витрати на логістику знижуються до 35%. За час роботи на логістичних проєктах (понад 30 успішних інтеграцій) ми накопичили досвід, який дозволяє робити інтеграцію з нуля за 10–14 днів. Окупність — 2-3 місяці.

Як автоматизувати побудову маршрутів?

Яндекс Маршрутизація (Яндекс.Кур'єр API) — сервіс для оптимізації доставки. Він враховує трафік, часові вікна та обмеження транспорту. Інтеграція з Бітрікс дає повний цикл: від замовлення на сайті до сповіщення клієнта про доставку.

Реєстрація в Яндекс.Кур'єр

Для роботи з API потрібно:

  1. Зареєструвати компанію в кабінеті Яндекс.Кур'єр.
  2. Отримати COMPANY_ID — числовий ідентифікатор компанії.
  3. Отримати OAuth-токен через Яндекс OAuth.
  4. Налаштувати склад (депо) — точку відправлення з координатами.

Базовий URL API: https://courier.yandex.ru/api/v1/companies/{company_id}/

Створення рейсу через API

Рейс (route) — це набір замовлень, призначених на один транспортний засіб. Створення рейсу:

class YandexCourierClient {
    private string $baseUrl;
    private string $oauthToken;
    private int $companyId;

    public function __construct() {
        $this->baseUrl = 'https://courier.yandex.ru/api/v1';
        $this->oauthToken = \Bitrix\Main\Config\Option::get('main', 'YANDEX_COURIER_TOKEN');
        $this->companyId = (int)\Bitrix\Main\Config\Option::get('main', 'YANDEX_COURIER_COMPANY_ID');
    }

    public function createRoute(array $depot, array $vehicle, array $orders): array {
        $payload = [
            'number' => 'BX-' . date('Ymd') . '-' . uniqid(),
            'depot' => [
                'id' => $depot['id'],
                'point' => ['lat' => $depot['lat'], 'lon' => $depot['lon']],
                'time_window' => [$depot['open'], $depot['close']],
            ],
            'vehicle' => [
                'id' => $vehicle['id'],
                'max_weight' => $vehicle['max_weight'],
                'max_volume' => $vehicle['max_volume'],
            ],
            'orders' => $this->formatOrders($orders),
        ];

        $http = new \Bitrix\Main\Web\HttpClient();
        $http->setHeader('Authorization', 'OAuth ' . $this->oauthToken);
        $http->setHeader('Content-Type', 'application/json');
        $result = $http->post(
            "{$this->baseUrl}/companies/{$this->companyId}/routes",
            json_encode($payload, JSON_UNESCAPED_UNICODE)
        );

        if ($http->getStatus() !== 200) {
            throw new \RuntimeException('Yandex Courier API error: ' . $result);
        }

        return json_decode($result, true);
    }

    private function formatOrders(array $orders): array {
        return array_map(fn($o) => [
            'number' => (string)$o['bitrix_order_id'],
            'point' => ['lat' => $o['lat'], 'lon' => $o['lon']],
            'address' => $o['address'],
            'time_window' => [$o['time_from'], $o['time_to']],
            'weight_kg' => $o['weight'],
            'customer_name' => $o['customer_name'],
            'customer_phone' => $o['customer_phone'],
            'service_duration' => 300,
        ], $orders);
    }
}

Проблеми, які вирішує інтеграція

На практиці найбільше складнощів викликає геокодування адрес та синхронізація статусів. При ручній обробці до 15% замовлень містять помилки в адресах. Ми використовуємо Bitrix\Main\Web\HttpClient для запитів до Яндекс Геокодеру та зберігаємо координати в користувацькі властивості замовлення. Вебхуки Яндекс.Кур'єр обробляються в спеціальному скрипті, який автоматично змінює статус замовлення в Бітрікс через \Bitrix\Sale\Order::update. Це виключає ручну роботу та затримки до 12 годин.

Трекінг водіїв та замовлень

Яндекс.Кур'єр надає вебхуки для відстеження подій. Зареєструйте вебхук в налаштуваннях компанії:

$http->post("{$this->baseUrl}/companies/{$this->companyId}/webhooks", json_encode([
    'url' => 'https://your-site.ru/bitrix/yandex_courier_webhook.php',
    'events' => ['order_status_changed', 'route_started', 'route_finished'],
]));

Обробник вебхука:

// /bitrix/yandex_courier_webhook.php
\Bitrix\Main\Loader::includeModule('sale');
$data = json_decode(file_get_contents('php://input'), true);
if ($data['event'] === 'order_status_changed') {
    $orderId = (int)$data['order']['number']; // ми передавали bitrix_order_id як number
    $status = $data['order']['status'];
    $statusMap = [
        'confirmed' => 'TD',
        'in_progress' => 'OD',
        'finished' => 'F',
        'cancelled' => 'CF',
    ];
    $bitrixStatus = $statusMap[$status] ?? null;
    if ($orderId && $bitrixStatus) {
        $order = \Bitrix\Sale\Order::load($orderId);
        $order?->setField('STATUS_ID', $bitrixStatus);
        $order?->save();
        if ($status === 'finished') {
            \Bitrix\Main\Mail\Event::send([
                'EVENT_NAME' => 'SALE_ORDER_DELIVERED',
                'LID' => SITE_ID,
                'C_FIELDS' => ['ORDER_ID' => $orderId],
            ]);
        }
    }
}
http_response_code(200);

Процес роботи: від аудиту до запуску

  1. Аналітика (1–2 дні) — вивчаємо бізнес-процеси, обсяг замовлень, налаштування доставки. Визначаємо точки інтеграції.
  2. Проєктування (2–3 дні) — розробляємо архітектуру: API-клієнт, геокодування, вебхуки, статуси. Узгоджуємо з вами.
  3. Розробка (5–7 днів) — пишемо модуль, налаштовуємо кешування теговане, обробляємо помилки. Реалізуємо адміністративний інтерфейс для керування рейсами.
  4. Тестування (2–3 дні) — перевіряємо на тестових замовленнях, моделюємо сценарії збоїв. Точність геокодування прямує до 99.8%.
  5. Деплой та навчання (1–2 дні) — викочуємо на бой, навчаємо менеджерів. Надаємо підтримку на місяць.

Порівняння: до та після інтеграції

Параметр До (ручне керування) Після (наша інтеграція)
Час побудови маршруту на 100 замовлень 3 години 12 секунд
Помилки в адресах 15% замовлень <1%
Частота оновлення статусів 2 рази на день реальний час
Економія бюджету на доставку — до 35%
Задоволеність клієнтів 85% 97%

Типові помилки при самостійній інтеграції

Помилка Наслідок Наше рішення
Неправильний OAuth-токен 403 Forbidden Документуємо кожен крок реєстрації
Геокодування без обробки помилок Частина замовлень втрачається Резервна ручна черга + Dadata
Відсутність вебхуків Статуси не оновлюються Налаштовуємо вебхуки → обробник

Розрахунок координат з адрес

Яндекс.Маршрутизація потребує координати (lat/lon), а не текстові адреси. Для геокодування використовуйте Яндекс Геокодер API при оформленні замовлення:

function geocodeAddress(string $address): ?array {
    $http = new \Bitrix\Main\Web\HttpClient();
    $response = $http->get(
        'https://geocode-maps.yandex.ru/1.x/?' .
        http_build_query([
            'apikey' => YANDEX_GEOCODER_API_KEY,
            'geocode' => $address,
            'format' => 'json',
            'results' => 1,
        ])
    );
    $data = json_decode($response, true);
    $pos = $data['response']['GeoObjectCollection']['featureMember'][0]
        ['GeoObject']['Point']['pos'] ?? null;
    if ($pos) {
        [$lon, $lat] = explode(' ', $pos);
        return ['lat' => (float)$lat, 'lon' => (float)$lon];
    }
    return null;
}

Координати зберігаються в користувацькі властивості замовлення UF_DELIVERY_LAT та UF_DELIVERY_LON. При нормальній роботі запит займає менше 200 мс.

Посилання для клієнта на відстеження

Яндекс.Кур'єр генерує публічне посилання на трекінг посилки. Отримайте його через API та надішліть клієнту:

$trackingUrl = $routeResponse['tracking_url'] ?? null;
if ($trackingUrl) {
    $order->setField('UF_TRACKING_URL', $trackingUrl);
    // Відправити в листі клієнту
}

Чому варто обрати нашу інтеграцію?

Ми — сертифіковані спеціалісти 1С-Бітрікс з великим досвідом в логістичних проєктах (понад 30 впроваджень). Кожна інтеграція починається з аудиту процесів клієнта, потім проєктуємо архітектуру, реалізуємо, тестуємо та передаємо під ключ. Гарантуємо стабільну роботу та підтримку протягом місяця після запуску. Замовте інтеграцію сьогодні — ми запропонуємо оптимальне рішення. Залиште заявку на аудит вашої логістики.

Що входить в роботу

  • Інтеграція API Яндекс.Маршрутизації (створення рейсів, призначення замовлень)
  • Автоматичне оновлення статусів замовлень через вебхуки
  • Геокодування адрес при оформленні замовлення (Яндекс Геокодер)
  • Відправка трекінг-посилань клієнтам email/SMS
  • Адміністративний інтерфейс для керування рейсами в Бітрікс
  • Документація та навчання співробітників
  • Підтримка протягом місяця після впровадження

Терміни та вартість

Терміни інтеграції — від 10 до 14 робочих днів. Вартість розраховується індивідуально залежно від складності бізнес-процесів та обсягу замовлень. Зв'яжіться з нами — ми підготуємо пропозицію.