Почему GUID адресного объекта в 1С не совпадает с ФИАС и где найти GUID дома?

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

При интеграции 1С с внешними государственными информационными системами (где важно автоматическое обновление токенов) (например, ЕГИСЗ, Честный знак или МДЛП) разработчики часто сталкиваются с жестким требованием (которое иногда требует автоматической отправки документов): адрес должен быть передан в формате уникальных идентификаторов ГАР (ранее ФИАС). Однако при попытке извлечь id адресного объекта из структуры 1С (БСП) выясняется, что он либо не совпадает с сайтом налоговой, либо поле идентификатора дома вовсе оказывается пустым. В этой статье мы подробно разберем, почему так происходит и как получить корректные данные.

Разберем структуру хранения адреса в 1С

Прежде всего, проанализируем, как Библиотека стандартных подсистем (БСП) хранит адресную информацию. В современных конфигурациях (БП 3.0, ЗУП 3.1, ERP) адрес хранится в виде строки JSON или XML-пакета XDTO. Когда мы открываем форму ввода адреса, программа обращается к регистру сведений АдресныеОбъекты. Важно понимать, что 1С перешла на формат ГАР (Государственный адресный реестр), который является развитием ФИАС. Для изучения программных интерфейсов подсистем и поиска готовых фрагментов кода можно использовать справочник по методам БСП с примерами использования.

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


{
 "value": "171132, Тверская обл, р-н Вышневолоцкий, д Гарусово, д. 2",
 "type": "Адрес",
 "addressType": "Административно-территориальный",
 "id": "b9af1fbb-55ce-40f5-817a-698c19f5e919",
 "areaId": "61723327-1c20-42fe-8dfa-402638d9b396",
 "localityId": "b9af1fbb-55ce-40f5-817a-698c19f5e919",
 "houseId": "fcb98052-9d30-462d-80e2-df40016949eb"
}

Здесь id — это идентификатор последнего значимого адресного объекта (в данном случае деревни), а houseId — идентификатор дома. Проблема часто заключается в том, что при проверке через портал fias.nalog.ru эти GUID могут не совпадать с ожидаемыми. Выясним основные причины этого явления.

Причина №1: Административное vs Муниципальное деление

С 2021 года в России официально сосуществуют две структуры адресного деления. Это ключевой момент, который часто путают программисты при сопоставлении данных. Рассмотрим их подробнее:

  1. Административно-территориальное деление: привычная нам структура (Область — Район — Сельсовет — Населенный пункт).
  2. Муниципальное деление: структура, ориентированная на органы местного самоуправления (Область — Муниципальный район или Городской округ — Сельское поселение — Населенный пункт).

В системе ГАР один и тот же населенный пункт может иметь разные пути подчинения. Например, деревня может входить в состав Вышневолоцкого района (административно) или в состав Вышневолоцкого городского округа (муниципально). Если в 1С выбран муниципальный тип адреса, а вы ищете его в базе по административному дереву, GUID вышестоящих объектов (parent IDs) и даже самого объекта могут отличаться, так как это разные записи в реестре ГАР, связанные с разными типами иерархии.

Причина №2: Отсутствие детализации до домов в локальной базе

Многие пользователи замечают, что в 1С домов гораздо меньше, чем на сайте ФИАС, или идентификатор houseId не заполняется автоматически. Проанализируем механику загрузки классификатора. Полная база ГАР со всеми домами России занимает сотни гигабайт. По умолчанию 1С загружает данные только до уровня улиц.

Если при вводе адреса вы просто вписываете номер дома вручную, программа не всегда может сопоставить его с базой ГАР, если эти данные не были предварительно загружены. В этом случае 1С записывает адрес как "текстовое описание" без привязки к HOUSEGUID.

Для решения этой проблемы мы рекомендуем:

Причина №3: Исторические данные и обновление GUID

Посмотрим на ситуацию со стороны жизненного цикла объектов. В ФИАС/ГАР существуют понятия OBJECTGUID (постоянный идентификатор) и OBJECTID (внутренний код записи, который меняется при переименовании или переподчинении объекта).

БСП старается хранить OBJECTGUID, но если адрес был введен в базу год назад, а за это время в реестре произошли изменения (например, деревня Гарусово была передана из одного сельского поселения в другое), то старый идентификатор может стать "историческим". На сайте ФНС по умолчанию отображаются только актуальные записи. Проанализируем ситуацию: если ваша база обновляется редко, данные классификатора начинают отставать от эталона.

Как получить правильный ГУИД программно?

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


// Получаем структуру адреса из контактной информации
АдреснаяСтруктура = РаботаСАдресами.СведенияОбАдресе(ТекстАдресаJSON);

// Идентификатор последнего объекта (улицы или НП)
АдресныйОбъектGUID = АдреснаяСтруктура.id;

// Идентификатор дома
ДомGUID = АдреснаяСтруктура.houseId;

Если вы обнаружили, что houseId пустой, выполните следующие шаги:

  1. Убедитесь, что адрес вводился через стандартный диалог 1С "Адрес", а не просто строкой.
  2. В форме ввода адреса нажмите кнопку "Проверить заполнение" (или аналогичную, в зависимости от версии БСП). Это заставит систему обратиться к классификатору (локальному или облачному) и подтянуть недостающие идентификаторы.
  3. Проверьте, какой тип деления выбран в настройках программы: муниципальный или административный. Для большинства выгрузок (например, в реестры медицинских организаций) требуется именно тот тип, который используется в принимающей системе. Если принимающий портал не имеет открытого API для интеграции, можно настроить сценарии роботизации OneRPA для автоматического заполнения форм и переноса данных.

Особенности деревень без улиц

Часто возникает вопрос: почему для города идентификатор совпадает, а для деревни — нет? Выясним причину. В городах структура адреса обычно жесткая: Город — Улица — Дом. В деревнях улицы часто отсутствуют. В этом случае "адресным объектом" для дома становится сама деревня (Locality). Если в 1С адрес записан некорректно (например, название деревни попало в поле "Улица"), связка с ГАР разорвется, и вы получите произвольный или пустой GUID.

Всегда проверяйте соответствие полей: area (область), district (район), locality (населенный пункт) и street (улица). Только при правильном заполнении всех уровней иерархии БСП сможет гарантировать корректность houseId.

Итоги

Мы выяснили, что несовпадение ГУИДов — это не всегда ошибка программы. Чаще всего это следствие использования разных моделей деления (муниципальной против административной) или отсутствия детальной информации о домах в локальном классификаторе. Для получения гарантированно верных данных используйте веб-сервисы поддержки 1С и следите за актуальностью адресного классификатора в вашей информационной базе.

← На главную