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

07.02.25

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

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

Скачать файл

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

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

Внимание: расширение не является готовым продуктом, это лишь заготовка для реализации задачи по подсчёту расстояний и/или времени, затрачиваемого на транспортировку груза в Вашей конфигурации. Реализована на платформе 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С:ITIL, 1С:ITILIUM, Управление IT-отделом 8 через интернет с любого устройства посредством браузера, увеличивая эффективность работы пользователей и снижая нагрузку на сервер. Быстрая инсталляция портала за пару часов, удобный и интуитивно понятный интерфейс и безопасность данных помогут упростить работу с порталом и ускорить выполнение бизнес-процессов компании.

128000 руб.

19.12.2023    2203    2    0    

9

WEB-интеграция Анализ продаж Системный администратор Программист Пользователь Платформа 1С v8.3 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Управленческий учет Платные (руб)

Модуль "Подсистема интеграции AmoCRM с 1С" позволяет обеспечить единое информационное пространство, в котором пользователи могут эффективно управлять клиентской базой, следить за статусами сделок и поддерживать актуальность данных как в AmoCRM, так и в 1С. Бесплатный период Техподдержки - 1 месяц.

60000 руб.

07.05.2019    34238    64    45    

24

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

Онлайн-заказ - это решение для автоматизации процесса оформления заказов на сайте в торговых организациях. Продукт обеспечивает легкое взаимодействие между компанией и клиентами через веб-интерфейс, интегрированный с 1С:Предприятие. Система позволяет снизить операционные расходы, повысить лояльность клиентов и оптимизировать работу отдела продаж.

57600 руб.

26.11.2024    1950    1    1    

4

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

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

36000 руб.

03.08.2020    18812    21    22    

18

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

Расширение значительно упрощает написание API на 1С. Веб программисты получают простой и понятный доступ к 1С. Описание API создаётся автоматически и представляется в виде удобном как для человека, так и для программной обработки.

24000 руб.

27.09.2024    3434    3    2    

4

WEB-интеграция Программист Платформа 1С v8.3 Бухгалтерский учет 1С:Бухгалтерия 3.0 Бытовые услуги, сервис Платные (руб)

Внешняя обработка разрабатывалась для загрузки документов из Ветменеджер в 1С: Бухгалтерия 3.0

12000 руб.

02.02.2021    18545    53    50    

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