Как получить и актуализировать список городов РФ по API в 1С 7.7?

Программист 1С v7.7 IT и автоматизация бизнеса
← На главную

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

Рассмотрим подробнее основные способы решения этой задачи, их преимущества и технические особенности реализации.

Использование официальных адресных реестров (ФИАС / ГАР)

Основным государственным источником адресной информации в РФ является Государственный адресный реестр (ГАР), пришедший на смену классическому ФИАС и КЛАДР. Реестр содержит полные сведения о всех административно-территориальных и муниципальных образованиях.

Проанализируем особенности работы с официальными реестрами:

  1. Локальная база или дельта-обновления: Полный архив реестра имеет большой объем, так как содержит информацию вплоть до улиц, домов и помещений. Однако для задачи формирования списка городов нет необходимости хранить весь массив. Достаточно выполнить первичную выгрузку с фильтрацией по уровню объекта (населенные пункты и города), а затем подгружать только файлы изменений (дельта-выгрузки), которые выходят дважды в неделю.
  2. Онлайн-сервисы 1С: При наличии действующей подписки ИТС можно использовать облачные сервисы проверки и автозаполнения адресов от компании 1С, которые обращаются к актуальной базе ФИАС напрямую через интернет.
  3. Идентификация объектов: Названия городов и их административное подчинение могут меняться со временем. Чтобы избежать дублирования и потери связей, рекомендуется привязывать записи в справочнике 1С не к названию, а к уникальному GUID (UUID) объекта из ФИАС.

Использование внешних REST API и сервисов подсказок

Если нет необходимости хранить гигабайты данных на локальном сервере, оптимальным решением становится использование сторонних веб-сервисов и веб-API адресных подсказок (например, сервисов Kladr-API, Dadata и других аналогичных REST-ресурсов).

Разберем по шагам, как организовать взаимодействие с внешним API из платформы 1С 7.7:

  1. Отправка HTTP-запроса: Поскольку в 1С 7.7 нет встроенного объекта HTTP-соединения, запрос формируется с использованием COM-объекта WinHttp.WinHttpRequest.5.1 или MSXML2.ServerXMLHTTP.
  2. Обработка ответа JSON: Большинство API возвращают данные в формате JSON. Для разбора полученной строки в 1С 7.7 применяется COM-объект MSScriptControl.ScriptControl с языком VBScript или JScript.
  3. Автоматизация обновления: Из-за отсутствия встроенного механизма фоновых заданий автоматический запуск обработки организуется через Планировщик задач Windows (Task Scheduler), который вызывает 1С 7.7 в пакетном режиме.

Пример кода для отправки HTTP-запроса и получения данных в 1С 7.7

Посмотрим на пример реализации HTTP-запроса к внешнему API с помощью объекта WinHttp.WinHttpRequest.5.1:


// Создаем COM-объект для отправки HTTP-запросов
HTTPЗапрос = СоздатьОбъект("WinHttp.WinHttpRequest.5.1");
URL = "https://api.example.com/v1/cities";

HTTPЗапрос.Open("GET", URL, 0);
HTTPЗапрос.SetRequestHeader("Content-Type", "application/json");
HTTPЗапрос.Send();

Если HTTPЗапрос.Status = 200 Тогда
    ОтветСтрокой = HTTPЗапрос.ResponseText;
    // Далее выполняем разбор JSON-строки
Иначе
    Сообщить("Ошибка выполнения запроса: " + HTTPЗапрос.Status);
КонецЕсли;

Для разбора JSON-строки с полученным списком городов разберем следующий пример с использованием MSScriptControl.ScriptControl:


Скрипт = СоздатьОбъект("MSScriptControl.ScriptControl");
Скрипт.Language = "JScript";
// Добавляем функцию-обертку для парсинга JSON
Скрипт.AddCode("function parseJson(str) { return eval('(' + str + ')'); }");

JSОбъект = Скрипт.Run("parseJson", ОтветСтрокой);
// Далее организуем обход полученного массива объектов в цикле

Альтернативный вариант: использование ОКТМО

Если задачу требуется решить без сложных загрузок и обращений к внешним сервисам, можно использовать Общероссийский классификатор территорий муниципальных образований (ОКТМО). Он содержит иерархическую структуру регионов, районов и городов, при этом его объем значительно меньше полных адресных реестров.

Таким образом, выбор конкретного решения зависит от требований к автономности базы: для онлайн-работы подходят REST API и веб-сервисы, а для автономных баз — регулярная загрузка дельта-файлов ГАР/ФИАС.

← На главную