Как правильно реализовать обращение к Google Maps Geocoding API из 1С:Предприятие?

Программист 1С v8.3 (Управляемые формы) IT и автоматизация бизнеса
← На главную

При интеграции внешних веб-сервисов с 1С разработчики нередко сталкиваются с трудностями при выборе способа отправки данных. В данной статье мы разберем ситуацию, когда попытка «усложнить» запрос путем передачи параметров в теле JSON-объекта привела к ошибкам, и выясним, как правильно взаимодействовать с Google Maps API.

Анализ проблемы: почему возникают ошибки 404 и 400

Часто программисты, привыкшие к современной архитектуре REST API, ожидают, что любой сервис будет принимать данные в теле запроса (Request Body) в формате JSON. Однако Google Geocoding API является классическим RESTful сервисом, который проектировался для использования через HTTP GET.

Рассмотрим причины, по которым возникли ошибки в примере автора:

Решение задачи: использование GET-запроса

Для корректного получения координат по адресу необходимо сформировать URL, в котором все параметры (адрес, язык, ключ доступа) передаются непосредственно в строке запроса. Давайте разберем, как это реализовать средствами платформы 1С.

Для выполнения запроса мы будем использовать объект HTTPСоединение, а для формирования запроса — HTTPЗапрос. Важно убедиться, что ЗащищенноеСоединениеOpenSSL настроено корректно, так как Google API работает только по протоколу HTTPS.

Пошаговая реализация на языке 1С

Рассмотрим пример кода, который позволит нам успешно получить координаты:


Адрес = "Москва, Красная площадь";
// Формируем URL с параметрами. Важно помнить о кодировании спецсимволов!
URLЗапроса = "maps/api/geocode/json?address=" + КодироватьСтроку(Адрес, СпособКодированияСтроки.КодированиеURL) + "&language=ru&key=ВАШ_API_KEY";

// Создаем соединение с сервером
Соединение = Новый HTTPСоединение("maps.googleapis.com", 443, , , Новый ЗащищенноеСоединениеOpenSSL());

// Формируем запрос
Запрос = Новый HTTPЗапрос(URLЗапроса);

// Получаем результат
Результат = Соединение.Получить(Запрос);

// Проверяем статус ответа
Если Результат.КодСостояния = 200 Тогда
    ОтветСтрокой = Результат.ПолучитьТелоКакСтроку();
    // Дальнейшая обработка полученного JSON
КонецЕсли;

Важные рекомендации при работе с API

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

  1. Кодирование URL: Никогда не передавайте адрес «как есть», если в нем есть пробелы или кириллица. Используйте метод КодироватьСтроку с параметром СпособКодированияСтроки.КодированиеURL. Без этого вы рискуете получить ошибку при передаче сложных адресов.
  2. Безопасность API-ключа: Никогда не храните ключ в открытом виде в коде, если это возможно. В консоли Google Cloud Platform обязательно настройте ограничения (API Restrictions или Application Restrictions), чтобы ваш ключ нельзя было использовать с чужих серверов.
  3. Обработка ответа: После получения ответа в формате JSON используйте объект ЧтениеJSON и ПрочитатьJSON для преобразования данных в структуру 1С, с которой удобно работать в коде.
  4. Лимиты запросов: Помните, что Google Maps API имеет квоты на количество запросов в сутки. При массовой обработке данных (например, при геокодировании всей базы контрагентов) рекомендуется использовать паузы между запросами, чтобы не попасть под блокировку.

Таким образом, для работы с Google Geocoding не нужно усложнять архитектуру отправкой тела JSON. Достаточно сформировать корректную строку URL, закодировать параметры и выполнить стандартный GET-запрос. Это самый быстрый и надежный способ интеграции, предусмотренный официальной документацией сервиса.

← На главную