Как получить или найти идентификатор адреса ФИАС в 1С:ERP и других конфигурациях на БСП?

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

Работа с адресным классификатором в современных конфигурациях 1С (ERP, Документооборот, УТ, КА) часто вызывает затруднения у разработчиков. Это связано с тем, что данные ФИАС (и актуального ГАР) хранятся не в открытых справочниках, а в специализированных регистрах сведений с использованием ХранилищеЗначений. В данной статье мы разберем, как правильно взаимодействовать с этими структурами, не нарушая логику типовой конфигурации.

Архитектура хранения данных в 1С

Прежде всего, важно понять, что прямой доступ к таблицам SQL для получения адресов является плохой практикой. Типовые конфигурации используют Библиотеку стандартных подсистем (БСП). За адресные данные отвечает подсистема «Контактная информация». Все данные об адресах, объектах и домах упакованы и зашифрованы для оптимизации размера базы данных. Для поиска и изучения программных функций подсистем пригодится справочник по методам БСП с примерами использования.

Ключевым объектом для нас является регистр сведений Дома здания строения. Именно в нем, в реквизите Строения, хранится закодированная информация о домах, привязанных к конкретному адресному объекту (улице).

Разбор данных из хранилища значений

Для того чтобы извлечь список домов, привязанных к определенной улице, мы можем воспользоваться встроенными процедурами АдресныйКлассификаторСлужебный. Рассмотрим пример того, как получить список домов, имея идентификатор улицы:


// Получение списка домов по идентификатору улицы
СписокДомов = АдресныйКлассификаторСлужебный.СписокДомов(
    Новый УникальныйИдентификатор(ИдентификаторУлицы), 
    "", 
    4000
);

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

Восстановление адреса по идентификатору (обратная задача)

Если перед вами стоит обратная задача — по имеющемуся ИдентификаторАдреса (HouseId) получить полную структуру адреса для отображения или сохранения в контактную информацию, воспользуйтесь следующим алгоритмом:

  1. Найти строку дома в списке, полученном через АдресныйКлассификаторСлужебный.СписокДомов.
  2. Использовать метод РаботаСАдресами.АдресПоИдентификатору для получения JSON-строки с описанием адреса.
  3. Преобразовать полученный JSON в структуру с помощью УправлениеКонтактнойИнформациейСлужебный.СтрокаJSONВСтруктуру.
  4. Дополнить структуру необходимыми полями (страна, код страны, здания).
  5. Сформировать итоговый объект контактной информации.

Рассмотрим пример кода для формирования структуры адреса:


АдресПоУлицеВJSON = РаботаСАдресами.АдресПоИдентификатору(
    ИдентификаторУлицы,
    Новый Структура("АдресВJSON, НомерДома, НомерСтроения, ДополнительнаяИнформация", Истина, Дом, Строение, СтрокаАдреса)
);
СтруктураАдреса = УправлениеКонтактнойИнформациейСлужебный.СтрокаJSONВСтруктуру(АдресПоУлицеВJSON);
СтруктураАдреса.id = ИдентификаторАдреса;
// ... (дополнительное заполнение полей)
КонтактнаяИнформация = УправлениеКонтактнойИнформациейСлужебный.КонтактнаяИнформацияИзJSONВXML(
    СтруктураАдреса, 
    Перечисления.ТипыКонтактнойИнформации.Адрес
);

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

При работе с кодом, представленным выше, учитывайте следующие нюансы:

Если типовых механизмов 1С становится недостаточно, либо требуется высокая производительность при массовой обработке, рассмотрите использование специализированных API-сервисов (например, Dadata или Ahunter), которые предоставляют готовые методы нормализации адресов и работы с кодами ФИАС/ГАР.

Таким образом, для работы с идентификаторами адресов в 1С:ERP рекомендуется следовать паттерну работы с JSON-структурами через служебные модули БСП. Это позволит избежать ошибок при обновлении системы и обеспечит корректную работу с актуальными данными Государственного адресного реестра.

← На главную