При работе с маркируемыми товарами, такими как пиво в кегах, оптовые поставщики часто сталкиваются с проблемой: адрес доставки в электронном УПД не проходит проверку в системе «Честный Знак» — для этого подойдёт комплексное решение для работы с маркировкой и УПД. Ситуация выглядит следующим образом: в базе 1С адрес заполнен абсолютно корректно, он совпадает с данными ФИАС (ГАР) до последнего знака, однако при формировании XML-файла для ЭДО в тег АдрГАР подставляется «чужой» идентификатор (GUID). Вместо ожидаемого ID земельного участка или конкретного строения система подтягивает ID вышестоящего объекта или вовсе другого населенного пункта.
В этой статье мы подробно разберем, почему возникает эта ошибка, как работает механизм определения идентификаторов ГАР в 1С и как программно исправить логику заполнения адреса в конфигурациях на базе 1С:УТ 11.5, КА 2.5 и ERP 2.5, не забывая про сопутствующие задачи.
Для начала проанализируем, как устроена современная адресная система ГАР (Государственный адресный реестр), которая пришла на смену старому ФИАС. В отличие от старой структуры, ГАР оперирует множеством типов идентификаторов для одного и того же физического адреса:
Проблема в типовых конфигурациях 1С заключается в том, что алгоритм формирования УПД версии 5.02 (и выше) настроен на поиск ИдентификаторДома. Если адрес контрагента в 1С указан как «Земельный участок» (з/у), система может проигнорировать его уникальный ID и попытаться найти ID ближайшего «дома» или просто подставить ID улицы/города в поле ИдНом. В результате «Честный Знак» отклоняет документ, так как GUID в УПД не совпадает с GUID места осуществления деятельности (МОД), зарегистрированного в личном кабинете участника оборота товаров.
Рассмотрим ситуацию на примере. Если в XML-файле мы видим ИдНом="31bb1e95-ecf1-4a0c-b57b-100699711dc4", а портал fias.nalog.ru сообщает, что этот ID принадлежит совершенно другому сельскому поселению, это означает, что 1С некорректно отработала поиск по внутренней таблице адресного классификатора. Это происходит из-за того, что в кэше адресных сведений 1С могут храниться устаревшие связи (например, если адрес был загружен до масштабного обновления ГАР) или из-за программного ограничения, которое «обрезает» поиск идентификатора на уровне строения, не учитывая специфику земельных участков.
Прежде чем переходить к кодингу, проанализируем стандартные возможности системы. Иногда ошибку удается решить без программирования:
Если стандартные методы не помогают и система упорно подставляет неверный GUID для земельных участков или офисов, необходимо внести изменения в логику формирования адреса для маркировки. Рассмотрим, какой модуль за это отвечает.
Основная логика подготовки данных для УПД в части взаимодействия с ИСМП сосредоточена в общем модуле ЭлектронноеВзаимодействиеИСМП. Нам необходима процедура ЗаполнитьАдресУчастникаУПД_5_02.
Рекомендуем использовать механизм расширений с аннотацией &Вместо или &ИзменениеИКонтроль. Нам нужно модифицировать блок кода, который определяет переменную ИдентификаторГАР_ФИАС. Типовой код часто проверяет только наличие дома, пропуская земельные участки.
Разберем пример кода, который решает эту проблему:
// В расширении для модуля ЭлектронноеВзаимодействиеИСМП
// Изменяем логику в процедуре ЗаполнитьАдресУчастникаУПД_5_02
Если ЗначениеЗаполнено(АдресПоПриказуМинфина.ИдентификаторДома) Тогда
ИдентификаторГАР_ФИАС = АдресПоПриказуМинфина.ИдентификаторДома;
#Вставка
ИначеЕсли ЗначениеЗаполнено(АдресПоПриказуМинфина.ИдентификаторЗемельногоУчастка) Тогда
// Если дом не найден, проверяем идентификатор земельного участка
ИдентификаторГАР_ФИАС = АдресПоПриказуМинфина.ИдентификаторЗемельногоУчастка;
#КонецВставки
ИначеЕсли ЗначениеЗаполнено(АдресПоПриказуМинфина.ИдентификаторАдресногоОбъекта) Тогда
// Если нет ни дома, ни участка, берем ID самого верхнего доступного объекта (улица/город)
ИдентификаторГАР_ФИАС = АдресПоПриказуМинфина.ИдентификаторАдресногоОбъекта;
Иначе
ИдентификаторГАР_ФИАС = "";
КонецЕсли;
Почему это работает? Структура АдресПоПриказуМинфина заполняется из внутренних таблиц 1С на основе разобранного адреса. Добавляя проверку ИдентификаторЗемельногоУчастка, мы заставляем систему передавать в электронный документ именно тот GUID, который Честный Знак ожидает увидеть для адресов типа "з/у".
Если ваша проблема связана с тем, что идентификатор обрывается на уровне дома, а в Честном Знаке МОД зарегистрирован на конкретный офис или помещение, логику можно расширить аналогичным образом. В структуре адреса могут присутствовать поля ИдентификаторПомещения или ИдентификаторМашиноМеста. Проверьте наличие этих полей в вашей версии БСП (Библиотеки стандартных подсистем) и добавьте их в иерархию условий Если... ИначеЕсли.
Проанализируем ситуацию с адресами в Республике Крым. Из-за особенностей перехода на российскую систему кодирования, в базе ГАР для одного и того же объекта могут существовать «актуальные» и «неактуальные» записи. 1С иногда кэширует старые данные. Если программная правка не помогает, выполните следующие действия:
Это гарантирует, что в структуру АдресПоПриказуМинфина попадут актуальные GUID, которые в дальнейшем будут корректно обработаны нашим исправленным кодом в модуле ЭлектронноеВзаимодействиеИСМП.
Таким образом, сочетание актуализации адресных данных и точечной правки программного кода в части обработки земельных участков позволяет полностью устранить ошибки расхождения кодов ФИАС при обмене УПД через ЭДО. Для этой задачи есть обработка формирования и выгрузки УПД XML.