Paste1C
  • API
  • О проекте
  • Контакты
  • Регистрация
  • Вход
Процедура ЗаполнитьИННПоПаспортнымДаннымНаСервере()
	
	Если НЕ ЗначениеЗаполнено(Объект.Ссылка) Тогда
		Сообщить("Перед заполнением ИНН необходимо записать элемент справочника");
		Возврат;
	КонецЕсли;
	
	Запрос = Новый Запрос("ВЫБРАТЬ
	                      |	ПодтверждающиеДокументы.Владелец.Фамилия КАК Фамилия,
	                      |	ПодтверждающиеДокументы.Владелец.Имя КАК Имя,
	                      |	ПодтверждающиеДокументы.Владелец.Отчество КАК Отчество,
	                      |	ПодтверждающиеДокументы.Владелец.ДатаРождения КАК ДатаРождения,
	                      |	ПодтверждающиеДокументы.Серия КАК Серия,
	                      |	ПодтверждающиеДокументы.Номер КАК Номер,
	                      |	ПодтверждающиеДокументы.ДатаВыдачи КАК ДатаВыдачиПаспорта
	                      |ИЗ
	                      |	Справочник.ПодтверждающиеДокументы КАК ПодтверждающиеДокументы
	                      |ГДЕ
	                      |	ПодтверждающиеДокументы.ВидПодтверждающегоДокумента = ЗНАЧЕНИЕ(Перечисление.ВидыДокументов.Паспорт)
	                      |	И ПодтверждающиеДокументы.Владелец = &Владелец
	                      |	И НЕ ПодтверждающиеДокументы.ПометкаУдаления
	                      |	И ПодтверждающиеДокументы.Текущий");
	
	Запрос.УстановитьПараметр("Владелец", Объект.Ссылка);
	
	РезультатЗапроса = Запрос.Выполнить();
	
	Если РезультатЗапроса.Пустой() Тогда
		Сообщить("У данного контрагента не занесен паспорт! Заполнение ИНН невозможно");
		Возврат;
	КонецЕсли;
	
	Выборка = РезультатЗапроса.Выбрать();
	
	Если Выборка.Следующий() Тогда
		
		СоединениеHTTP = Новый HTTPСоединение("service.nalog.ru",443,,,,10, Новый ЗащищенноеСоединениеOpenSSL(,),Ложь);
		
		Заголовки = Новый Соответствие;
		Заголовки.Вставить("Content-type", "application/x-www-form-urlencoded");
		
		СерияПаспорта = СтрЗаменить(СокрЛП(Выборка.Серия), " ", "");
		
		СерияПаспорта = Лев(СерияПаспорта, 2) + " " + Прав(СерияПаспорта, 2);
		
		АдресРесурса = "/inn-proc.do?" + 
		"fam="     + СокрЛП(Выборка.Фамилия) + 
		"&nam="    + СокрЛП(Выборка.Имя) + 
		"&otch="   + СокрЛП(Выборка.Отчество) + 
		"&bdate="  + Формат(Выборка.ДатаРождения, "ДФ=dd.MM.yyyy") + // Формат даты: 04.12.1995 
		"&bplace"  +    // Оставляем пустым
		"&doctype=21" + // Так указывается тип Паспорт на сайте 
		"&docno="  + СерияПаспорта + " " + Выборка.Номер + // Строка вида "99 99 9999990" 
		"&docdt="  + Формат(Выборка.ДатаВыдачиПаспорта, "ДФ=dd.MM.yyyy") + // Формат даты: 04.12.1995 
		"&c=innMy" + 
		"&captcha" + 
		"&captchaToken";
		
		ЗапросHTTP = Новый HTTPЗапрос(АдресРесурса, Заголовки);
		
		Попытка
			
			Ответ = СоединениеHTTP.ОтправитьДляОбработки(ЗапросHTTP);
			
		Исключение
			
			Сообщить(ОписаниеОшибки());
			
			Возврат;
			
		КонецПопытки; 
		
		Если Ответ.КодСостояния = 200 Тогда
			
			ТелоОтвета = Ответ.ПолучитьТелоКакСтроку();
			СтруктураОтвета = СтруктураИзСтрокиJSON(ТелоОтвета);
			
			Если НЕ СтруктураОтвета = Неопределено Тогда
				
				Если СтруктураОтвета.code = 1 Тогда
					
					Объект.ИНН = СтруктураОтвета.inn;
					
				ИначеЕсли СтруктураОтвета.code = 0 Тогда
					
					Сообщить("По данным ФНС не найдена информация об ИНН.
					|Рекомендуется проверить правильность введенных данных и повторить попытку поиска.");
					
				КонецЕсли;
				
			КонецЕсли;
			
		Иначе
			
			Сообщить("Сервер вернул код состояния " + Ответ.КодСостояния + Символы.ПС + ТелоОтвета = Ответ.ПолучитьТелоКакСтроку());
			
		КонецЕсли;
		
	КонецЕсли;
	
КонецПроцедуры

Функция СтруктураИзСтрокиJSON(Строка, СвойстваТипаДата = Неопределено) Экспорт
	
	ЧтениеJSON = Новый ЧтениеJSON;
	ЧтениеJSON.УстановитьСтроку(Строка);
	
	Попытка
		ЗаписьJSON = ПрочитатьJSON(ЧтениеJSON, Ложь, СвойстваТипаДата, ФорматДатыJSON.ISO);
	Исключение
		Возврат Неопределено;
	КонецПопытки;
	
	Возврат ?(ТипЗнч(ЗаписьJSON) = Тип("Структура"), ЗаписьJSON, Неопределено); 
	
КонецФункции
{"contextData":{"NaN":{}},"contextMarkers":[]}

Публикация кода

Размещая информацию на сайте, Вы подтверждаете согласие со всеми пунктами Пользовательского соглашения

Замечание к коду:

  • Загрузить конфигурацию
    • ERP 2.4
    • Управление торговлей 10.3
    • Управление торговлей 11.4
    • Бухгалтерия 2.0
    • Бухгалтерия 3.0
    • ЗУП 3.1
    • Розница 2.3
    • УНФ 1.6
    • БСП 3.1
  • Тема
    • Светлая
    • Светлая c подсветкой запросов
    • Темная
    • Темная с подсветкой запросов
  • Режим запроса
  • Поделиться
Код:

© Александр Шкураев 2025