Как исправить ошибку валидации ИНН и КПП при отправке ТТН индивидуальному предпринимателю в ЕГАИС?

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

При отправке товарно-транспортных накладных (ТТН) контрагентам со статусом индивидуального предпринимателя (ИП) через УТМ ЕГАИС пользователи и разработчики могут столкнуться с ошибкой валидации структуры XML-документа. УТМ отклоняет документ еще на этапе локальной проверки по XSD-схеме, возвращая сообщение об ошибке SAXParseException.

Разберем природу возникновения данной ошибки, структуру XSD-схем ЕГАИС и конкретные шаги для устранения проблемы в программах 1С.

Симптомы проблемы и текст ошибки

При попытке передать накладную в УТМ документ не принимается, а в квитанции или логах содержится сообщение следующего вида:

org.xml.sax.SAXParseException; cvc-pattern-valid: Value '522602426886' is not facet-valid with respect to pattern '[0-9]{10}' for type 'INN10Type'.

Проанализируем текст сообщения: валидатор ожидает значение типа INN10Type, состоящее ровно из 10 цифр (как у юридических лиц), а также наличие обязательного тега KPP из 9 цифр. Однако у индивидуального предпринимателя ИНН состоит из 12 знаков, а КПП отсутствует вовсе. В результате документ признается невалидным.

Причина ошибки: структура XSD-схем ЕГАИС

В схемах ЕГАИС (таких как ClientRef_v2, ClientRef_v3 и последующих) блок описания контрагента oref:Client строится на базе логического ветвления по типам субъектов:

  1. Юридическое лицо РФ: передается внутри ветки oref:UL. Для нее строго обязательны тег oref:INN (10 цифр) и тег oref:KPP (9 цифр).
  2. Физическое лицо / Индивидуальный предприниматель: передается внутри ветки oref:FL. Для нее тег oref:INN содержит ровно 12 цифр, а элемент oref:KPP отсутствует. Наличие даже пустого тега КПП внутри блока физлица приводит к ошибке схемы.
  3. Иностранные организации и члены ЕАЭС: передаются в ветках oref:FO и oref:TS.

Ошибка возникает, когда программа формирования XML ошибочно помещает реквизиты индивидуального предпринимателя в узел oref:UL вместо положенного узла oref:FL.

Способ 1. Проверка карточки контрагента и сопоставления в 1С

Если проблема возникла в типовой конфигурации (например, 1С:Управление торговлей, 1С:Комплексная автоматизация, 1С:ERP или отраслевых решениях для алкогольной продукции), выполним проверку нормативно-справочной информации по следующим шагам:

  1. Откроем карточку контрагента в справочнике Контрагенты и проверим реквизит вида организации. В поле «Вид контрагента» (или «Юр./Физ. лицо») должно быть выбрано значение Индивидуальный предприниматель или Физическое лицо. Поле КПП должно оставаться пустым.
  2. Перейдем в справочник Классификатор организаций ЕГАИС. Найдем соответствующую запись контрагента и проверим его тип. Если организация была создана вручную с типом «Юридическое лицо», алгоритм выгрузки будет формировать тег oref:UL.
  3. Выполним актуализацию данных из ЕГАИС: отправим стандартный запрос на поиск контрагента по ИНН или по идентификатору ФСРАР (запрос QueryClients_v2).
  4. После получения ответа ReplyClient типовой механизм автоматически обновит реквизиты классификатора с корректным типом субъекта.
  5. Проверим регистр сведений сопоставления организаций ЕГАИС и убедимся, что карточка контрагента привязана к корректной записи классификатора ЕГАИС.

Способ 2. Корректировка алгоритма формирования XML в коде

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

В процедуре выгрузки узлов грузоотправителя и грузополучателя (WbShipper, WbConsignee) необходимо добавить проверку типа контрагента перед созданием тега клиента:


Если СтрДлина(СокрЛП(КонтрагентИНН)) = 12 Или ВидКонтрагента = Перечисления.ЮридическоеФизическоеЛицо.ФизическоеЛицо Тогда
    // Формируем блок индивидуального предпринимателя
    ЗаписьXML.ЗаписатьНачалоЭлемента("oref:FL");
    
    ЗаписьXML.ЗаписатьНачалоЭлемента("oref:ClientRegId");
    ЗаписьXML.ЗаписатьТекст(ИдентификаторФСРАР);
    ЗаписьXML.ЗаписатьКонецЭлемента();
    
    ЗаписьXML.ЗаписатьНачалоЭлемента("oref:FullName");
    ЗаписьXML.ЗаписатьТекст(ПолноеНаименование);
    ЗаписьXML.ЗаписатьКонецЭлемента();
    
    ЗаписьXML.ЗаписатьНачалоЭлемента("oref:ShortName");
    ЗаписьXML.ЗаписатьТекст(КраткоеНаименование);
    ЗаписьXML.ЗаписатьКонецЭлемента();
    
    ЗаписьXML.ЗаписатьНачалоЭлемента("oref:INN");
    ЗаписьXML.ЗаписатьТекст(КонтрагентИНН);
    ЗаписьXML.ЗаписатьКонецЭлемента();
    
    // Блок адреса
    СформироватьУзелАдреса(ЗаписьXML, КонтрагентАдрес);
    
    ЗаписьXML.ЗаписатьКонецЭлемента(); // oref:FL
Иначе
    // Формируем блок юридического лица
    ЗаписьXML.ЗаписатьНачалоЭлемента("oref:UL");
    
    ЗаписьXML.ЗаписатьНачалоЭлемента("oref:ClientRegId");
    ЗаписьXML.ЗаписатьТекст(ИдентификаторФСРАР);
    ЗаписьXML.ЗаписатьКонецЭлемента();
    
    ЗаписьXML.ЗаписатьНачалоЭлемента("oref:FullName");
    ЗаписьXML.ЗаписатьТекст(ПолноеНаименование);
    ЗаписьXML.ЗаписатьКонецЭлемента();
    
    ЗаписьXML.ЗаписатьНачалоЭлемента("oref:ShortName");
    ЗаписьXML.ЗаписатьТекст(КраткоеНаименование);
    ЗаписьXML.ЗаписатьКонецЭлемента();
    
    ЗаписьXML.ЗаписатьНачалоЭлемента("oref:INN");
    ЗаписьXML.ЗаписатьТекст(КонтрагентИНН);
    ЗаписьXML.ЗаписатьКонецЭлемента();
    
    ЗаписьXML.ЗаписатьНачалоЭлемента("oref:KPP");
    ЗаписьXML.ЗаписатьТекст(КонтрагентКПП);
    ЗаписьXML.ЗаписатьКонецЭлемента();
    
    // Блок адреса
    СформироватьУзелАдреса(ЗаписьXML, КонтрагентАдрес);
    
    ЗаписьXML.ЗаписатьКонецЭлемента(); // oref:UL
КонецЕсли;

Особенности учета торговых точек ИП в ЕГАИС

Обратим внимание на важное отличие ИП от юридических лиц при работе с местами осуществления деятельности:

  1. В отличие от организаций, у индивидуальных предпринимателей нет механизма КПП для разделения филиалов и торговых точек.
  2. Если ИП осуществляет деятельность по нескольким адресам, в системе ЕГАИС под каждый адрес регистрируется отдельный идентификатор ClientRegId (FSRAR ID).
  3. При оформлении ТТН необходимо контролировать, чтобы в качестве грузополучателя был выбран именно тот ClientRegId, который зарегистрирован в реестре ФСРАР для фактического адреса поставки.
← На главную