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

andrey5565 298 5 9 8

Необходимо получить API ключ, бесплатно выдается на портале; Получение формата данных JSON с помощью стандартного GET - запроса; Необходимо учитывать что подключение защищенное (нужно указать параметр СоединениеOpenSSL в http-соединении, иначе будет получен редирект);

&НаКлиенте
Процедура ЗаполнитьПоИНН(Команда)

	 //Проверка заполнения ИНН;
	 Если НЕ ЗначениеЗаполнено(Объект.ИНН) Тогда
		 
		 Сообщение = Новый СообщениеПользователю;
		 Сообщение.Текст = "Значение реквизита не заполнено !";
		 Сообщение.Поле = "ИНН";
		 Сообщение.Сообщить();
		 Возврат;    
		 
	 КонецЕсли;
	 
	 //Создаем 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
Орфографическая ошибка в редирект: редирект
Орфографическая ошибка в hostname (найдено 2): hostname
Орфографическая ошибка в resourse (найдено 2): resourse
Орфографическая ошибка в httpconn (найдено 2): httpconn
Орфографическая ошибка в httprequest (найдено 2): httprequest

См. также

Оправка Push уведомления

Заполнить контрагента по ИНН, Получить данные по ИНН

Получение данных об организации и контрагентах в типовых конфигурациях с помощью БСП

ОтправитьSMS (БСП)

Обмен через ВЕБ Сервисы 2 часть

АдресВебСервисаКонтактнойИнформации (БСП)

ОбработатьИнформациюОбОшибкеWebСервиса (БСП)

ТарифСервиса (БСП)

Обмен через ВЕБ Сервисы 1 часть

Модератору