Яндекс.API и построение маршрутов в 1С

27.03.25

Разработка - Математика и алгоритмы

Покажу, как расширить функциональность алгоритма поиска пути, используя внешние сервисы.

Внимание! Яндекс.API сам по себе платный и нужен ВАШ API-ключ, свой же я тут не дам, поэтому обработку рабочую в рамках статьи не покажу, но вот опишу принцип её работы, и код необходимо проверять в вашей конфигурации, так как может выходить куча ошибок при вставке моего кода.

Мы уже с Вами рассмотрели множество алгоритмов нахождения маршрутов, и теперь напишу, как пытаюсь привязаться к внешним сервисам.

Если мы хотим использовать адреса контрагентов, нам нужно добавить шаг преобразования адресов в географические координаты, прежде чем отправлять запрос в Яндекс.API.

Зачем интегрировать Яндекс.API?

  • **Реальные данные о дорожной ситуации:** Яндекс.Маршрутизация предоставляет актуальную информацию о пробках, ДТП, ремонтных работах и других факторах, влияющих на время в пути.
  • **Учет различных типов транспорта:** API позволяет строить маршруты для автомобилей, общественного транспорта, велосипедов и пешеходов.
  • **Более точные оценки времени прибытия:** API предоставляет более точные оценки времени прибытия, учитывая дорожную ситуацию и другие факторы.
  • **Расширенная функциональность:** Яндекс.API предоставляет дополнительные возможности, такие как построение маршрутов с несколькими пунктами назначения, учет ограничений по грузоподъемности и габаритам транспортных средств, и т.д.

Как интегрировать Яндекс.Маршрутизацию в 1С (с использованием адресов контрагентов):

1.  **Получение API-ключа:** Для использования Яндекс.Маршрутизации необходимо получить API-ключ на сайте Яндекс.Облака.

2.  **Получение адресов контрагентов:** Необходимо получить адреса начальной и конечной точек маршрута из справочника "Контрагенты" или другого источника данных в вашей конфигурации 1С.

3.  **Преобразование адресов в координаты (геокодирование):**  Яндекс.Маршрутизация принимает на вход географические координаты (широту и долготу), а не текстовые адреса. Поэтому необходимо использовать сервис геокодирования (например, Яндекс.Геокодер) для преобразования адресов контрагентов в координаты.

4.  **Создание HTTP-запроса:** В 1С необходимо сформировать HTTP-запрос к сервису Яндекс.Маршрутизации. Запрос должен содержать следующие параметры:
    *   `apikey`: Ваш API-ключ.
    *   `mode`: Тип транспорта (например, `driving` для автомобиля).
    *   `waypoints`: Координаты начальной и конечной точек (широта, долгота), полученные в результате геокодирования.

5.  **Обработка ответа:** Яндекс.Маршрутизация вернет ответ в формате JSON, содержащий информацию о маршруте, включая:
    *   Длину маршрута.
    *   Время в пути.
    *   Координаты точек маршрута.

6.  **Визуализация маршрута:**  Полученные координаты точек маршрута можно использовать для отображения маршрута на карте (например, в табличном поле) или для автоматической навигации.

Пример кода (с учетом геокодирования):

