Интеграция сервиса проверки идентификационных реквизитов юридических лиц по данным ЕГРН и 1С:Предприятие 8

10.03.21

Интеграция - WEB-интеграция

Целью данной работы является автоматизация проверки идентификационных реквизитов юридических и физических лиц. Для достижения поставленной цели квалификационного исследования необходимо решить следующие задачи: • выбрать средства автоматизации • провести интеграцию • внедрить разработанный инструментарий. В статье я описываю, как именно разрабатывала базу, где и какой код использовала и для чего. Данная интеграция эффективна, она позволяет сотруднику значительно сократить время выполнения проверки контрагентов,в добавок она рассчитана на безграничное количество проверок контрагента, следовательно, не придется покупать пакеты с ограниченным количеством проверок.

Скачать исходный код

Наименование Файл Версия Размер
Интеграция сервиса проверки идентификационных реквизитов юридических лиц по данным ЕГРН и 1С:Предприятие8:
.epf 9,13Kb
5
.epf 8.3.18 9,13Kb 5 Скачать

Для создания модуля используется конфигуратор,так как я писала данную разработку для дипломной работы, не име лицензионной программы, я использовала учебную версию программы 1С Предприятие 8.3.11, после написания обработки и проверки его руководителем, обработка была успешно внедрена в лицензионную программу 1С:УправлениеТорговлей3 и работала исправно.  Так как учебная версия не особо отличается от  лицензионной, я буду сразу описывать пошаговые действия для программы 1С:Управление Торговлей. Для того чтобы запустить 1С в режиме конфигуратор нам нужно сначала открыть 1С:УправлениеТорговлей и в открывшемся окне добавить базу данных на основе которой будет написан данный модуль, нажав на кнопку «Добавить», затем указав путь и название. Далее нужно будет выбрать режим. Нам потребуется конфигуратор. Все нужные объекты конфигурации уже есть в базе, мне остается лишь создать общий модуль, где я буду прописывать код для проверки контрагента и сделать подписку на событие, чтобы при определенном событии, срабатывал мой модуль. Но для начала я сделала простую обработку в учебной версии базы, где проверяла работает ли моя разработка или ее надо было доработать.В первую очередь, я создаю обработку «ПроверкаКонтрагентаПоИНН». В ней я добавляю форму. (Рис.1) Далее создаю кнопку «проверить контрагентов» и вывожу ее на командную панель. Сразу добавляю несколько реквизитов, а именно «Контрагент», «Наименование», «ИНН», «КПП».  В свойствах реквизита «Контрагент» в графе Вид указываю «Поле ввода». Благодаря данному виду, мы сможем выбирать из базы контрагентов. Для остальных реквизитов также выбираю вид «поле ввода».

 

Рисунок 3 - Форма обработки

После того, как мы создали элементы формы и расставили их, приступаем к разделу «Модуль», в котором будем описывать несколько процедур для проверки контрагентов через сервис ФНС. Начинаем мы с того, что создаем команду на кнопке «ПроверитьКонтрагента», делаем мы это на сервере и на клиенте. Данная команда на клиенте выглядит следующим образом:

&НаКлиенте

Процедура ПроверитьКонтрагента (Команда)

         ОчиститьСообщения();

         ПроверитьКонтрагентаСервере();

КонецПроцедуры.

На сервере мы создаем некую таблицу значений «ДанныеКонтрагента», в которой прописываем 4 колонки:

  • «Контрагент»
  • ИНН
  • КПП
  • Состояние

Рисунок 4. - Проверка Контрагента На Сервере, таблица «ДанныеКонтрагента».

 

Далее описываем цикл, где в таблице «ДанныеКонтрагента» добавляем параметр НоваяСтрока, который указывает, что происходит редактирование новой строки. (Рис.2)

 

 Рисунок 5.  -Проверка Контрагента На Сервере, Цикл.

 

Потом прописываем код для получения результата проверки с веб сервисом. Если данные получены, и они не имеют пустое значение, т.е. они должны быть заполненные, то для каждого строки из таблицы «ДанныеКонтрагента» сообщаем ее состояние, иначе сообщается, что не чего проверять, это сообщение будет тогда, когда данные в таблице пустые. Рис.3

 

Рисунок 6. -  Получение результата проверки.

 

Итак, с командой для кнопки я закончила, теперь прописываю остальные, нужные мне, процедуры и функции. Сейчас мы прописываем процедуру, благодаря ей, в журнале будет записываться информация об ошибке.

