Перейти к основному содержимому

Сквозной сценарий: 1С → маршрут

Типовой порядок работы для учётной системы.

Шаг 1. Вечерняя выгрузка накладных

POST /orders/bulk/

Отправьте до 500 накладных, в external_id — номер документа, обязательно укажите delivery_date на завтра. Сохраните соответствие «номер документа → id заказа» из ответа.

Разберите ответ: позиции со статусом error не создались — покажите их оператору.

Шаг 2. Проверка координат

Через 1–2 минуты запросите свои заказы и убедитесь, что у всех заполнены lat и lon. Заказы с пустыми координатами в планирование не отправляйте — сначала исправьте адрес через PATCH.

Шаг 3. Запуск планирования

POST /planning/jobs/

Передайте external_ids со своими номерами документов. Сохраните job_id.

Шаг 4. Ожидание результата

Либо подпишитесь на вебхук planning_job.finished (рекомендуется), либо опрашивайте GET /planning/jobs/{job_id}/ раз в 10–15 секунд.

Шаг 5. Разбор результата

  • result.route_ids — построенные маршруты;
  • result.unassigned — что не поместилось и почему;
  • сравните input.order_ids с суммой размещённых и нераспределённых: разница означает заказы, потерянные из-за неопределённых координат.

Нераспределённые заказы верните оператору для решения — добавить машину, изменить интервал доставки или перенести на другой день.

Шаг 6. Получение маршрутов

GET /routes/{route_id}/

В точках маршрута поле order_external_id содержит ваш номер документа — по нему проставляйте в учётной системе номер маршрута и плановое время прибытия (planned_arrival_at).

Шаг 7. Приём статусов

Подпишитесь на order.status_changed и обновляйте статус документа в 1С. Итоговые статусы: confirmed — доставлено, rejected — отказ получателя, skipped — точка пропущена.

Не забудьте про отсечение дублей по X-DP-Delivery-Id и про то, что порядок событий не гарантирован.