&НаСервере
Функция ПолучитьКоординатыПоАдресу(Адрес)

    //  Получение координат через Яндекс.Геокодер
    APIKey = "ВАШ_API_КЛЮЧ";
    URL = "https://geocode-maps.yandex.ru/1.x/?apikey=" + APIKey + "&geocode=" + Адрес + "&format=json";

    Попытка
        HTTPЗапрос = Новый HTTPЗапрос(URL);
        HTTPОтвет = WebКлиент.Отправить(HTTPЗапрос);

        Если HTTPОтвет.КодСостояния = 200 Тогда
            JSONЧтение = Новый ЧтениеJSON(Новый ТекстовыйДокумент(HTTPОтвет.ПолучитьТелоКакСтрока()));
            JSONОбъект = ПрочитатьJSON(JSONЧтение, Ложь); // ПрочитатьJSON возвращает структуру или массив

            //  Проверка наличия результатов и извлечение координат
            Если JSONОбъект.response.GeoObjectCollection.featureMember.Количество() > 0 Тогда
                //  Предполагаем, что нужен первый результат
                Координаты = JSONОбъект.response.GeoObjectCollection.featureMember[0].GeoObject.Point.pos; // Строка типа "37.617698 55.755864"
                СписокКоординат = СтрРазделить(Координаты, " ", Ложь);
                Долгота = СписокКоординат[0];
                Широта = СписокКоординат[1];
                
                Координаты = Новый Структура("Широта, Долгота", Широта, Долгота);
                Возврат Координаты;
            Иначе
               Возврат Неопределено;
            КонецЕсли;

        Иначе
            Сообщить("Ошибка геокодирования: " + HTTPОтвет.КодСостояния + " - " + HTTPОтвет.ПолучитьТелоКакСтрока());
            Возврат Неопределено;
        КонецЕсли;
    Исключение
        Сообщить("Ошибка при геокодировании: " + ОписаниеОшибки());
        Возврат Неопределено;
    КонецПопытки;

КонецФункции

&НаКлиенте
Функция ПолучитьМаршрутЯндекс(АдресНачала, АдресКонца)
        //1. Геокодируем адреса
        КоординатыНачала = ПолучитьКоординатыПоАдресу(АдресНачала);
        КоординатыКонца = ПолучитьКоординатыПоАдресу(АдресКонца);

        Если КоординатыНачала = Неопределено ИЛИ КоординатыКонца = Неопределено Тогда
             Сообщить("Не удалось определить координаты для адресов");
             Возврат Неопределено;
        КонецЕсли;
        
        ШиротаНачала = КоординатыНачала.Широта;
        ДолготаНачала = КоординатыНачала.Долгота;

		ШиротаКонца = КоординатыКонца.Широта;
        ДолготаКонца = КоординатыКонца.Долгота;


    // 1. Получаем API ключ (хранить безопасно!)
    APIKey = "ВАШ_API_КЛЮЧ";

    // 2. Формируем URL запроса
    URL = "https://api.routing.yandex.net/v2/route?apikey=" + APIKey +
          "&mode=driving" + // Или другой вид транспорта
          "&waypoints=" +  ШиротаНачала + "," + ДолготаНачала + "|" +  ШиротаКонца + "," + ДолготаКонца;

    // 3. Отправляем HTTP запрос
    Попытка
        HTTPЗапрос = Новый HTTPЗапрос(URL);
        HTTPОтвет = WebКлиент.Отправить(HTTPЗапрос);
        // 4. Обрабатываем ответ
        Если HTTPОтвет.КодСостояния = 200 Тогда
            JSONЧтение = Новый ЧтениеJSON(Новый ТекстовыйДокумент(HTTPОтвет.ПолучитьТелоКакСтрока()));
            JSONОбъект = ПрочитатьJSON(JSONЧтение, Ложь); // Тут надо разобрать JSON и получить данные
            // Достаем координаты точек маршрута, время в пути, и т.д.

            // TODO: Обработать JSONОбъект и получить данные

            Возврат JSONОбъект;

        Иначе
            Сообщить("Ошибка получения маршрута от Яндекса: " + HTTPОтвет.КодСостояния + " - " + HTTPОтвет.ПолучитьТелоКакСтрока());
            Возврат Неопределено;
        КонецЕсли;

    Исключение
        Сообщить("Ошибка при получении маршрута: " + ОписаниеОшибки());
        Возврат Неопределено;
    КонецПопытки;

КонецФункции

Мы рассмотрели базовую интеграцию с Яндекс.Маршрутизацией для построения маршрутов между двумя точками. Однако Яндекс.API предоставляет гораздо больше возможностей для оптимизации логистики и управления маршрутами, которые можно эффективно использовать в связке с реализованными нами алгоритмами (BFS и другими).