Процедура ФиксацияОшибкиВЖурналеРегистрации(ИмяСобытия,ИнформацияОбОшибке)

         ЗаписьЖурналаРегистрации(НСтр("ru = '"+ИмяСобытия+"'"),УровеньЖурналаРегистрации.Ошибка,,,ПодробноеПредставлениеОшибки(ИнформацияОбОшибке)); 
КонецПроцедуры 

 

Дальше мы описываем функцию «ДатаСторокой». В ней мы указываем тип даты, что если в свойствах выбран тип «строка», то на выходе мы получим слово «дата», но в случае, если тип указан «дата», ты в результате мы получим числовую дату.

Функция ДатаСтрокой(Дата)

         Результат = Неопределено;

         Если ТипЗнч(Дата) = Тип("Строка") Тогда

                   Результат = Дата;

         ИначеЕсли ТипЗнч(Дата) = Тип("Дата") Тогда

                   Результат = Формат(Дата, "ДФ=dd.MM.yyyy");

         КонецЕсли;

         Возврат Результат;      

КонецФункции

Следом идет функция Состояние ответа сервера. (Рис.5). В ней мы получаем ответ от сервера, при определенном ответе, выходит разное сообщение клиенту. Так клиент будет знать верны ли реквизиты и если выходит ошибка, то в чем причина. Всего ответов от сервера 14.

Рисунок 7. - Состояние ответа от сервера.

 

Данный код будет выполняться, но для наглядности, клиенту лучше ответ от сервиса расписать понятнее, а именно мы подкорректируем значение состояния. Для каждого состояния, кроме, когда ответ равен «0», мы допишем «Проведение невозможно.». Выглядеть это будет данным образом:

ИначеЕсли Ответ = "1" Тогда

                   Если СтрДлина(ДанныеКонтрагента.ИНН) = 12 Тогда

                            Состояние = "Не действует";

                   Иначе

                            Состояние = "Проведение невозможно. Не действует или изменен КПП";

                   КонецЕсли;

         ИначеЕсли Ответ = "3" Тогда

                   Состояние = "Проведение невозможно. КПП не соответствует данным базы ФНС";

         ИначеЕсли Ответ = "4" Тогда

                   Состояние = "Проведение невозможно. Контрагент отсутствует в базе ФНС";

         ИначеЕсли Ответ = "5" ИЛИ Ответ = "6" ИЛИ Ответ = "8" Тогда Состояние = "Проведение невозможно. Ошибка. Некорректный ИНН";

         ИначеЕсли Ответ = "7" ИЛИ Ответ = "9" Тогда

                   Состояние = "Проведение невозможно. Ошибка. Некорректный КПП";

         ИначеЕсли Ответ = "11" ИЛИ Ответ = "12" Тогда

                   Состояние = "Проведение невозможно. Ошибка. Некорректная дата проверки";

         ИначеЕсли Ответ = "10" Тогда

                   Состояние = "Проведение невозможно. Ошибка. ИП заведено как юридическое лицо";

         ИначеЕсли Ответ = "W" Тогда

                   Состояние = "Проведение невозможно. Возникла ошибка заполнения данных контрагента";

         КонецЕсли;        

         Возврат Состояние;     

Так будет очень наглядно и понятно. В самой программе это будет выглядеть виде сообщения внизу, будет выводится значение состояние в зависимости от ответа сервиса ФНС.

 

Рисунок 8 – Сообщение от сервиса

Теперь прописываем функцию проверить контрагента. В этой функции мы пишем, что нас интересует проверка на текущую дату, создаем виртуальную таблицу, куда будем записывать значения реквизитов контрагента. Отправляем это запросом на сервер ФНС и ждем ответ, если ответ получен, то мы автоматически переходим на предыдущую функцию и расшифровываем, полученный нами, ответ, если ответ от сервера все же не пришел, тогда у нас выводится сообщение о том, что сервер не доступен и мы можем проверить контрагента чуть позже, либо же причиной того, что ответ нам не пришел, может послужить пустое значение реквизита ИНН. Саму функцию можно подробно рассмотреть на рисунке 6.

 

Рисунок 9. -Проверить контрагента.

 

Нам надо сделать процедуру - результат проверки веб сервиса. Для начала проверяем есть ли доступ к серверу, описываем что за раз можно проверить 10000 контрагентов, делаем порциональный расчет, создаем запрос на сервер, обрабатываем его ответ. (см. приложение 1).

