Использование WEB сервиса для проверки ИНН/КПП контрагента

Обработки - Обработка справочников

Проверка корректности ИНН/КПП с помощью сервиса "Проверка контрагента" от ФНС России.
Цель
Избежать ошибок в предоставляемых сведениях из книг и журналов, в части заполнения идентификационных реквизитов контрагентов (ИНН, КПП).

Выбор сервиса 
 

Для проверки корректности ИНН/КПП будем использовать сервис "Проверка контрагента" от ФНС России.
На текущий момент у данного сервиса доступен SOAP второй версия интерфейса с расширенными возможностями.
 
Описание сервиса 
Итак, что имеем на входе 
XSD схема запроса - http://npchk.nalog.ru/FNSNDSCAWS_2?xsd=1
XSD схема ответа - http://npchk.nalog.ru/FNSNDSCAWS_2?xsd=2  
 
Порядок работы с веб-сервисом следующий:
  • передаем данные по контрагентам, которые надо проверить
  • получаем результат проверки по переданному списку контрагентов  
Необходимо заполнить "коллекцию" NP структуры NdsRequest2 данными по проверяемым контрагентам (максимальное количество проверяемых контрагентов за один запрос = 10000).
 
Поля структуры запроса следующие: INN, KPP(необязательное поле), DT (необязательное поле)
 
 
В качестве ответа мы получаем коллекцию со статусами(атрибут State) проверенных контрагентов:

Для ЮЛ:
 
0 - Налогоплательщик зарегистрирован в ЕГРН и имел статус действующего в указанную дату
1 - Налогоплательщик зарегистрирован в ЕГРН, но не имел статус действующего в указанную дату
2 - Налогоплательщик зарегистрирован в ЕГРН
3 - Налогоплательщик с указанным ИНН зарегистрирован в ЕГРН, КПП не соответствует ИНН или не указан*

4 - Налогоплательщик с указанным ИНН не зарегистрирован в ЕГРН
5 - Некорректный ИНН
6 - Недопустимое количество символов ИНН
7 - Недопустимое количество символов КПП
8 - Недопустимые символы в ИНН
9 - Недопустимые символы в КПП
11 - некорректный формат даты
12 - некорректная дата (ранее 01.01.1991 или позднее текущей даты)
 
 
Для ИП:
 
0 - Налогоплательщик зарегистрирован в ЕГРН и имел статус действующего в указанную дату
1 - Налогоплательщик зарегистрирован в ЕГРН, но не имел статус действующего в указанную дату
2 - Налогоплательщик зарегистрирован в ЕГРН
4 - Налогоплательщик с указанным ИНН не зарегистрирован в ЕГРН
5 - Некорректный ИНН
6 - Недопустимое количество символов ИНН
8 - Недопустимые символы в ИНН
10 - КПП не должен использоваться при проверке ИП
11 - некорректный формат даты
12 - некорректная дата (ранее 01.01.1991 или позднее текущей даты)
 
Реализация в 1С 
Создадим WSпрокси для подключения к сервису и объект "Запрос" (ссылка на ИТС) 
Используем следующие объекты 1С:   
Новый WSОпределения(<МестоположениеWSDL>, <ИмяПользователя>, <Пароль>, <ИнтернетПрокси>, <Таймаут>, <ЗащищенноеСоединение>)
Новый WSПрокси(<Определение>, <URIПространстваИменСервиса>, <ИмяСервиса>, <ИмяТочкиПодключения>, <ИнтернетПрокси>, <Таймаут>, <ЗащищенноеСоединение>) 
ФабрикаXDTO.Создать(<Тип>, <Значение>)   

