Расчёт маршрута при помощи Яндекс.API

07.02.25

Интеграция - WEB-интеграция

Заготовка, основанная на API Яндекс для работы с маршрутами транспортных средств. Для использования функционала расширения требуется лицензия на использование API "Матрица Расстояний и Построение Маршрута" и "Java script API и HTTP Геокодер" от Яндекс.

Файлы

ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.

Наименование Скачано Купить файл
Расчёт маршрута при помощи Яндекс.API:
.cfe 34,58Kb
2 1 850 руб. Купить
Полигональные области Москвы и Московской области, заданные координатами в формате JSON
.zip 286,07Kb
0 1 850 руб. Купить

Подписка PRO — скачивайте любые файлы со скидкой до 85% из Базы знаний

Оформите подписку на компанию для решения рабочих задач

Оформить подписку и скачать решение со скидкой

Внимание: расширение не является готовым продуктом, это лишь заготовка для реализации задачи по подсчёту расстояний и/или времени, затрачиваемого на транспортировку груза в Вашей конфигурации. Реализована на платформе 8.3.23.1865 в режиме совместимости 8.3.14, но подходит для любой конфигурации любой версии, реализованной на платформе 1С 8.3.

Позволяет:

  1. Определить координаты точек маршрута, объявленные адресом в свободной форме;
  2. Отсортировать маршрут по кратчайшим расстояниям;
  3. Определить хордовое расстояние между двумя точками, заданными координатами;
  4. Получить расстояния перегонов, общее расстояние маршрута, а также расчётное время, которое будет затрачено на маршрут.

Используемые объекты:

  1. Перечисление "Виды сервисов Яндекс API" содержит фиксированный список всех сервисов Яндекс.API;
  2. Справочник "Настройки Яндекс API". Предназначен для хранения и использования настроек соответствующих сервисов. Содержит в себе автоматически заполняемую табличную часть "Параметры запроса", содержащую в себе все возможные параметры, отправляемые в Яндекс при осуществлении запроса на получение данных;
  3. Регистр сведений "Координаты" содержит в себе единственное измерение "Пользовательский адрес" (предполагается, что передаваемый адрес может не соответствовать стандартам), ресурсы "Долгота" и "Широта", а также реквизиты "Эталонный адрес", "Почтовый индекс" и "Локализация" (может потребоваться для расчёта стоимости доставки), которые заполняются из полученных данных от сервиса (также, как и координаты);
  4. Общий серверный модуль "ЯндексAPI". Состав модуля:
  • Функция ПолучитьНастройкуСервиса - Возвращает структуру с настройками;
  • Функция СформироватьЗапросДляОтправки - формирует HTTP-запрос для отправки сервису;
  • Функция ЗапроситьДанныеСервисаЯндекс - возвращает HTTPОтвет от сервиса;
  • Функция ОпределитьКоординатыПоАдресу - возвращает структуру с ключами "lon,lat";
  • Функция ПолучитьРасстояниеМаршрута - возвращает общее расстояние в километрах;
  • Функция ПолучитьМетрикуМаршрута - возвращает массив из структур, каждая из которых содержит в себе параметры <РасстояниеМетров> и <ВремяСекунд>;
  • Функция ОтсортироватьМаршрут - возвращает таблицу значений, которая отсортирована от точки <Долгота, Широта>;
  • Функция ТочкаВходитВОбласть - возвращает булевый признак вхождения указанной координатами точки в полигон, обозначенный массивом точек, каждая из которых заявлена координатами;
  • Функция ПолучитьРасстояниеОтТочкиДоТочки - возвращает расстояние от точки до точки по прямой в километрах.

Пример использования:

// ИсходнаяТаблицаЗначений должна содержать в себе две обязательных колонки типа Число{14,6} <Долгота> и <Широта>
Функция СортировкаТаблицыМаршрута(Знач ИсходнаяТаблицаЗначений)
	ИсходнаяТаблицаЗначений = ЯндексAPI.ОтсортироватьМаршрут(ИсходнаяТаблицаЗначений, ДолготаТочкиОтправления, ШиротаТочкиОтправления);
	Результат = ИсходнаяТаблицаЗначений.СкопироватьКолонки();
	Пока ИсходнаяТаблицаЗначений.Количество() > 0 Цикл
		НовСтр = Результат.Добавить();
		ЗаполнитьЗначенияСвойств(НовСтр, ИсходнаяТаблицаЗначений[0]);
		ДолготаТочкиОтправления = ИсходнаяТаблицаЗначений[0].Долгота;
		ШиротаТочкиОтправления = ИсходнаяТаблицаЗначений[0].Широта;
		ИсходнаяТаблицаЗначений.Удалить(0);
		Если ИсходнаяТаблицаЗначений.Количество() > 0 Тогда
			ИсходнаяТаблицаЗначений = ЯндексAPI.ОтсортироватьМаршрут(ИсходнаяТаблицаЗначений, ДолготаТочкиОтправления, ШиротаТочкиОтправления);
		КонецЕсли;
	КонецЦикла;
	Возврат Результат;
