Работа с адресным классификатором в современных конфигурациях 1С (ERP, Документооборот, УТ, КА) часто вызывает затруднения у разработчиков. Это связано с тем, что данные ФИАС (и актуального ГАР) хранятся не в открытых справочниках, а в специализированных регистрах сведений с использованием ХранилищеЗначений. В данной статье мы разберем, как правильно взаимодействовать с этими структурами, не нарушая логику типовой конфигурации.
Прежде всего, важно понять, что прямой доступ к таблицам SQL для получения адресов является плохой практикой. Типовые конфигурации используют Библиотеку стандартных подсистем (БСП). За адресные данные отвечает подсистема «Контактная информация». Все данные об адресах, объектах и домах упакованы и зашифрованы для оптимизации размера базы данных. Для поиска и изучения программных функций подсистем пригодится справочник по методам БСП с примерами использования.
Ключевым объектом для нас является регистр сведений Дома здания строения. Именно в нем, в реквизите Строения, хранится закодированная информация о домах, привязанных к конкретному адресному объекту (улице).
Для того чтобы извлечь список домов, привязанных к определенной улице, мы можем воспользоваться встроенными процедурами АдресныйКлассификаторСлужебный. Рассмотрим пример того, как получить список домов, имея идентификатор улицы:
// Получение списка домов по идентификатору улицы
СписокДомов = АдресныйКлассификаторСлужебный.СписокДомов(
Новый УникальныйИдентификатор(ИдентификаторУлицы),
"",
4000
);
После того как мы получили таблицу значений с домом, мы можем найти в ней нужный нам идентификатор адреса. Если идентификатор найден, мы можем переходить к процедуре восстановления полной структуры адреса.
Если перед вами стоит обратная задача — по имеющемуся ИдентификаторАдреса (HouseId) получить полную структуру адреса для отображения или сохранения в контактную информацию, воспользуйтесь следующим алгоритмом:
АдресныйКлассификаторСлужебный.СписокДомов.РаботаСАдресами.АдресПоИдентификатору для получения JSON-строки с описанием адреса.УправлениеКонтактнойИнформациейСлужебный.СтрокаJSONВСтруктуру.Рассмотрим пример кода для формирования структуры адреса:
АдресПоУлицеВJSON = РаботаСАдресами.АдресПоИдентификатору(
ИдентификаторУлицы,
Новый Структура("АдресВJSON, НомерДома, НомерСтроения, ДополнительнаяИнформация", Истина, Дом, Строение, СтрокаАдреса)
);
СтруктураАдреса = УправлениеКонтактнойИнформациейСлужебный.СтрокаJSONВСтруктуру(АдресПоУлицеВJSON);
СтруктураАдреса.id = ИдентификаторАдреса;
// ... (дополнительное заполнение полей)
КонтактнаяИнформация = УправлениеКонтактнойИнформациейСлужебный.КонтактнаяИнформацияИзJSONВXML(
СтруктураАдреса,
Перечисления.ТипыКонтактнойИнформации.Адрес
);
При работе с кодом, представленным выше, учитывайте следующие нюансы:
УправлениеКонтактнойИнформацией... гарантирует стабильность вашего решения.JSON. При передаче данных между клиентом и сервером или при интеграции с внешними сервисами используйте именно этот формат, так как он стандартизирован в 1С.ГАР. Если классификатор устарел, многие функции могут возвращать пустой результат.Если типовых механизмов 1С становится недостаточно, либо требуется высокая производительность при массовой обработке, рассмотрите использование специализированных API-сервисов (например, Dadata или Ahunter), которые предоставляют готовые методы нормализации адресов и работы с кодами ФИАС/ГАР.
Таким образом, для работы с идентификаторами адресов в 1С:ERP рекомендуется следовать паттерну работы с JSON-структурами через служебные модули БСП. Это позволит избежать ошибок при обновлении системы и обеспечит корректную работу с актуальными данными Государственного адресного реестра.