Создаем процедуру «ДобавитьКонтрагентаВЗапросКСервису». Здесь мы разрабатываем сам запрос к сервису налоговой. Делаем попытку подключения к прокси серверу. Передаем ИНН, КПП контрагента и устанавливаем, что нам надо получить информацию о контрагенте новую, на сегодняшний день (для этого помечаем ДатаСтрокой(текущая дата)). И прописываем исключение, что есть ошибка при заполнении запроса, поэтому запрос не отправляется на обработку на сервер. (Рис.7) После это мы создаем процедуру обработка ответа сервиса.

 

Рисунок 10 -  Добавление запроса.

 

Затем приступаем к функции доступа к сервису ФНС. Вот так она выглядит:

Функция ЕстьДоступКВебСервисуФНС()        

         Возврат ПолучитьWSПрокси() <> Неопределено;    

КонецФункции

Последняя функция в моей обработке будет поучение прокси сервера:

Функция ПолучитьWSПрокси()     

         WSПрокси = Неопределено;

         Попытка

                   Определение = Новый WSОпределения("http://npchk.nalog.ru/FNSNDSCAWS_2?wsdl");

                   WSПрокси = Новый WSПрокси(Определение, "http://ws.unisoft", "FNSNDSCAWS2", "FNSNDSCAWS2_Port");

         Исключение

                   ФиксацияОшибкиВЖурналеРегистрации("Проверка контрагентов. Ошибка подключени WSПрокси.",ИнформацияОбОшибке())     

         КонецПопытки;

         Возврат WSПрокси;    

КонецФункции

 Данная обработка отлично работает. Она проверяет уже существующих в базе и новых контрагентов. Для этого нам надо просто указать наименование организации и ИНН, если мы хотим проверить, тех контрагентов, которые есть в базе, и убедиться, что их не прикрыли и они до сих пор являются действующими компаниями или ИП. Чтобы проверить новых контрагентов, нам достаточно просто ввести ИНН. Внизу на форме, после того, как нажать на кнопку, выйдет сообщение клиенту, о том есть он в базе ФНС или нет, или может что-то некорректно было введено. Также эта обработка позволяет проверить сразу несколько контрагентов, что заметно сократит время этой процедуры. (См. приложение). Для крупных фирм эта обработка станет отличным решением для автоматизации сервиса проверки контрагентов через ФНС. Но это я сделала в пробной базе, чтобы посмотреть работает или нет, теперь мне надо это переместить в конфигурацию 1С:УТ 11 в общий модуль, кое где исправить реквизиты, чтобы мы могли нормально работать и сделать подписку на событие , а именно при изменении статуса будет срабатывать проверка. В данной базе подписка на событие – это моя главная задача, так как основную работу я проделала только что в пробной базе и мне ее остается только переместить.

Перед тем как начинать создавать подписку на событие для документа «ЗаказКлиента», необходимо сначала создать общий модуль «ПроверкаКонтрагента», куда я помещу свою обработку.

Общий модули в 1С — объект метаданных конфигурации, хранящий в себе программный код, который часто вызывается в конфигурации. Функцию/процедуру можно вызвать из любого места конфигурации (если она экспортная). Добавляем новый модуль, называем его, в свойствах убираем галочку рядом с «глобальный» и ставим их напротив «сервер» и «внешнее соединение». Если флаг будет стоять на «глобальны», то, когда мы начнем создавать подписку, наш модуль может не показаться. Перемещаем нашу обработку. Сначала убираем везде &НаКлиенте и &НаСервере, в общем модуле такое никогда не пишется. Теперь нам надо убрать лишнее в коде, так некоторые реквизиты есть и их описывать не надо. Первая процедура нам не понадобится, так как тут уже есть справочник и документ, созданные со всеми реквизитами, поэтому первые две процедуры мы удаляем (они взаимосвязаны). Также удаляем процедуру КонтрагентПриИзмененииНаСервере, нам она тоже не понадобится.

 

Рисунок 11- Свойства общего модуля

 

Подписка на событие 1С 8.3 — объект конфигурации, позволяющий назначить обработчик на определенное событие объекта. Такой обработчик можно назначить сразу на несколько объектов конфигурации, например, сразу на все документы. Перед созданием подписки необходимо обдумать два момента – после какого события процедура должна быть выполнена и для каких объектов. После того как перечень объектов конфигурации для подписки определен, необходимо выбрать событие, после которого выполнится наша процедура. Список возможных событий для выбранных объектов система предложит вам при создании. 

