Как правильно настроить «Яндекс Маршрутизацию» в 1С и зачем нужны «штрафы» и «стоимости»?

Программист 1С v8.3 (Управляемые формы) 1С:ERP Управление предприятием Управленческий учет Торговля и дистрибуция
← На главную

Интеграция сервиса Яндекс Маршрутизация с системами на базе 1С (такими как 1С:ERP, УТ 11 или УНФ) часто начинается с разочарования: после передачи списка заказов и машин алгоритм выдает маршруты, которые кажутся логисту «нерабочими». Основная причина кроется не в ошибках кода, а в использовании дефолтных настроек. Для получения качественного результата необходимо произвести тонкую настройку математической модели через параметры costs (стоимости) и penalties (штрафы).

В этой статье мы разберем, как превратить «сырые» данные в эффективные маршруты, почему программисту нельзя работать без логиста и какие технические нюансы нужно учесть при передаче данных через API.

Понимание математической модели: Баланс между экономией и сервисом

Рассмотрим основной принцип работы алгоритма. Яндекс Маршрутизация пытается минимизировать общую целевую функцию — это сумма всех затрат на выполнение заказов. Если мы оставим настройки по умолчанию, система может построить маршрут, где один водитель едет через весь город ради одного заказа, потому что мы не «объяснили» системе, что это дорого.

Проанализируем основные группы параметров, которые передаются в JSON-запросе к серверу планирования:

  1. Стоимостные параметры (Costs): Реальные или виртуальные расходы на эксплуатацию транспорта.
  2. Штрафные параметры (Penalties): Виртуальные «деньги», которые система «платит» за нарушение условий (опоздание, невыполнение заказа, нарушение временного окна).

Разберем по шагам, как эти параметры влияют на итоговый результат. Если вы установите низкую стоимость километра пробега, система будет максимизировать использование одной машины. Если вы установите высокий штраф за опоздание (late_delivery_penalty), система предложит вывести на маршрут дополнительный автомобиль, чтобы успеть ко всем клиентам вовремя.

Настройка стоимостей и штрафов (Costs & Penalties)

Выясним причину, по которой дефолтные настройки не работают. Для системы «стоимость» — это просто абстрактное число. Чтобы маршрут стал рабочим, нужно привести все параметры к единой «валюте» внутри модели. Обычно за единицу принимается рубль или условный балл.

Основные параметры для настройки:

Рассмотрим пример структуры JSON, которую необходимо сформировать в 1С для передачи параметров транспортного средства:


{
  "vehicles": [
    {
      "id": "Truck_001",
      "cost": {
        "fixed": 1500,
        "per_km": 15,
        "per_hour": 500
      },
      "shifts": [
        {
          "time_range": "09:00-18:00",
          "start_location": { "lat": 55.7, "lon": 37.6 }
        }
      ],
      "capacity": { "weight": 1500, "volume": 10 }
    }
  ]
}

Роль логиста и программиста в процессе внедрения

Как отмечалось в обсуждении, процесс внедрения — это не только ИТ-задача. Программист отвечает за техническую часть: передачу координат, весогабаритных характеристик (ВГХ) и получение результата. Однако именно логист должен определять веса штрафов.

Проанализируем ситуацию: для «молочников» важно развезти товар максимально быстро, так как продукция скоропортящаяся. Здесь штраф за задержку будет критически высоким. Для интернет-магазина с широким интервалом доставки важнее минимизировать пробег.

Рекомендация: создайте в 1С специальную форму настройки (регистр сведений), где логист сможет самостоятельно менять коэффициенты без участия программиста. Это позволит проводить итерационное тестирование («что, если мы увеличим стоимость часа на 10%?»).

Геокодирование и чистота данных

Посмотрим на техническую сторону подготовки данных. Качество маршрута на 50% зависит от точности координат. Если в вашей базе 1С адреса хранятся в свободном формате, алгоритм может ошибиться.

Перед отправкой данных на маршрутизацию необходимо выполнить следующие действия:

  1. Провести нормализацию адресов через геокодер Яндекса.
  2. Сохранить полученные координаты (широту и долготу) в карточке контрагента или адреса доставки.
  3. Использовать point_id для того, чтобы система понимала, что несколько заказов относятся к одной точке разгрузки (это исключит лишние маневры вокруг одного дома).

Учет специфики бизнеса (Отраслевые особенности)

Разберем, как адаптировать модель под разные задачи, используя возможности платформы 1С:

1. Совместимость грузов:
Если вы перевозите продукты питания и бытовую химию, необходимо использовать параметры tags для заказов и машин. Система не поставит в один кузов несовместимые категории грузов.

2. Многорейсовость:
Если склад находится в черте города и машина может успеть вернуться, загрузиться и уехать на второй круг, используйте настройку multi_trip. Это критично для компаний с небольшим автопарком и высокой плотностью заказов.

3. Временные окна и сервисные интервалы:
Важно учитывать не только время нахождения в пути, но и service_duration — время на разгрузку, оформление документов и подъем на этаж. Для 1С это означает необходимость добавления реквизита «Время разгрузки» в документ «Заказ клиента» или «Маршрутный лист».

Заключение: Как добиться успеха?

Подводя итог, можно выделить следующие шаги для успешного запуска системы:

Помните, что «Яндекс Маршрутизация» — это мощный математический инструмент, который требует обучения под конкретные бизнес-процессы. Ваша задача как разработчика — создать удобный интерфейс для взаимодействия логиста с этой моделью.

← На главную