1С 8.3 Заполнение информации о Контрагенте по ИНН через сервис api-fns.ru - Программист 1С Минск. Автоматизация бизнеса.

Популярные страницы:
Перейти к контенту

1С 8.3 Заполнение информации о Контрагенте по ИНН через сервис api-fns.ru

Данные > Примеры кода 1С > 1С 8.3 Типовые (БП3, ЗУП, УТ)
Перейти в раздел примеры кода 1С 8.3:
  • 1С 8.3 Типовые
  • Необходимо получить API ключ, бесплатно выдается на портале;
  • Получение формата данных JSON с помощью стандартного GET - запроса;
  • Необходимо учитывать что подключение защищенное (нужно указать параметр СоединениеOpenSSL в http-соединении, иначе будет получен редирект);
  • Описание API: https://api-fns.ru/api_help
Программное заполнение инфо о контрагента по ИНН через api-fns.ru API-ФНС для Предприятия 1С 8.3:
&НаКлиенте
Процедура ЗаполнитьПоИНН(Команда)

   //Проверка заполнения ИНН;
   Если НЕ ЗначениеЗаполнено(Объект.ИНН) Тогда
       Сообщение = Новый СообщениеПользователю;
       Сообщение.Текст = "Значение реквизита не заполнено !";
       Сообщение.Поле = "ИНН";
       Сообщение.Сообщить();
       Возврат;
   КонецЕсли;

   //Создаем HTTPS-соединение, GET-запрос;
   hostname         = "api-fns.ru";
   APIkey            = "СЮДА ВВОДИМ АПИ КЛЮЧ";
   resourse         = СтрШаблон("/api/egr?req=%1&key=%2+", Объект.ИНН, APIkey);
   httpconn         = Новый HTTPСоединение(hostname ,,,,, 5, Новый ЗащищенноеСоединениеOpenSSL());
   httprequest             = Новый HTTPЗапрос(resourse);

   Ответ = Неопределено;
   Попытка
       Ответ = httpconn.Получить(httprequest);
   Исключение
       Сообщение = Новый СообщениеПользователю;
       Сообщение.Текст = "Не удалось выполнить http запрос, код состояния:" + Ответ.КодСостояния;
       Сообщение.Сообщить();
       Возврат;
   КонецПопытки;

   //чтение ответа HTTP-сервера;
   СведенияJSON = Неопределено;
   Попытка
       ЧтениеJSON = Новый ЧтениеJSON;
       ЧтениеJSON.УстановитьСтроку(Ответ.ПолучитьТелоКакСтроку(КодировкаТекста.UTF8));
       СведенияJSON = ПрочитатьJSON(ЧтениеJSON, Истина);
   Исключение
       Возврат;
   КонецПопытки;

   //достаем из соответствия необходимую информацию;
   Попытка
       ПолученноеЗначениеКПП                 = СведенияJSON["items"][0]["ЮЛ"]["КПП"];
       ПолученноеЗначениеНаименование             = СведенияJSON["items"][0]["ЮЛ"]["НаимСокрЮЛ"];
       ПолученноеЗначениеЮрЛицо             =  СведенияJSON["items"][0]["ЮЛ"]["Адрес"]["АдресПолн"];
   Исключение
       Сообщение         = Новый СообщениеПользователю;
       Сообщение.Текст     = "Произошла ошибка! Перепроверьте введенную информацию";
       Сообщение.Сообщить();
       Возврат;
   КонецПопытки;

   //произвольное кол-во реквизитов;
   //делаем проверку на расхождение полученных данных и данных контрагента;
   Если Объект.КПП <> ПолученноеЗначениеКПП
       Или Объект.Наименование <> ПолученноеЗначениеНаименование
       Или Объект.Наименование <> ПолученноеЗначениеНаименование Тогда
       //если расхождение есть, задаем вопрос:
       ТекстВопроса = "Для ИНН "+ Объект.ИНН +
      " в государственном реестре плательщиков соответствует юридическое лицо со следующими реквизитами:
      |
      |Наименование: " + ПолученноеЗначениеНаименование + "
      |КПП                : " + ПолученноеЗначениеКПП + "
      |ЮрАдрес        : " + ПолученноеЗначениеЮрЛицо + "
      |Установить данные реквизиты для текущего контрагента?";
       Ответ = Вопрос(ТекстВопроса, РежимДиалогаВопрос.ДаНет);
   КонецЕсли;

   Если  Ответ = КодВозвратаДиалога.Нет Тогда
       Возврат;
   Иначе
       Объект.КПП = ПолученноеЗначениеКПП;
       Объект.Наименование = ПолученноеЗначениеНаименование;

       ЮрАдресЗначение =  ПолучитьВидКонтактнойИнформацииЮрАдрес();
       СтруктураОтбора = Новый Структура("Вид", ЮрАдресЗначение);

       МассивЗначений = Объект.КонтактнаяИнформация.НайтиСтроки(СтруктураОтбора);

       Если МассивЗначений.Количество() <> 0 Тогда
           Объект.КонтактнаяИнформация.Удалить(МассивЗначений[0]);
       КонецЕсли;

       НоваяСтрокаТЧ = Объект.КонтактнаяИнформация.Добавить();
       НоваяСтрокаТЧ.Тип = ПолучитьТипКонтактнойИнформации();
       НоваяСтрокаТЧ.Вид = ЮрАдресЗначение;
       НоваяСтрокаТЧ.Значение = ПолученноеЗначениеЮрЛицо;
   КонецЕсли;

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

//вспомогательные функции;
&НаСервереБезКонтекста
Функция ПолучитьВидКонтактнойИнформацииЮрАдрес()
   Возврат Справочники.ВидыКонтактнойИнформации.ЮридическийАдресКонтрагента;
КонецФункции // ()

&НаСервереБезКонтекста
Функция ПолучитьТипКонтактнойИнформации()
   Возврат Перечисления.ТипыКонтактнойИнформации.Адрес;
КонецФункции // ()

Поиск кода
0
Комментарии
____________________
Copyright©, «Программист 1С в г.Минске», 11.10.2021
Перепечатка текста и фотографий разрешена при наличии прямой ссылки на источник
Назад к содержимому