Обработчики подписки на события вызываются после обработчика объекта, т.е. если подписка на события установлена на событие «ОбработкаПроведение», то вначале отработает обработчик из модуля объекта, а потом уже обработчик из подписки.

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

Я часто использую подписки на событие для того, чтобы не менять обработчики типовых документов. Это очень удобно, например, мы в подписке можем корректировать движения документа или добавлять движения по новым регистрам, не меняя при этом конфигурацию.

 

Рисунок 12- Свойства подписки на событие

В первую очередь необходимо заполнить поля «Имя» и «Синоним». Называем нашу подписку «ПроверкаКонтрагента». Синоним автоматически заполнится. Свойство «Источник» указывает, какие узлы конфигурации участвуют в подписке. В свойстве «Обработчик» необходимо указать один из присутствующих в конфигурации модулей с установленным свойством «Серверный». Здесь мы указываем, подготовленный мной, общий модуль «ПроверкаКонтрагента».

 

Рисунок 13.  Подписка на событие

 

В источнике мы выбираем документ «ЗаказКлиента», для которого и делаем подписку. В событие указываем «ПриЗаписи». После выбора модуля и перехода в него, остается лишь описать действия процедуры, и на этом создание подписки в конфигурации будет закончено.

Переходим к созданию подписки на событие. Прописываем, если статус имеет значение «К обеспечению» (к выполнению) или «К отгрузке», тогда выполняется наша процедура и выводится сообщение (информация о контрагенте).

 

Рисунок 14.  Добавление запроса

 

Проверяем на работоспособность.

 

Рисунок 15.  Добавление запроса

 

Можно еще улучшить нашу доработку, чтобы сообщение с ошибкой выходило только тогда, когда контрагента нет в базе ФНС, либо же когда что-то не корректно введено. Для это нам надо переделать последнюю процедуру. Прописываем в процедуре Проверить контрагента по ссылке структуру: РезультатПроверки = Новый Структура ("Ответ,СостояниеФНС","",""); , после нам надо изменить в этой же процедуре «ответ» и «состояниеФНС»  на РезультатПроверки.Ответ и РезультатПроверки.СостояниеФНС. После изменяем процедуру подписки на событие. В ней мы дописываем строку, в которой ссылаемся на процедуру ПроверитьКонтрагентаПоСсылке и создаем условие: если ответ не равен «0» (контрагент есть в базе ФНС), то мы выводим сообщение и ошибку, иначе мы ничего не выводим. Данную процедуру, можно рассмотреть ниже:

Процедура ПроверкаКонтрагента(Источник, Отказ) Экспорт

         Если Источник.Статус = Перечисления.СтатусыЗаказовКлиентов.КОбеспечению

                   ИЛИ  Источник.Статус = Перечисления.СтатусыЗаказовКлиентов.КОтгрузке Тогда

                   РезультатПроверки = ПроверитьКонтрагентаПоСсылке(Источник.Контрагент);

                   Если РезультатПроверки.Ответ <> "0" Тогда

                            Сообщение = Новый СообщениеПользователю;

                            Сообщение.Текст = РезультатПроверки.СостояниеФНС;

                            Сообщение.Сообщить();

                            Отказ = Истина;

                   КонецЕсли;

         КонецЕсли;       

КонецПроцедуры

 

На этом моя разработка закончена.
 

интеграция бесплатная проверка контрагентов обработка внедрение в 1С:УТ ИНТЕГРАЦИЯ 1С: УТ С ВЕБ СЕРВИСОМ ФНС Интеграция сервиса проверки идентификационных реквизитов

См. также

Интеграция Альфа Авто 5 / Альфа Авто 6 и AUTOCRM / Инфотек

Сайты и интернет-магазины WEB-интеграция Платформа 1С v8.3 Конфигурации 1cv8 1С:Управление торговлей 11 Автомобили, автосервисы Россия Управленческий учет Платные (руб)

Интеграционный модуль обмена между конфигурацией Альфа Авто 5 и Альфа Авто 6 и порталом AUTOCRM. Данный модуль универсален. Позволяет работать с несколькими обменами AUTOCRM разных брендов в одной информационной базе в ручном и автоматическом режиме.

36000 руб.

03.08.2020    15976    13    18    

13

Интеграция 1С — Битрикс24. Обмен задачами

Сайты и интернет-магазины Интеграция WEB-интеграция Платформа 1С v8.3 Конфигурации 1cv8 Управленческий учет Платные (руб)