1. Построение маршрутов с несколькими точками (оптимизация посещения точек):

Яндекс.Маршрутизация позволяет строить маршруты, включающие несколько точек назначения. Это особенно полезно для задач, связанных с доставкой товаров, обслуживанием клиентов или посещением нескольких объектов. API позволяет указать последовательность посещения точек или предоставить сервису возможность оптимизировать порядок посещения для минимизации времени в пути или расстояния.

Применение в 1С:

Представьте, что у вас есть задача доставить товары нескольким клиентам. Вы можете получить список адресов клиентов из справочника “Контрагенты”, преобразовать их в координаты с помощью Яндекс.Геокодера, а затем передать эти координаты в Яндекс.Маршрутизацию для построения оптимального маршрута. Полученный маршрут можно отобразить на карте и использовать для планирования работы курьера.

2. Учет дорожной ситуации в реальном времени:

Яндекс.API предоставляет актуальную информацию о пробках, ДТП, ремонтных работах и других факторах, влияющих на время в пути. Эта информация может быть использована для динамической корректировки маршрута в процессе выполнения задачи.

Применение в 1С:

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

3. Учет типа транспортного средства:

Яндекс.Маршрутизация позволяет строить маршруты для различных типов транспортных средств, включая автомобили, грузовики, общественный транспорт, велосипеды и пешеходов. Для каждого типа транспорта API учитывает свои особенности, такие как ограничения по скорости, высоте, ширине и грузоподъемности.

Применение в 1С:

При планировании маршрутов необходимо учитывать тип транспортного средства, которое будет использоваться для доставки товаров. Например, для грузовиков можно задать ограничения по высоте и ширине, чтобы избежать проезда под низкими мостами или по узким улицам.

4. Использование API Яндекс.Пробки для анализа и прогнозирования:

API Яндекс.Пробки позволяет получать исторические данные о дорожной ситуации, которые можно использовать для анализа и прогнозирования загруженности дорог в различное время суток и дни недели.

Применение в 1С:

Используя исторические данные о пробках, вы можете оптимизировать время доставки товаров, планируя маршруты в часы наименьшей загруженности дорог. Также можно использовать эти данные для прогнозирования времени прибытия и предоставления клиентам более точной информации о сроках доставки.

 

Код (пример с несколькими точками - требует адаптации):

//  ... (Получение API ключа, геокодирование адресов как в предыдущем примере)

&НаКлиенте
Функция ПолучитьМаршрутЯндексМногоТочек(АдресаМассив)

  APIKey = "ВАШ_API_КЛЮЧ";
  URL = "https://api.routing.yandex.net/v2/route?apikey=" + APIKey + "&mode=driving";

  //  Собираем координаты точек маршрута
  СтрокаКоординат = "";
  Для Каждого Адрес Из АдресаМассив Цикл
      Координаты = ПолучитьКоординатыПоАдресу(Адрес);
      Если Координаты = Неопределено Тогда
           Сообщить("Не удалось получить координаты для адреса: " + Адрес);
           Возврат Неопределено;
      КонецЕсли;

      Если Не ПустаяСтрока(СтрокаКоординат) Тогда
            СтрокаКоординат = СтрокаКоординат + "|"; // Разделитель для нескольких точек
      КонецЕсли;

      СтрокаКоординат = СтрокаКоординат + Координаты.Широта + "," + Координаты.Долгота;
  КонецЦикла;

   URL = URL + "&waypoints=" + СтрокаКоординат;
// Тут остальной код запроса и обработки ответа, как в предыдущем примере.  Нужно адаптировать обработку JSON ответа под multi-point маршрут.

КонецФункции

