понедельник, 5 октября 2015 г.

Проверка контрагента через налоговую с помощью C#

Вводная: Есть сервис у налоговой "Проверка контрагента" http://npchk.nalog.ru/ В 1С, в свежих релизах он реализован по умолчанию. Но надо было добавить данный функционал в программу на языке C#. Описание работы с сервисом и возможные варианты ответов можно посмотреть по ссылке http://npchk.nalog.ru/ws2.doc

Решение: Для начала создадим пустой проект.
1. В свойствах текущего решения надо добавить ссылку на сервис (в свойствах решения Add -> Service Reference)

2. В качестве ссылки вставляем ссылку на WSDL схему http://npchk.nalog.ru/FNSNDSCAWS_2?wsdl
Студия сама должна найти методы и сгенерировать большую часть кода. Также на этом шаге можем указать имя для сервиса (в нашем примере будет ServiceFNS). Нажимаем OK

3. Переходим к непосредственному редактированию кода. Переходим в Form1 и добавляем ссылку на созданный нами интерфейс для обращения к сервису
using npChkExample.ServiceFNS;

4. Теперь добавим на форму кнопку и напишем простейший обработчик для проверки одного контрагента. Код достаточно простой.

  • Создаём объект по конкретному контрагенту (NdsRequest2NP), 
  • передаём его в массив (NdsRequest2NP[]) 
  • и делаем запрос к сервису - (new FNSNDSCAWS2_PortClient().NdsRequest2(sList)).
  • Вывод результата.

var s = new NdsRequest2NP{
 INN = "7536134094",
        KPP = "753601001",
        DT  = "03.10.2015"
};
 
NdsRequest2NP[] sList = { s };
var s2 = new FNSNDSCAWS2_PortClient().NdsRequest2(sList);
MessageBox.Show(s2.NP.First().State.ToString());


В качестве ответа на запрос возвращается тот же список контрагентов, что и в запросе, в который
для записи о каждом контрагенте добавлен признак состояния (атрибут State), принимающий
значения:
0 - Налогоплательщик зарегистрирован в ЕГРН и имел статус действующего в указанную дату
1 - Налогоплательщик зарегистрирован в ЕГРН, но не имел статус действующего в указанную
дату
2 - Налогоплательщик зарегистрирован в ЕГРН
3 - Налогоплательщик с указанным ИНН зарегистрирован в ЕГРН, КПП не соответствует ИНН
или не указан
4 - Налогоплательщик с указанным ИНН не зарегистрирован в ЕГРН
5 - Некорректный ИНН
6 - Недопустимое количество символов ИНН
7 - Недопустимое количество символов КПП
8 - Недопустимые символы в ИНН
9 - Недопустимые символы в КПП
10 - КПП не должен использоваться при проверке ИП
11 - некорректный формат даты
12 - некорректная дата (ранее 01.01.1991 или позднее текущей даты)

В нашем случае в качестве ответа нам будет выведено Item0, что согласно описанию сервиса означает "Налогоплательщик зарегистрирован в ЕГРН и имел статус действующего в указанную дату". Что соответствует реальному положению дел.

5. Если надо проверить несколько юрлиц, то нужно предварительно добавить в массив больше (можно одновременно до 10000 за раз) (можно и по одному, но ждать очень долго придётся:) )


PS: В реальной программе лучше использовать Async версию запроса, чтобы не вызывать блокировку программы.

Комментариев нет:

Отправить комментарий