Интеграция 1С-Битрикс с TMS (транспортными системами)

Интеграция 1С-Битрикс с TMS (транспортными системами) Логистика интернет-магазина превращается в хаос, когда заказы обрабатываются вручную: потерянные заявки, дублированные маршруты, неверные статусы. Мы, инженеры с 10-летним опытом в Битрикс, знаем, как превратить этот хаос в автоматизированный
Услуги, которые мы предлагаем
Показано 1 из 1Все 1626 услуг
Интеграция 1С-Битрикс с TMS (транспортными системами)
Средний
~1-2 недели

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

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

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

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

Интеграция 1С-Битрикс с TMS (транспортными системами)

Логистика интернет-магазина превращается в хаос, когда заказы обрабатываются вручную: потерянные заявки, дублированные маршруты, неверные статусы. Мы, инженеры с 10-летним опытом в Битрикс, знаем, как превратить этот хаос в автоматизированный конвейер. Интеграция 1С-Битрикс с TMS (Transport Management System) — не просто передача данных, а создание единого цифрового потока, где каждый заказ мгновенно получает задачу в системе логистики, а клиент видит актуальный статус доставки в личном кабинете. По нашим данным, автоматизация сокращает время обработки заказа на 40%.

Почему интеграция TMS с Битрикс — это сложнее, чем кажется?

На первый взгляд — настроить вебхук и маппинг статусов. Но на практике всплывают нюансы: несоответствие форматов адресов, перегрузка API при пиковых нагрузках, потеря данных из-за таймаутов. Без продуманной архитектуры интеграция превращается в источник багов. Поэтому мы всегда начинаем с аудита — фиксируем текущие бизнес-процессы, пропускную способность каналов и требования к SLA.

Как выбрать метод обмена данными?

Метод Скорость ответа Надёжность Сложность реализации
REST API 50-200 мс Средняя (зависит от сети) Средняя
Вебхуки 10-50 мс Высокая (требует HMAC) Средняя
Файловый обмен (FTP) 5-60 мин Высокая (гарантия доставки) Низкая

REST API обеспечивает ответ в 5 раз быстрее, чем файловый обмен, а вебхуки — ещё быстрее. Однако файловый обмен остаётся актуальным, когда TMS не поддерживает современные протоколы.

Архитектура интеграции

Интеграция работает в обе стороны:

Битрикс → TMS: при подтверждении заказа к отправке передаются данные о заказе — адрес доставки, габариты, вес, временное окно доставки. TMS создаёт задачу доставки и возвращает ID задачи.

TMS → Битрикс: при изменении статуса доставки (назначен водитель, выехал, доставлен) TMS вызывает вебхук на стороне Битрикс, который обновляет статус заказа и уведомляет клиента.

Передача заказов в TMS

Создайте сервисный класс для работы с API TMS. Наиболее распространённые TMS имеют REST API с JSON. Пример интеграции с абстрактным TMS:

class TmsService { private string $baseUrl; private string $apiKey; public function createDeliveryTask(int $orderId): array { $order = \Bitrix\Sale\Order::load($orderId); $shipment = $order->getShipmentCollection()->current(); $props = $order->getPropertyCollection(); $payload = [ 'external_id' => $orderId, 'recipient_name' => $props->getItemByOrderPropertyCode('NAME')?->getValue(), 'address' => $props->getItemByOrderPropertyCode('ADDRESS')?->getValue(), 'phone' => $props->getItemByOrderPropertyCode('PHONE')?->getValue(), 'weight_kg' => $this->calculateWeight($order->getBasket()), 'delivery_window' => [ 'from' => $shipment->getField('DELIVERY_DATE_FROM')?->format(\DATE_ATOM), 'to' => $shipment->getField('DELIVERY_DATE_TO')?->format(\DATE_ATOM), ], 'items_count' => $order->getBasket()->count(), 'notes' => $props->getItemByOrderPropertyCode('COMMENT')?->getValue(), ]; $httpClient = new \Bitrix\Main\Web\HttpClient(); $httpClient->setHeader('Authorization', 'Bearer ' . $this->apiKey); $httpClient->setHeader('Content-Type', 'application/json'); $response = $httpClient->post($this->baseUrl . '/tasks', json_encode($payload)); return json_decode($response, true); } } 

Вызов TmsService::createDeliveryTask() происходит при переходе заказа в статус «Передан в доставку» через обработчик OnSaleStatusOrder.

