Как исправить неверный код ФИАС (ГАР) в УПД при работе с маркировкой в 1С:Управление торговлей 11

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

При работе с маркируемыми товарами, такими как пиво в кегах, оптовые поставщики часто сталкиваются с проблемой: адрес доставки в электронном УПД не проходит проверку в системе «Честный Знак» — для этого подойдёт комплексное решение для работы с маркировкой и УПД. Ситуация выглядит следующим образом: в базе 1С адрес заполнен абсолютно корректно, он совпадает с данными ФИАС (ГАР) до последнего знака, однако при формировании XML-файла для ЭДО в тег АдрГАР подставляется «чужой» идентификатор (GUID). Вместо ожидаемого ID земельного участка или конкретного строения система подтягивает ID вышестоящего объекта или вовсе другого населенного пункта.

В этой статье мы подробно разберем, почему возникает эта ошибка, как работает механизм определения идентификаторов ГАР в 1С и как программно исправить логику заполнения адреса в конфигурациях на базе 1С:УТ 11.5, КА 2.5 и ERP 2.5, не забывая про сопутствующие задачи.

Анализ проблемы: иерархия ГАР и уровни детализации

Для начала проанализируем, как устроена современная адресная система ГАР (Государственный адресный реестр), которая пришла на смену старому ФИАС. В отличие от старой структуры, ГАР оперирует множеством типов идентификаторов для одного и того же физического адреса:

  1. Идентификатор адресного объекта: GUID улицы, города или района.
  2. Идентификатор дома: GUID конкретного здания.
  3. Идентификатор земельного участка: используется, если объект не является зданием (часто встречается в оптовой торговле и при поставках на склады).
  4. Идентификатор помещения/офиса: самая глубокая детализация.

Проблема в типовых конфигурациях 1С заключается в том, что алгоритм формирования УПД версии 5.02 (и выше) настроен на поиск ИдентификаторДома. Если адрес контрагента в 1С указан как «Земельный участок» (з/у), система может проигнорировать его уникальный ID и попытаться найти ID ближайшего «дома» или просто подставить ID улицы/города в поле ИдНом. В результате «Честный Знак» отклоняет документ, так как GUID в УПД не совпадает с GUID места осуществления деятельности (МОД), зарегистрированного в личном кабинете участника оборота товаров.

Выясняем причину «левых» кодов

Рассмотрим ситуацию на примере. Если в XML-файле мы видим ИдНом="31bb1e95-ecf1-4a0c-b57b-100699711dc4", а портал fias.nalog.ru сообщает, что этот ID принадлежит совершенно другому сельскому поселению, это означает, что 1С некорректно отработала поиск по внутренней таблице адресного классификатора. Это происходит из-за того, что в кэше адресных сведений 1С могут храниться устаревшие связи (например, если адрес был загружен до масштабного обновления ГАР) или из-за программного ограничения, которое «обрезает» поиск идентификатора на уровне строения, не учитывая специфику земельных участков.

Способ 1. Исправление через уточнение данных в карточке контрагента

Прежде чем переходить к кодингу, проанализируем стандартные возможности системы. Иногда ошибку удается решить без программирования:

  1. Проверим правильность заполнения адреса в карточке контрагента. Важно, чтобы адрес был выбран строго из классификатора.
  2. В форме ввода адреса обратим внимание на муниципальное деление. В новых релизах 1С важно использовать именно его. Для поиска других системных ошибок полезно использовать отчет для сравнения товаров на складах и товаров организаций — удобнее через инструмент выявления расхождений остатков на складах.
  3. Попробуем полностью очистить адрес и ввести его заново. При выборе номера дома обратим внимание, предлагает ли система выбрать именно «Земельный участок». Если выбрать тип объекта вручную, 1С может подтянуть правильный GUID во внутренние регистры.

Способ 2. Программное исправление в общем модуле (Рекомендуется)

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

Основная логика подготовки данных для УПД в части взаимодействия с ИСМП сосредоточена в общем модуле ЭлектронноеВзаимодействиеИСМП. Нам необходима процедура ЗаполнитьАдресУчастникаУПД_5_02.

Рекомендуем использовать механизм расширений с аннотацией &Вместо или &ИзменениеИКонтроль. Нам нужно модифицировать блок кода, который определяет переменную ИдентификаторГАР_ФИАС. Типовой код часто проверяет только наличие дома, пропуская земельные участки.

Разберем пример кода, который решает эту проблему:


// В расширении для модуля ЭлектронноеВзаимодействиеИСМП
// Изменяем логику в процедуре ЗаполнитьАдресУчастникаУПД_5_02

Если ЗначениеЗаполнено(АдресПоПриказуМинфина.ИдентификаторДома) Тогда
    ИдентификаторГАР_ФИАС = АдресПоПриказуМинфина.ИдентификаторДома;
    
#Вставка
ИначеЕсли ЗначениеЗаполнено(АдресПоПриказуМинфина.ИдентификаторЗемельногоУчастка) Тогда
    // Если дом не найден, проверяем идентификатор земельного участка
    ИдентификаторГАР_ФИАС = АдресПоПриказуМинфина.ИдентификаторЗемельногоУчастка;
#КонецВставки

ИначеЕсли ЗначениеЗаполнено(АдресПоПриказуМинфина.ИдентификаторАдресногоОбъекта) Тогда
    // Если нет ни дома, ни участка, берем ID самого верхнего доступного объекта (улица/город)
    ИдентификаторГАР_ФИАС = АдресПоПриказуМинфина.ИдентификаторАдресногоОбъекта;
Иначе
    ИдентификаторГАР_ФИАС = "";
КонецЕсли;

Почему это работает? Структура АдресПоПриказуМинфина заполняется из внутренних таблиц 1С на основе разобранного адреса. Добавляя проверку ИдентификаторЗемельногоУчастка, мы заставляем систему передавать в электронный документ именно тот GUID, который Честный Знак ожидает увидеть для адресов типа "з/у".

Работа с помещениями и офисами

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

Важные замечания по регионам (Крым и новые территории)

Проанализируем ситуацию с адресами в Республике Крым. Из-за особенностей перехода на российскую систему кодирования, в базе ГАР для одного и того же объекта могут существовать «актуальные» и «неактуальные» записи. 1С иногда кэширует старые данные. Если программная правка не помогает, выполните следующие действия:

  1. Перейдите в раздел Администрирование — Поддержка и обслуживание — Адресный классификатор.
  2. Воспользуйтесь функцией Очистить адресные сведения для конкретного региона.
  3. Загрузите актуальный классификатор ГАР через интернет или из папки с обновлениями.
  4. Перевыберите адрес в карточке контрагента — поможет автоматическое заполнении адресов в формате ФИАС.

Это гарантирует, что в структуру АдресПоПриказуМинфина попадут актуальные GUID, которые в дальнейшем будут корректно обработаны нашим исправленным кодом в модуле ЭлектронноеВзаимодействиеИСМП.

Таким образом, сочетание актуализации адресных данных и точечной правки программного кода в части обработки земельных участков позволяет полностью устранить ошибки расхождения кодов ФИАС при обмене УПД через ЭДО. Для этой задачи есть обработка формирования и выгрузки УПД XML.

← На главную