Хотя Яндекс.API предоставляет мощные инструменты для построения маршрутов, существуют ситуации, когда целесообразно использовать комбинацию наших алгоритмов (муравьиный, Флойда-Уоршелла, волновой трассировки, Беллмана-Форда) и Яндекс.API. Это позволяет создать гибридное решение, которое сочетает в себе преимущества обоих подходов, адаптируясь к различным задачам и ограничениям.

Сценарии для гибридного подхода:

  1. Поиск пути внутри здания или склада (наши алгоритмы) и маршрут до здания (Яндекс.API):

    Представьте задачу доставки товара от поставщика до конкретной полки на складе. Сначала можно использовать Яндекс.API для построения маршрута от поставщика до склада (учитывая дорожную ситуацию). Затем, после прибытия на склад, можно использовать один из наших алгоритмов (например, волновую трассировку или алгоритм муравьиной колонии, если необходимо учитывать различные параметры, такие как загруженность полок) для поиска оптимального маршрута внутри склада до нужной полки.

  2. Предварительное планирование маршрута (наши алгоритмы) и корректировка с учетом пробок (Яндекс.API):

    Можно использовать наши алгоритмы (например, алгоритм Флойда-Уоршелла для расчета оптимальных маршрутов между всеми точками или алгоритм Беллмана-Форда, если необходимо учитывать ограничения по времени) для предварительного планирования маршрута (например, на основе карты города без учета текущей дорожной ситуации). Затем, перед отправкой или в процессе выполнения маршрута, использовать Яндекс.API для получения информации о пробках и корректировки маршрута в реальном времени.

  3. Ограниченная зона покрытия Яндекс.API или отсутствие интернет-соединения:

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

Преимущества гибридного подхода:

  • Гибкость: Возможность адаптировать решение под конкретные условия и требования задачи, выбирая наиболее подходящий алгоритм для каждой части маршрута.
  • Оптимизация ресурсов: Использование наиболее подходящего алгоритма для каждой части задачи: быстрый расчет маршрута на небольшом участке (наши алгоритмы) и учет реальной дорожной обстановки на большем (Яндекс.API).
  • Устойчивость к сбоям: Возможность продолжать работу даже при отсутствии доступа к Яндекс.API, опираясь на заранее рассчитанные маршруты и локальные данные.
  • Учет специфических факторов: Наши алгоритмы позволяют учитывать факторы, которые могут быть не доступны в Яндекс.API, такие как особенности местности, загруженность полок на складе или приоритеты клиентов.

Пример реализации гибридного подхода (схематично, так как рабочий пример много больше):

&НаКлиенте
Функция ПостроитьГибридныйМаршрут(АдресНачала, АдресСклада, КоординатыПолкиНаСкладе)

    // 1. Получаем маршрут от начального адреса до склада через Яндекс.API
    МаршрутДоСклада = ПолучитьМаршрутЯндекс(АдресНачала, АдресСклада);

    Если МаршрутДоСклада = Неопределено Тогда
        Сообщить("Не удалось построить маршрут до склада!");
        Возврат Неопределено;
    КонецЕсли;

    // 2. После прибытия на склад, строим маршрут до полки с помощью одного из наших алгоритмов
    // (Выбор алгоритма зависит от задачи и доступных данных)

    КартаСклада = ПолучитьКартуСклада(); // Функция, возвращающая карту склада в формате, пригодном для алгоритма
    //Выбираем алгоритм в зависимости от условий (например, загруженности полок)
    Если Условие1 Тогда
       МаршрутПоСкладу = ВолноваяТрассировка(КартаСклада, ... /*координаты входа на склад*/ , КоординатыПолкиНаСкладе); // Используем волновую трассировку
    ИначеЕсли Условие2 Тогда
       МаршрутПоСкладу = АлгоритмМуравьинойКолонии(КартаСклада, ... /*координаты входа на склад*/ , КоординатыПолкиНаСкладе); // Используем алгоритм муравьиной колонии
    Иначе
       МаршрутПоСкладу = АлгоритмФлойдаУоршелла(КартаСклада,...);
    КонецЕсли;

    Если МаршрутПоСкладу = Неопределено Тогда
        Сообщить("Не удалось построить маршрут по складу!");
        // Можно попробовать предложить пользователю ввести маршрут вручную или использовать другой алгоритм
    КонецЕсли;

    // 3. Объединяем маршруты:
    ОбщийМаршрут = Новый Массив();
    // Добавляем точки из маршрута до склада
    // (Предположим, что у МаршрутДоСклада есть свойство "ТочкиМаршрута")
    Для Каждого Точка Из МаршрутДоСклада.ТочкиМаршрута Цикл
        ОбщийМаршрут.Добавить(Точка);
    КонецЦикла;

    // Добавляем точки из маршрута по складу
    Для Каждого Точка Из МаршрутПоСкладу Цикл
        ОбщийМаршрут.Добавить(Точка);
    КонецЦикла;

    Возврат ОбщийМаршрут;
