Автоматизация транспортной логистики в 1С — это комплексная задача, которая включает в себя не только отображение точек на карте, но и расчет оптимальных путей объезда, учет пробок и временных окон. В рамках данной статьи мы подробно разберем несколько способов интеграции, проанализируем стоимость решений и выберем наиболее подходящий вариант для вашего бизнеса.
Это наиболее надежный, но платный метод. Проанализируем, как работает система лицензирования. Если вы планируете использовать карты внутри закрытой системы (например, в 1С:Управление торговлей или ERP), бесплатная версия API вам не подойдет по условиям лицензионного соглашения. Для бизнеса Яндекс предлагает специализированные продукты:
ПолеHTMLДокумента, искать адреса (геокодирование) и строить простые маршруты.Для технической реализации в 1С мы обычно используем два подхода. Первый — это встраивание интерактивной карты в форму. Рассмотрим пример инициализации карты через JavaScript:
// В коде 1С (ПриСозданииНаСервере или в обработчике команды)
ТекстHTML =
"<html>
|<head>
| <script src='https://api-maps.yandex.ru/2.1/?lang=ru_RU&apikey=ВАШ_КЛЮЧ' type='text/javascript'></script>
| <script type='text/javascript'>
| ymaps.ready(init);
| function init() {
| var myMap = new ymaps.Map('map', { center: [55.76, 37.64], zoom: 10 });
| var multiRoute = new ymaps.multiRouter.MultiRoute({
| referencePoints: ['Москва, метро Арбатская', 'Москва, метро Молодежная'],
| params: { routingMode: 'auto' }
| });
| myMap.geoObjects.add(multiRoute);
| }
| </script>
|</head>
|<body><div id='map' style='width: 100%; height: 100vh'></div></body>
|</html>";
ЭтаФорма.Элементы.КартаHTML.УстановитьТекст(ТекстHTML);
Если бюджет ограничен, а требования к точности пробок не критичны, рассмотрим альтернативу на базе OpenStreetMap (OSM). Проанализируем работу с сервисом OSRM (Open Source Routing Machine). Этот движок позволяет получать данные о маршруте через обычные HTTP запросы, что очень удобно для 1С.
Разберем по шагам, как получить расстояние и время в пути без использования визуальной карты:
GET-запрос к публичному или собственному серверу OSRM.JSON.Посмотрим на пример программного кода для расчета расстояния между двумя контрагентами:
Функция ПолучитьДанныеМаршрута(ТочкаА, ТочкаБ)
// Точки в формате "долгота,широта"
ЗапросURL = "/route/v1/driving/" + ТочкаА + ";" + ТочкаБ + "?overview=false";
НТТР = Новый HTTPСоединение("router.project-osrm.org", , , , , 10);
Запрос = Новый HTTPЗапрос(ЗапросURL);
Попытка
Ответ = НТТР.Получить(Запрос);
Если Ответ.КодСостояния = 200 Тогда
Чтение = Новый ЧтениеJSON;
Чтение.УстановитьСтроку(Ответ.ПолучитьТелоКакСтроку());
Данные = ПрочитатьJSON(Чтение);
РасстояниеМетры = Данные.routes[0].distance;
ВремяСекунды = Данные.routes[0].duration;
Возврат РасстояниеМетры / 1000; // Расстояние в км
КонецЕсли;
Исключение
Сообщить("Ошибка связи с сервером маршрутизации");
КонецПопытки;
КонецФункции
Выясним причину, по которой многие компании отказываются от сложных интеграций в пользу Deep Links. Если ваша задача — просто передать маршрут водителю, нет смысла строить его внутри 1С. Мы можем сформировать специальную ссылку, которая при нажатии на смартфоне автоматически откроет Яндекс Навигатор с уже проложенным маршрутом.
Этот способ абсолютно бесплатен. Разберем структуру такой ссылки. Для навигатора формат будет следующим: yandexnavi://build_route_on_map?lat_to=55.7&lon_to=37.6. В 1С вы можете выводить QR-код с этой ссылкой в печатную форму путевого листа или отправлять её водителю в мессенджер.
Прежде чем строить маршрут, необходимо убедиться, что у всех контрагентов заполнены координаты Широта и Долгота. Проанализируем ситуацию: зачастую в базе 1С есть только текстовые адреса. Процесс превращения адреса в координаты называется геокодированием.
Для качественной очистки адресов рекомендуем использовать сервис DaData. Он работает точнее, чем многие бесплатные библиотеки, и позволяет привести адреса к стандарту ФИАС. После того как адрес очищен, вы один раз запрашиваете координаты и сохраняете их в справочнике Контрагенты или АдресаДоставки. Это позволит вам экономить лимиты платных API при последующих построениях маршрутов.
Рассмотрим ситуацию, когда разработка с нуля нецелесообразна. В современных конфигурациях, таких как 1С:Управление нашей фирмой (УНФ) или 1С:Управление торговлей 11, уже реализованы модули взаимодействия с картами. В частности, сервис 1С-Доставка позволяет интегрироваться с логистическими экосистемами без написания сложного кода. Достаточно получить API-ключ в личном кабинете разработчика Яндекса и прописать его в константах программы.
Выбор решения зависит от масштаба вашего бизнеса. Проанализировав все варианты, можно сделать следующие выводы:
Deep Links для водителей и разовое геокодирование базы через DaData.OSRM (для предварительных расчетов) и визуализацию через Leaflet в 1С. Это обеспечит независимость от платных лимитов.Помните, что при работе с любым внешним API крайне важно обрабатывать ошибки соединения через конструкцию Попытка...Исключение, чтобы нестабильный интернет или сбои на стороне сервиса не приводили к остановке работы всей системы 1С.