Интеграция 1С-Битрикс с Яндекс Маршрутизация — автоматизация доставки
После оформления заказа менеджер вручную распределяет заказы, строит маршруты и отправляет трекинг-ссылки. Это отнимает в среднем 3 часа в день, а 15% заказов содержат ошибки в адресах. Мы автоматизируем всё через интеграцию с Яндекс.Маршрутизация: связываем заказы, геокодируем адреса и обновляем статусы внутри Битрикс. Результат — доставка быстрее на 40%, менеджеры экономят 2 часа в день, а клиенты получают трекинг-ссылку автоматически. Затраты на логистику снижаются до 35%. За время работы на логистических проектах (более 30 успешных интеграций) мы накопили опыт, который позволяет делать интеграцию с нуля за 10–14 дней. Окупаемость — 2-3 месяца.
Как автоматизировать построение маршрутов?
Яндекс Маршрутизация (Яндекс.Курьер API) — сервис для оптимизации доставки. Он учитывает трафик, временные окна и ограничения транспорта. Интеграция с Битрикс даёт полный цикл: от заказа на сайте до уведомления клиента о доставке.
Регистрация в Яндекс.Курьер
Для работы с API нужно:
- Зарегистрировать компанию в кабинете Яндекс.Курьер.
- Получить COMPANY_ID — числовой идентификатор компании.
- Получить OAuth-токен через Яндекс OAuth.
- Настроить склад (депо) — точку отправления с координатами.
Базовый 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–2 дня) — изучаем бизнес-процессы, объём заказов, настройки доставки. Определяем точки интеграции.
- Проектирование (2–3 дня) — разрабатываем архитектуру: API-клиент, геокодирование, вебхуки, статусы. Согласовываем с вами.
- Разработка (5–7 дней) — пишем модуль, настраиваем кэширование тегированное, обрабатываем ошибки. Реализуем административный интерфейс для управления рейсами.
- Тестирование (2–3 дня) — проверяем на тестовых заказах, моделируем сценарии сбоев. Точность геокодирования стремится к 99.8%.
- Деплой и обучение (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 рабочих дней. Стоимость рассчитывается индивидуально в зависимости от сложности бизнес-процессов и объёма заказов. Свяжитесь с нами — мы подготовим предложение.