КонецФункции

Учет ограничений и оптимизация затрат при использовании Яндекс.API

Использование Яндекс.API для построения маршрутов предоставляет широкие возможности, но важно учитывать ограничения сервиса и оптимизировать затраты, связанные с его использованием.

1. Лимиты на количество запросов:

Яндекс.API устанавливает лимиты на количество запросов, которые можно отправлять в течение определенного периода времени (например, в день или в секунду). Превышение этих лимитов может привести к временной блокировке вашего API-ключа.

Рекомендации:

  • Кэширование результатов: Сохраняйте результаты запросов (например, координаты адресов или информацию о маршрутах) в локальной базе данных или в кэше 1С. Это позволит избежать повторных запросов к API для одних и тех же данных.
  • Оптимизация частоты запросов: Уменьшите частоту запросов к API, например, путем увеличения интервала между обновлениями информации о дорожной ситуации.
  • Использование асинхронных запросов: Отправляйте запросы к API в фоновом режиме, чтобы не блокировать основной поток выполнения программы.

2. Стоимость использования API:

Яндекс.API может быть платным при больших объемах запросов. Важно учитывать стоимость использования API при планировании бюджета проекта.

Рекомендации:

  • Использование бесплатных тарифов: Яндекс.API предоставляет бесплатные тарифы с ограниченным количеством запросов. Используйте эти тарифы для тестирования и разработки.
  • Мониторинг использования: Отслеживайте количество запросов, отправляемых к API, чтобы не превысить лимиты тарифа.
  • Оптимизация алгоритмов: Используйте более эффективные алгоритмы для минимизации количества запросов к API. Например, можно использовать наши алгоритмы для предварительного планирования маршрутов и Яндекс.API только для корректировки с учетом пробок.

3. Ограничения на точность геокодирования:

Сервис геокодирования Яндекс.API может не всегда точно определять координаты адресов. Это может привести к ошибкам при построении маршрутов.

Рекомендации:

  • Проверка результатов геокодирования: Проверяйте результаты геокодирования и, при необходимости, уточняйте адрес вручную.
  • Использование альтернативных сервисов: Если Яндекс.Геокодер не обеспечивает достаточную точность, можно использовать альтернативные сервисы геокодирования.
  • Использование координат, введенных вручную: Предоставьте пользователям возможность вводить координаты вручную, если автоматическое геокодирование не работает.

4. Зависимость от доступности сервиса:

      Использование Яндекс.API делает ваше приложение зависимым от доступности и стабильности сервисов Яндекса.

Рекомендации:

  • Обработка ошибок: Реализуйте обработку ошибок, которые могут возникать при взаимодействии с Яндекс.API.
  • Использование резервных каналов: Предусмотрите возможность использования альтернативных сервисов или алгоритмов, если Яндекс.API недоступен.
  • Локальное кэширование данных: Кэшируйте данные, полученные от Яндекс.API, чтобы приложение могло продолжать работать даже при отсутствии доступа к интернету.

Пример кода (реализация кэширования):

//  У нас уже есть функция для получения координат по адресу 