Интеграция 1С и Битрикс24. Разработка имеет двухстороннюю синхронизацию 1С и Битрикс24 задачами. Решение позволяет создавать пользователя в 1С из Битрикс24 и наоборот. Данная разработка технически подходит под все основные конфигурации линейки продуктов 1С:Предприятие 8.3 (8.3.18.1289). При приобретении предоставляется 1 месяц бесплатных обновлений разработки. Доступна демо-версия продукта с подключением Вашего Битрикс24

5040 руб.

04.05.2021    17973    9    15    

13

SALE! 10%

Автоматическая загрузка файлов (например, прайс-листов) из электронной почты, FTP, HTTP, их обработка и выгрузка на FTP (на сайт) и для других целей

Прайсы WEB-интеграция Ценообразование, анализ цен Файловый обмен (TXT, XML, DBF), FTP Автомобили, автосервисы Оптовая торговля, дистрибуция, логистика Управленческий учет Платные (руб)

Программа с заданным интервалом времени (или по ручной команде) скачивает файлы (например, прайс-листы поставщиков) из различных источников: письма электронной почты, FTP или HTTP-адреса, и сохраняет их в каталог упорядоченной структуры. При этом извлекает файлы из архивов, может переименовывать файлы и менять их формат (csv, xls, txt). Можно настроить выгрузку обработанных файлов на сайт (через FTP-подключение). Программа будет полезна компаниям, у которых есть большое количество поставщиков и/или прайс-листы поставщиков обновляются часто (необязательно прайс-листы, файлы могут быть любого назначения). Собранные таким образом актуальные версии прайс-листов можно выгрузить с помощью программы себе на сайт (или на любой FTP-сервер) или выполнить другие необходимые задачи.

28000 25200 руб.

28.05.2015    84965    26    51    

50

Заполнение по ИНН или наименованию реквизитов контрагента по данным сайта ФНС

Обмен с ГосИС WEB-интеграция Платформа 1С v8.3 Управляемые формы 1С:Комплексная автоматизация 1.х 1С:Бухгалтерия 2.0 1С:Управление торговлей 10 1С:Управление производственным предприятием 1С:Управление нашей фирмой 1.6 1С:Бухгалтерия государственного учреждения 1С:Документооборот 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Платные (руб)

Обработка является альтернативой механизму, разработанному фирмой 1С и заполняющему реквизиты контрагента по ИНН или наименованию. Не требуется действующей подписки ИТС. Вызывается как внешняя дополнительная обработка, т.е. используется, непосредственно, из карточки контрагента. Заполнение по ИНН или наименованию реквизитов контрагента по данным сайта ФНС (egrul.nalog.ru) для БП 2.0, БП 3.0, БГУ 1.0, БГУ 2.0, УТ 10.3, УТ 11.x, КА 1.1, КА 2.x, УПП 1.x, ERP 2.x, УНФ 1.5, УНФ 1.6, УНФ 3.0, ДО 2.1

2400 руб.

28.04.2016    89108    163    216    

319

[Расширение] БОР-Навигатор.Культура

Зарплата Бюджетный учет WEB-интеграция Обмен с ГосИС Платформа 1С v8.3 Сложные периодические расчеты 1С:Зарплата и кадры государственного учреждения 3 Государственные, бюджетные структуры Россия Бюджетный учет Платные (руб)

Расширение конфигурации, включающее в себя объекты, необходимые для подготовки и сдачи отчета "Штатная численность" системы "БОР-Навигатор.Культура" в программе "1С:Зарплата и кадры государственного учреждения", редакция 3.1.

8400 руб.

01.02.2019    25901    9    0    

7
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. serg-lom89 76 11.03.21 15:13 Сейчас в теме
как по мне лучше сделать какой то признак у карточки контрагента(статус) или же РС "Статусы контрагентов"(можно даже периодический) и уже по нему смотреть при проведении Заказа .
Если сервис будет не доступен будет ошибка пользователю.

А уже анализ "Статуса контрагента" повесить на регламентное задание.
2. RinaKate97 4 12.03.21 09:12 Сейчас в теме
(1)Да, можно было сделать и так как вы сказали, так даже будет удобнее при работе,но я описала самый простой и понятный способ, на мой взгляд)
А так можно добавить еще один статус и вместо вывода сообщения будет меняться статус контрагента
3. DoReMi 02.04.21 12:52 Сейчас в теме
Я тут искал Единый Государственный Реестр Недвижимости (ЕГРН) и нашёл эту обработку. Печально, что у нас два реестра на одно сокращение.
Оставьте свое сообщение