При ведении учета в типовой конфигурации 1С:Торговля и Склад 7.7 часто возникает вопрос: как обновлять адресный классификатор, если законодательно произошел переход на Федеральную информационную адресную систему (ФИАС) и Государственный адресный реестр (ГАР), а типовая обработка платформы 7.7 по-прежнему рассчитана на работу с форматом КЛАДР?
Рассмотрим подробно причины такого поведения программы, источники актуальных адресных данных и проверенные технические способы решения задачи.
Проанализируем, почему в конфигурациях на платформе 1С 7.7 не появилась прямая поддержка формата ФИАС/ГАР:
Разберем основной и наиболее простой способ обновления адресных сведений без доработки программного кода конфигурации.
Оператор ФИАС и налоговые органы продолжают регулярное формирование и публикацию адресных сведений не только в формате ГАР/ФИАС (XML), но и в формате КЛАДР 4.0 (набор файлов KLADR.DBF, STREET.DBF, DOMA.DBF, SOCRBASE.DBF). Это делается специально для поддержки учетных систем предыдущих поколений.
Выполним процедуру загрузки по шагам:
Если требуется точная валидация адресов по актуальной базе ГАР с учетом нового муниципального деления, хранить весь массив адресов внутри устаревшей базы 1С 7.7 нецелесообразно. Рассмотрим альтернативный подход: подключение внешнего API адресных подсказок.
Для отправки HTTP-запросов и получения структурированного ответа (JSON/XML) из 1С 7.7 можно использовать системный COM-объект операционной системы WinHttp.WinHttpRequest.5.1 или MSXML2.ServerXMLHTTP, а также внешнюю компоненту V7Plus.
Посмотрим на пример отправки запроса к веб-сервису через COM-объект:
HTTP = СоздатьОбъект("WinHttp.WinHttpRequest.5.1");
HTTP.Open("POST", "https://api-service.example.com/suggest/address", 0);
HTTP.SetRequestHeader("Content-Type", "application/json");
HTTP.SetRequestHeader("Accept", "application/json");
HTTP.SetRequestHeader("Authorization", "Token ВАШ_ТОКЕН_АВТОРИЗАЦИИ");
ТелоЗапроса = "{""query"": """ + СокрЛП(СтрокаПоиска) + """, ""count"": 5}";
HTTP.Send(ТелоЗапроса);
Если HTTP.Status = 200 Тогда
ОтветСтрока = HTTP.ResponseText;
// Разбор ответа и заполнение реквизитов контрагента
Иначе
Сообщить("Ошибка сервиса: " + HTTP.Status + " " + HTTP.StatusText, "!");
КонецЕсли;
Такой способ позволяет получать актуальные наименования переименованных улиц, новые индексы и правильное написание адресов без регулярной локальной загрузки тяжелых баз данных.
В случаях, когда новый адрес по муниципальному делению невозможно корректно сопоставить со структурой КЛАДР (например, сложные внутригородские территории или новостройки), адрес в 1С 7.7 вносится в виде произвольной текстовой строки.
Для целей печати первичных документов (УПД, счета-фактуры, товарные накладные) допускается вывод адреса контрагента единой строкой в полном соответствии с его учредительными документами и выпиской из ЕГРЮЛ/ЕГРИП.