&НаСервере
Функция ПолучитьКоординатыПоАдресуСКэшированием(Адрес)

    // 1. Проверяем, есть ли координаты в кэше
    Координаты = ПолучитьКоординатыИзКэша(Адрес); //  Предполагаем, что есть функция ПолучитьКоординатыИзКэша

    Если Координаты <> Неопределено Тогда
        // Координаты найдены в кэше
        Возврат Координаты;
    КонецЕсли;

    // 2. Если координат нет в кэше, получаем их через Яндекс.Геокодер
    Координаты = ПолучитьКоординатыПоАдресу(Адрес);

    Если Координаты <> Неопределено Тогда
        // 3. Сохраняем координаты в кэш
        СохранитьКоординатыВКэш(Адрес, Координаты); // Предполагаем, что есть функция СохранитьКоординатыВКэш
    КонецЕсли;

    Возврат Координаты;

КонецФункции

 

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

Способы визуализации маршрутов в 1С:

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

Преимущества: Простота реализации. Недостатки: Не наглядно, сложно оценить маршрут в целом.

2. Использование внешней компоненты (например, Leaflet или Google Maps API): Более продвинутый способ визуализации маршрута - это использование внешней компоненты, которая позволяет отображать карту и наносить на нее маршрут. Существуют различные внешние компоненты для 1С, которые поддерживают работу с картами, например, на основе Leaflet или Google Maps API. Преимущества: Наглядность, возможность масштабирования и перемещения по карте, отображение дополнительных данных (например, пробок). Недостатки: Требуется установка и настройка внешней компоненты, зависимость от стороннего сервиса (Google Maps API может быть платным).

3. Использование встроенных средств 1С (геопространственные типы данных): Начиная с платформы 1С:Предприятие 8.3.10, поддерживаются геопространственные типы данных, которые позволяют хранить и обрабатывать географические координаты и геометрические объекты. С помощью этих типов данных можно реализовать визуализацию маршрута на карте, используя встроенные средства платформы. Преимущества: Не требует установки дополнительных компонентов, полная интеграция с платформой 1С. Недостатки: Ограниченная функциональность по сравнению с внешними компонентами, может потребоваться больше усилий для реализации сложной визуализации.

Пример кода (визуализация в табличном поле):

&НаКлиенте
Процедура ОтобразитьМаршрутВТабличномПоле(Маршрут, ТабличноеПоле)

    ТабличноеПоле.Очистить();

    Для Каждого Точка Из Маршрут Цикл
        НоваяСтрока = ТабличноеПоле.Добавить();
        НоваяСтрока.Широта = Точка.Широта;
        НоваяСтрока.Долгота = Точка.Долгота;
        НоваяСтрока.Растояние = Точка.Растояние;
        НоваяСтрока.Точка = Точка.Точка;   //наименование контрагента, склада или точки маршрута
    КонецЦикла;

КонецПроцедуры

Хотя Яндекс.API является популярным и функциональным сервисом для построения маршрутов, существуют и другие API, которые можно использовать в 1С. Выбор API зависит от ваших требований, бюджета и географического охвата.

Альтернативные API:

  1. Google Maps API:

    Google Maps API предоставляет широкий набор инструментов для работы с картами, включая построение маршрутов, геокодирование, поиск мест и многое другое. API обладает высокой точностью и широким географическим охватом.

    Преимущества: Высокая точность, широкий географический охват, развитая инфраструктура. Недостатки: Может быть платным при больших объемах запросов, требует регистрации и получения API-ключа.

  2. OpenStreetMap (OSM):

    OpenStreetMap - это открытый картографический проект, который предоставляет бесплатные данные о дорогах и инфраструктуре. Для построения маршрутов на основе данных OSM можно использовать различные сервисы, такие как OSRM (Open Source Routing Machine) или GraphHopper.

    Преимущества: Бесплатность, открытость данных, возможность использования локальных данных. Недостатки: Может потребоваться установка и настройка собственного сервера для построения маршрутов, точность данных может варьироваться в зависимости от региона.

  3. Here Technologies API:

    Here Technologies (ранее Nokia Maps) предоставляет API для построения маршрутов, геокодирования, поиска мест и других картографических функций. API ориентирован на автомобильную навигацию и предоставляет точные данные о дорожной сети.

    Преимущества: Высокая точность данных для автомобильной навигации, различные тарифные планы. Недостатки: Может быть платным при больших объемах запросов, требует регистрации и получения API-ключа.