Параметры веб-сервиса можно посмотреть по адресу http://npchk.nalog.ru/FNSNDSCAWS_2:
 
 
Получаем следующий код: 
Определение = Новый WSОпределения(http://npchk.nalog.ru/FNSNDSCAWS_2?wsdl);
Прокси = Новый WSПрокси(Определение, "http://ws.unisoft", "FNSNDSCAWS2", "FNSNDSCAWS2_Port");
Запрос = Прокси.ФабрикаXDTO.Создать(Прокси.ФабрикаXDTO.Тип(ПространствоИмен, "NdsRequest2"));
Заполним коллекцию Запрос.NP.  Создадим структуру: 
Контрагент = Прокси.ФабрикаXDTO.Создать(Прокси.ФабрикаXDTO.Тип("http://ws.unisoft/FNSNDSCAWS2/Request", "NdsRequest2_NP"));
 
Структура Контрагент содержит следующие атрибуты: 
 
<xs:attribute name="INN" type="tns:ИННТип" use="required">
<xs:attribute name="KPP" type="tns:КППТип" use="optional">
<xs:attribute name="DT" type="tns:ДатаТип" use="optional">  
 

 
Пусть данные по контрагентам находятся в некоторой таблице ДанныеПоКонтрагентам с полями {ИНН, КПП, ДатаДляПроверки}. Заполним из этой таблицы коллекцию контрагентов для веб-сервиса:
Для каждого ДанныеПоКонтрагенту Из ДанныеПоКонтрагентам Цикл
   Контрагент = Прокси.ФабрикаXDTO.Создать(Прокси.ФабрикаXDTO.Тип("http://ws.unisoft/FNSNDSCAWS2/Request", "NdsRequest2_NP")); 
   Контрагент.INN = ДанныеПоКонтрагенту.ИНН; 
   Контрагент.KPP = ДанныеПоКонтрагенту.КПП; 
   Контрагент.DT = Формат(текДата, "ДФ=dd.MM.yyyy"); 
   Запрос.NP.Добавить(Контрагент); 
КонецЦикла;

Передадим веб-сервису данные и выполним запрос:
РезультатЗапроса = Прокси.NdsRequest2(Запрос);
 
Получим состояние по каждому контрагенту(как уже определили выше, состояние находится в поле State коллекции NP):
Для каждого ОтветДляКонтрагента из РезультатЗапроса.NP Цикл 
   Сообщить(ОтветДляКонтрагента.State);
КонецЦикла;
 
Конфигурацию с объектами для проверки ИНН/КПП с помощью сервиса ФНС можно скачать за символическую плату ниже.
 
Состав объектов конфигурации: 
  • Общие модули: ПроверкаКонтрагентов
  • Регламентные задания: ПроверкаКонтрагентов
  • Справочники.Контрагенты
  • Перечисления: СостоянияСуществованияКонтрагента
  • Регистры сведений: СостоянияКонтрагентов

Отблагодарить автора

Скачать файлы

Наименование Файл Версия Размер
Конфигурация с объектами для проверки ИНН/КПП с помощью сервиса ФНС
.cf 14,27Kb
20.07.16
21
.cf 14,27Kb 21 Скачать

См. также

Комментарии
1. Павел Апексимов (LomayaZakat) 26.03.18 16:05 Сейчас в теме
При добавлении контрагента в список для запроса, в сам список добавляется почему то последний контрагент, столько раз сколько всего контрагентов.
2. Павел Апексимов (LomayaZakat) 26.03.18 16:07 Сейчас в теме
И результат запроса возвращается поэтому не верный. Проблема вот тут

Для каждого ДанныеПоКонтрагенту Из ДанныеПоКонтрагентам Цикл 
   Контрагент.INN = ДанныеПоКонтрагенту.ИНН; 
   Контрагент.KPP = ДанныеПоКонтрагенту.КПП; 
   Контрагент.DT = Формат(текДата, "ДФ=dd.MM.yyyy");
 
   Запрос.NP.Добавить(Контрагент); 
КонецЦикла; 
3. Евгений - (zenechka) 432 26.03.18 16:24 Сейчас в теме
(2) Да, Павел, Вы правы.
Во вложенной конфигурации так и есть, а вот в описании отразил некорректно, исправлю. Спасибо.
4. Павел Апексимов (LomayaZakat) 27.03.18 08:15 Сейчас в теме
И опять же не работает. Во-первых, нет кавычек:
Определение = Новый WSОпределения("http://npchk.nalog.ru/FNSNDSCAWS_2?wsdl");

Во-вторых, не задан параметр ПространствоИмен. Должно быть как минимум:
Запрос = Прокси.ФабрикаXDTO.Создать(Прокси.ФабрикаXDTO.Тип("http://ws.unisoft/FNSNDSCAWS2/Request", "NdsRequest2"));

В-третьих, даже со всеми исправлениями сервис возвращает ошибку:
5. Павел Апексимов (LomayaZakat) 27.03.18 08:52 Сейчас в теме
6. Иван Щёкин (IvSchekin) 27.03.18 08:53 Сейчас в теме
Вообще сервис рабочий,
Протестировал в SoapUI - работает.
7. Павел Апексимов (LomayaZakat) 27.03.18 08:56 Сейчас в теме
(6)
SoafUI

Есть пример для этой задачи?
8. Иван Щёкин (IvSchekin) 27.03.18 09:01 Сейчас в теме
Отправил запрос в SoapUI:
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:req="http://ws.unisoft/FNSNDSCAWS2/Request">
<soapenv:Header/>
<soapenv:Body>
<req:NdsRequest2>
<!--1 to 10000 repetitions:-->
<req:NP INN="7812014560" KPP="770701001" DT="20.03.2018"/>
</req:NdsRequest2>
</soapenv:Body>
</soapenv:Envelope>

Получил ответ:
<S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/">
<S:Body>
<NdsResponse2 DTActFL="27.03.2018" DTActUL="27.03.2018" xmlns="http://ws.unisoft/FNSNDSCAWS2/Response">
<NP INN="7812014560" KPP="770701001" DT="20.03.2018" State="0"/>
</NdsResponse2>
</S:Body>
</S:Envelope>
9. Павел Апексимов (LomayaZakat) 27.03.18 09:30 Сейчас в теме
Да в том то и дело. Сервис то рабочий. А ответ не возвращает по коду в обработке.
10. Евгений - (zenechka) 432 27.03.18 11:08 Сейчас в теме
(9) Павел, скачайте cf и прибудет с Вами счастье.
12. Павел Апексимов (LomayaZakat) 28.03.18 08:12 Сейчас в теме
Проблема решилась на стороне фаервола. Большое спасибо автору.
Оставьте свое сообщение