Сохранение ID задачи TMS

Создайте пользовательское поле заказа UF_TMS_TASK_ID типа «Строка». После успешной передачи заказа в TMS запишите туда возвращённый ID:

$order->setField('UF_TMS_TASK_ID', $tmsResponse['task_id']); $order->save(); 

Это поле используется для связи входящих вебхуков с заказами Битрикс.

Приём статусов от TMS

Создайте публичный эндпоинт /bitrix/tms_webhook.php:

$data = json_decode(file_get_contents('php://input'), true); $hmac = hash_hmac('sha256', $data['task_id'] . $data['status'], TMS_WEBHOOK_SECRET); if (!hash_equals($hmac, $data['signature'])) { http_response_code(403); exit; } $order = OrderFinder::findByTmsTaskId($data['task_id']); if ($order) { $statusMap = [ 'assigned' => 'TD', // передан водителю 'out_for_delivery' => 'OD', // в пути 'delivered' => 'F', // доставлен 'failed' => 'CF', // не доставлен ]; $newStatus = $statusMap[$data['status']] ?? null; if ($newStatus) { $order->setField('STATUS_ID', $newStatus); $order->save(); } if ($data['tracking_url']) { $order->setField('UF_TRACKING_URL', $data['tracking_url']); $order->save(); } } http_response_code(200); 

Вебхук должен быть защищён HMAC-подписью или Bearer-токеном — TMS и Битрикс обмениваются секретным ключом.

Передача габаритов и веса

TMS для планирования маршрутов требует физические характеристики груза. В Битрикс вес хранится в b_catalog_product.WEIGHT, размеры — в свойствах инфоблока (LENGTH, WIDTH, HEIGHT) или в b_catalog_product (поля добавляются через UF). Метод calculateWeight() суммирует WEIGHT * QUANTITY по позициям корзины.

Сроки выполнения по масштабу проекта

Масштаб Особенности Сроки
Малый (до 100 заказов/день) Одностороннее уведомление по email/webhook, простой маппинг статусов 2–3 дня
Средний (100–1000 заказов/день) Двусторонняя интеграция, очередь задач, обработка ошибок 5–8 дней
Крупный (1000+ заказов/день) Очередь RabbitMQ/Redis, retry-логика, мониторинг, мультискладовость 15–25 дней

Обработка ошибок и повторные попытки

Сети ненадёжны — API TMS может быть недоступен. Реализуйте очередь передачи заказов: при ошибке запись попадает в bl_tms_queue со статусом failed и счётчиком попыток. Агент раз в 5 минут перепроверяет failed записи и делает повторную попытку — максимум 5 раз с экспоненциальной задержкой.

Что входит в работу

  • Аудит текущих бизнес-процессов и архитектуры сайта
  • Проектирование схемы обмена данными (синхронная/асинхронная, очередь)
  • Разработка сервисного класса TmsService с адаптером под конкретную TMS
  • Настройка обработчиков статусов и вебхуков с HMAC-верификацией
  • Создание пользовательских полей UF_TMS_TASK_ID, UF_TRACKING_URL
  • Реализация очереди bl_tms_queue с retry-логикой
  • Тестирование на нагрузке до 10 000 заказов/день
  • Документация по эксплуатации и обучение команды
  • 3 месяца пост-релизной поддержки

Наш опыт и гарантии

Более 50 успешных интеграций с TMS за 10 лет работы. Сертифицированные специалисты Битрикс гарантируют, что интеграция не сломает существующий функционал и выдержит даже чёрную пятницу. Мы используем только рекомендованные Битрикс подходы: REST API и тегированное кэширование. Закажите интеграцию под ключ — от аудита до документации. Оценим ваш проект за один день.

Вебхуки — предпочтительный способ для сценариев "на лету", согласно документации 1С-Битрикс.

Что настраиваем

  • Сервисный класс TmsService с адаптером под конкретную TMS (1С:ТМС, Яндекс.Маршрутизация, Samsara, самописная)
  • Обработчик смены статуса заказа для автоматической передачи в TMS
  • Пользовательские поля заказа UF_TMS_TASK_ID, UF_TRACKING_URL
  • Вебхук-эндпоинт с HMAC-верификацией для приёма статусов
  • Очередь bl_tms_queue с retry-логикой для надёжной доставки сообщений