КонецФункции

Замечания и наблюдения:

  1. По невыясненной причине Яндекс обрабатывает GET-запросы только в случае, если сам запрос строкой;
  2. Иногда (редко) маршруты не вычисляются, Яндекс возвращает либо частично рассчитанный маршрут, либо просто пустой ответ, хотя во всех случаях с кодом 200. После длительных выяснений оказалось, что в случае перекрытия дорог Яндекс не обрабатывает маршрут и не возвращает ошибок (в поддержке обещали "подумать").

Вступайте в нашу телеграмм-группу Инфостарт

Транспорт Логистика Доставка

См. также

Сайты и интернет-магазины WEB-интеграция Системный администратор Программист Пользователь 1С:Предприятие 8 1C:Бухгалтерия 1С:Управление торговлей 11 Автомобили, автосервисы Россия Управленческий учет Платные (руб)

Интеграционный модуль обмена между конфигурацией Альфа Авто 5 и Альфа Авто 6 и порталом AUTOCRM / LOGICSTARS. Данный модуль универсален. Позволяет работать с несколькими обменами AUTOCRM / LOGICSTAR разных брендов в одной информационной базе в ручном и автоматическом режиме.

36000 руб.

03.08.2020    22203    32    24    

26

SALE! 15%

WEB-интеграция Программист Бизнес-аналитик 1С:Предприятие 8 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 3.0 1С:Розница 3.0 Оптовая торговля, дистрибуция, логистика ИТ-компания Платные (руб)

Модуль "Экспортер" — это расширение для 1С, предназначенное для автоматизации процессов выгрузки данных. Оно позволяет эффективно извлекать, преобразовывать и передавать данные из систем 1С в интеграционную платформу Spot2D. Подсистема упрощает настройку, снижает количество ручных операций и обеспечивает удобный контроль данных.

17280 14688 руб.

20.12.2024    4382    22    4    

23

WEB-интеграция Программист Руководитель проекта 1С:Предприятие 8 1C:Бухгалтерия 1С:Франчайзи, автоматизация бизнеса Платные (руб)

Расширение значительно упрощает написание API на 1С. Веб программисты получают простой и понятный доступ к 1С. Описание API создаётся автоматически и представляется в виде удобном как для человека, так и для программной обработки. Основные преимущества: 1. Документация API создаётся автоматически. Удобна для программной обработки. 2. Изменить API столь же просто как настроить отчёт. Можно опубликовать существующий вариант отчёта. 3. Отчёты в API поддерживают параметры (Период, ДатаНачала и др.) 4. При создании простых методов не требуется изменять конфигурацию. 5. Поддерживается работа с планами обмена.<br/> 6. Возможно настроить отправку из 1С данных корреспондирующей системе, для случаев когда 1С сама "знает" какие данные нужно отправить. 7. После записи в 1С Ле Мурр может возвращать соответствие полученных идентификаторов созданным в 1С объектам данных.

36000 руб.

27.09.2024    10150    7    5    

11

WEB-интеграция Программист 1С:Предприятие 8 1С:Бухгалтерия 3.0 Бытовые услуги, сервис Платные (руб)

Внешняя обработка разработана для автоматизации передачи данных между сервисом Vetmanager с 1С: Бухгалтерия 3.0. Решение позволяет загружать документы и справочники из Ветменеджер в 1С:Бухгалтерию, сокращая время на ручной ввод данных и минимизируя ошибки.

12000 руб.

02.02.2021    20958    60    52    

38
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. Светлый ум 455 08.02.25 18:53 Сейчас в теме
2. plushko 34 08.02.25 21:13 Сейчас в теме
(1) для подсчёта маршрута я использую специальный механизм, который для этого предлагает Яндекс, а автор той разработки использует сразу несколько технологий (в том числе какую-то нелегитимную технологию от Яндекс), но это совсем другие способы. Яндекс в моей технологии считает быстро, а расчётное время и расстояние маршрута в моём случае тоже определяет Яндекс с учётом всех факторов (в т.ч. пробок, например, но не только) - я лишь собираю эти данные, конвертирую в удобный для использования вид и передаю программисту для вывода, или дальнейшей обработки. А ещё приведённая Вами в пример разработка, как я понял, не получает координаты от Яндекс, а умеет только использовать (и проверять?) указанные пользователем. Я предлагаю расширение, которое можно взять, и сразу использовать в реализации наиболее распространённых задач планирования развоза, или доставки предприятия, а ваш пример - результат лабораторного исследования, которое в любом случае придётся изучать, переделывать (да, скорее всего, даже не адаптировать) под нужны предприятия и задачу, и только потом внедрять.
Для отправки сообщения требуется регистрация/авторизация