Сравнение API:

Характеристика Яндекс.API Google Maps API OpenStreetMap (OSM) Here Technologies API
Географический охват Россия и СНГ Весь мир Весь мир Весь мир
Точность Высокая Высокая Зависит от региона Высокая для авто
Стоимость Может быть платным Может быть платным Бесплатно Может быть платным
Простота использования Относительно простая Относительно простая Требует настройки Относительно простая

 

Безопасность при работе с API ключами в 1С

       При работе с любыми API, требующими использования ключей (API keys), крайне важно обеспечить их безопасное хранение и использование. Утечка API ключа может привести к несанкционированному использованию сервиса, финансовым потерям и другим неприятным последствиям.

Угрозы безопасности, связанные с API ключами:

  • Хранение ключей в коде: Самый распространенный и опасный способ - хранение ключей непосредственно в коде программы. В этом случае ключ может быть легко обнаружен при анализе кода или декомпиляции.
  • Хранение ключей в конфигурационных файлах: Хранение ключей в конфигурационных файлах также является небезопасным, так как эти файлы часто хранятся в открытом виде и могут быть доступны злоумышленникам.
  • Передача ключей в открытом виде: Передача ключей по незащищенным каналам связи (например, по HTTP) может привести к их перехвату.
  • Использование одного и того же ключа для разных целей: Использование одного и того же ключа для разных приложений или сервисов увеличивает риск его компрометации.

Рекомендации по безопасному хранению и использованию API ключей в 1С:

  1. Использование хранилища параметров конфигурации:

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

  2. Использование переменных среды:

    API ключи можно хранить в переменных среды операционной системы. В этом случае ключ будет доступен только процессу 1С:Предприятие, запущенному в данной среде.

  3. Шифрование ключей:

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

  4. Ограничение прав доступа:

    Ограничьте права доступа к хранилищу ключей и к коду, использующему эти ключи.

  5. Ротация ключей:

    Регулярно меняйте API ключи, чтобы уменьшить ущерб в случае их компрометации.

  6. Мониторинг использования ключей:

    Отслеживайте использование API ключей, чтобы выявить несанкционированные запросы.

Уважаемые читатели,

Представленные в данной статье примеры кода являются иллюстративными и могут потребовать адаптации под вашу конкретную конфигурацию 1С и используемые версии платформы. Пожалуйста, имейте в виду, что код был упрощен для целей наглядности и может не работать “из коробки”. Перед использованием в реальных проектах рекомендуется тщательно протестировать код, обработать возможные ошибки и убедиться в его корректной работе с учетом ваших требований. Также, пожалуйста, убедитесь в наличии необходимых прав доступа и настроек для работы с используемыми API. Спасибо за понимание!

См. также

WEB-интеграция Администрирование веб-серверов Платные (руб)

Веб-портал обеспечивает удобный доступ к конфигурации 1С:ITIL(ИТИЛ), 1С:ITILIUM, Управление IT-отделом 8 через интернет с любого устройства посредством браузера, увеличивая эффективность работы пользователей и снижая нагрузку на сервер. Быстрая инсталляция портала за пару часов, удобный и интуитивно понятный интерфейс и безопасность данных помогут упростить работу с порталом и ускорить выполнение бизнес-процессов компании.

128000 руб.

19.12.2023    2864    3    0    

11

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

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

60000 руб.

07.05.2019    34933    68    45    

27

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

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

57600 руб.

26.11.2024    2614    2    3    

5

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

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

14400 руб.

20.12.2024    991    5    2    

7

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

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

36000 руб.

03.08.2020    19208    23    22    

20

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

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

12000 руб.

02.02.2021    18978    54    50    

31

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

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

24000 руб.

27.09.2024    4433    3    2    

4
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. Serg O. 304 27.03.25 18:14 Сейчас в теме
Большой +
мало картинок (точнее их нет)

визуализация Яндекс-карт прекрасно работает в 1С через HTML-поле (через JavaScript )
пример Создаём простую карту и добавляем на неё объекты

кроме того, есть ещё проще способ - по координатам точек (бесплатно без API-ключа до 10 точек)
просто формируем гиперссылку и открываем её в браузере
user-z99999; +1 Ответить
2. user-z99999 78 28.03.25 09:49 Сейчас в теме
(1)
кроме того, есть ещё проще способ - по координатам точек (бесплатно без API-ключа до 10 точек)
просто формируем гиперссылку и открываем её в браузере

Покажите пример, пожалуйста.
3. Serg O. 304 28.03.25 10:22 Сейчас в теме
(2) Да, пример легко строится (если внимательно посмотреть на строку адреса в браузере)

1 пример - отражения 1 точки:

КоординатыДШ = "37.579457,55.761193"; // пример - Московский зоопарк
НомерМасштаба = "17"; // 11-17 чем больше тем детальнее, 17 - дом, улица, 11 - весь город

URL= "https://yandex.ru/maps/?ll="+КоординатыДШ
		+"&z="+НомерМасштаба
		+"&pt="+КоординатыДШ;

ЗапуститьПриложение(URL);


см. картинку - Пример 1 ниже

---Маршрут строится аналогично------------------
 КоординатыДШ_0 = "37.617482,55.759969"; // центр карты
НомерМасштаба = "14"; // 11-17 чем больше тем детальнее, 17 - дом, улица, 11 - весь город
ТипМаршрута = "auto"; // auto, mt - Муниц.Транспорт. pd - пешком. bc - велосипед, taxi

КоордШД_1  = "55.760983,37.578673";
КоордШД_2  = "55.760257,37.618535";
КоордШД_3  = "55.754151,37.620298";

URL= "https://yandex.ru/maps/?ll="+КоординатыДШ_0
                +"&mode=routes" 
                +"&rtext=" + КоордШД_1  + "~" + КоордШД_2  + "~" + КоордШД_3
                + "&rtt=" + ТипМаршрута
		+"&z="+НомерМасштаба;

// ссылка:   https://yandex.com/maps/?ll=37.617482,55.759969&mode=routes&rtext=55.760983,37.578673~55.760257,37.618535~55.754151,37.620298&rtt=auto&z=14

ЗапуститьПриложение(URL);
Показать

см. картинку - Пример 2 ниже

внимательно только надо следить где Координаты Широта,Долгота,
а где НАОБОРОТ - Долгота,Широта
Прикрепленные файлы:
user-z99999; +1 Ответить
4. user-z99999 78 28.03.25 11:00 Сейчас в теме
(3) Спасибо за пример!
А маршрут между двумя точками можно бесплатно получить, по Москве? (расстояние по дорогам)
(есть только две точки Начало и Окончание)
5. Serg O. 304 28.03.25 11:12 Сейчас в теме
(4) Да, конечно - Маршрут строится по 2-м и более точкам (до 10 точек кажется),
и не только по Москве, а в любом городе или между городами (России)
см. 2-ой пример в комментарии выше (3)

можно даже не по координатам, а даже по адресам Адрес1 - Адрес2
Пример
https://yandex.com/maps/213/moscow/?ll=37.617482%2C55.759969&mode=routes&rtext=г.Москва, Большая Грузинская улица~г.Москва, Красная площадь&rtt=auto&z=14
user-z99999; +1 Ответить
Оставьте свое сообщение