Top.Mail.Ru
Меню
Каталог Программы 1С Опыт и отзывы Услуги Компания Интересное Контакты

Заполнить контрагента автоматически по ИНН в 1С

Основатель и генеральный директор компании MoscowSoft, Сорокин Сергей
Сорокин Сергей, Генеральный директор MoscowSoft  31.05.2026 Актуальность проверена: 31.05.2026   5 мин.
Подобрать перенос данных 1С

Специализируемся на переносах данных 1С с 2015г.

Подобрать перенос данных 1С >>

Интеграция 1С с маркетплейсами

Специализируемся на интеграциях 1С с маркетплейсами с 2021г.

Изучить продукты >>

Содержание

Требования для работы кода заполнения контрагента

Для работы нужно, чтобы программа содержала БСП (библиотеку стандартных подсистем) и еще нужна подписка ИТС ПРОФ или отдельно на сервис 1С:Контрагент.

Программный код содержит ровно такой функционал, который срабатывает в карточке контрагента при нажатии кнопки Заполнить по ИНН.

Программный код получения данных юрлица по ИНН для 1С Бухгалтерии

Код ниже выполняется на сервере. Ниже читайте рекомендации по работе с ним.

Функция ДанныеЕдиныхГосРеестровПоИНН(Знач ИННОбъекта, Знач ЭтоЮрЛицо) Экспорт
	ДанныеЗаполнения = Новый Структура("ОписаниеОшибки", "");
	
	ИННОбъекта = СокрП(ИННОбъекта);
	
	РезультатПроверки = ИдентификационныеНомераНалогоплательщиков.ПроверитьСоответствиеТребованиямИНН(ИННОбъекта, ЭтоЮрЛицо);
	
	Если РезультатПроверки.СоответствуетТребованиям Тогда
		
		Если РезультатПроверки.ЭтоЮрЛицо Тогда
			РеквизитыКонтрагента = РаботаСКонтрагентами.СведенияОЮридическомЛицеПоИНН(ИННОбъекта).ЕГРЮЛ;
		Иначе
			РеквизитыКонтрагента = РаботаСКонтрагентами.РеквизитыПредпринимателяПоИНН(ИННОбъекта);
		КонецЕсли;
		
		РеквизитыКонтрагента.Вставить("ЮридическоеФизическоеЛицо", 
			?(РезультатПроверки.ЭтоЮрЛицо, Перечисления.ЮридическоеФизическоеЛицо.ЮридическоеЛицо, Перечисления.ЮридическоеФизическоеЛицо.ФизическоеЛицо));
		
		Если ЗначениеЗаполнено(РеквизитыКонтрагента.ОписаниеОшибки) Тогда
			ДанныеЗаполнения.ОписаниеОшибки = РеквизитыКонтрагента.ОписаниеОшибки;
		Иначе
			ДанныеЗаполнения.Вставить("НаименованиеКонтрагента", РеквизитыКонтрагента.Наименование);
			ДанныеЗаполнения.Вставить("ЮридическоеФизическоеЛицо", РеквизитыКонтрагента.ЮридическоеФизическоеЛицо);
			ДанныеЗаполнения.Вставить("АдресРеквизитовКонтрагента", ПоместитьВоВременноеХранилище(РеквизитыКонтрагента, Новый УникальныйИдентификатор));
		КонецЕсли;
	Иначе
		ДанныеЗаполнения.ОписаниеОшибки = РезультатПроверки.ОписаниеОшибки;
	КонецЕсли;
	
	Возврат ДанныеЗаполнения;
КонецФункции

Возвращаемое значение имеет тип Структура. Если у структуры есть свойство ОписаниеОшибки, значит, данные контрагента найти не получилось.

Если ошибки нет, структура будет содержать адрес во временном хранилище в ключе АдресРеквизитовКонтрагента. Структуру с реквизитами контрагента можно получить с помощью команды:

РеквизитыКонтрагента = ПолучитьИзВременногоХранилища(АдресРеквизитовКонтрагента);

У полученной структуры будут свойства Руководитель, ЮридическийАдрес и так далее и тому подобное. Полный перечень свойств изучайте с помощью отладчика.

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

РеквизитыКонтрагента = ПолучитьИзВременногоХранилища(АдресРеквизитовКонтрагента);
	
	Контрагент = Справочники.Контрагенты.НайтиПоРеквизиту("ИНН", ИНН);
	
	Если ЗначениеЗаполнено(Контрагент) Тогда
		Об = Контрагент.ПолучитьОбъект();
	Иначе
		Об = Справочники.Контрагенты.СоздатьЭлемент();
	КонецЕсли;
	
	ЗаполнитьЗначенияСвойств(Об, РеквизитыКонтрагента);
	
	Об.СтранаРегистрации = Справочники.СтраныМира.Россия;
	Если СтрДлина(Об.ИНН) = 10 Тогда
		Об.ЮридическоеФизическоеЛицо = Перечисления.ЮридическоеФизическоеЛицо.ЮридическоеЛицо;
	Иначе
		Об.ЮридическоеФизическоеЛицо = Перечисления.ЮридическоеФизическоеЛицо.ФизическоеЛицо;
	КонецЕсли;
	
	Об.ДатаСоздания = ТекущаяДатаСеанса();
	Об.РасширенноеПредставлениеИНН = Об.ИНН;
	Об.РасширенноеПредставлениеКПП = Об.КПП;
	Об.Записать();
	Контрагент = Об.Ссылка;
	
	Если (РеквизитыКонтрагента.Свойство("Руководитель") Или РеквизитыКонтрагента.Свойство("Руководители")) 
		И Не ЗначениеЗаполнено(Справочники.КонтактныеЛица.НайтиПоРеквизиту("ОбъектВладелец", Об.Ссылка)) Тогда
		
		Руководитель = РеквизитыКонтрагента.Руководитель;
		Если Не ЗначениеЗаполнено(Руководитель) И РеквизитыКонтрагента.Руководители.Количество()>0 Тогда
			Руководитель = РеквизитыКонтрагента.Руководители.Получить(0);	
		КонецЕсли;
		
		Если ЗначениеЗаполнено(Руководитель) Тогда
			ЛицоОб = Справочники.КонтактныеЛица.СоздатьЭлемент();
			ЛицоОб.ОбъектВладелец = Об.Ссылка;
			
			ЗаполнитьЗначенияСвойств(ЛицоОб, Руководитель, "Фамилия, Имя, Отчество, Должность");
			
			Попытка
				Если ЗначениеЗаполнено(Руководитель.Фамилия) Тогда
					ЛицоОб.Фамилия = Руководитель.Фамилия;
				КонецЕсли;
				Если ЗначениеЗаполнено(Руководитель.Имя) Тогда
					ЛицоОб.Имя = Руководитель.Имя;
				КонецЕсли;
				Если ЗначениеЗаполнено(Руководитель.Отчество) Тогда
					ЛицоОб.Отчество = Руководитель.Отчество;
				КонецЕсли;
				Если ЗначениеЗаполнено(Руководитель.Должность) Тогда
					ЛицоОб.Должность = Руководитель.Должность;
				КонецЕсли;
			Исключение
				Сообщение = ОписаниеОшибки();
				Сообщить(сообщение);
				ЗаписьЖурналаРегистрации("ЗаполнениеНовогоКонтрагента.Ошибка", УровеньЖурналаРегистрации.Ошибка, , , Сообщение);
			КонецПопытки;
			
			ЛицоОб.ВидКонтактногоЛица   = Перечисления.ВидыКонтактныхЛиц.КонтактноеЛицоКонтрагента;
			ЛицоОб.Записать();
			Об.ОсновноеКонтактноеЛицо = ЛицоОб.Ссылка;
		КонецЕсли;
		
	КонецЕсли;
	
	Об.ГоловнойКонтрагент = Об.Ссылка;
	
	Если (РеквизитыКонтрагента.Свойство("ЮридическийАдрес") И ЗначениеЗаполнено(РеквизитыКонтрагента.ЮридическийАдрес))
		Или (СтрДлина(ИНН) = 12 И ЗначениеЗаполнено(ЮридическийАдресИП)) Тогда
		
		НайденныеСтроки = Об.КонтактнаяИнформация.НайтиСтроки(Новый Структура("Вид", Справочники.ВидыКонтактнойИнформации.ЮрАдресКонтрагента));
		Если НайденныеСтроки.Количество() = 0 Тогда
			НоваяСтрока = Об.КонтактнаяИнформация.Добавить();
		Иначе
			НоваяСтрока = НайденныеСтроки[0];
		КонецЕсли;
		НоваяСтрока.Тип           = Перечисления.ТипыКонтактнойИнформации.Адрес;
		НоваяСтрока.Вид           = Справочники.ВидыКонтактнойИнформации.ЮрАдресКонтрагента;
		
		Если (РеквизитыКонтрагента.Свойство("ЮридическийАдрес") И ЗначениеЗаполнено(РеквизитыКонтрагента.ЮридическийАдрес)) Тогда
			НоваяСтрока.Представление = РеквизитыКонтрагента.ЮридическийАдрес.Представление;
			НоваяСтрока.ЗначенияПолей = РеквизитыКонтрагента.ЮридическийАдрес.КонтактнаяИнформация;
			НоваяСтрока.Значение      = НоваяСтрока.ЗначенияПолей;
		Иначе
			НоваяСтрока.Представление = ЮридическийАдресИП;
			НоваяСтрока.Значение      = ЮридическийАдресИП;
		КонецЕсли;
		Новаястрока.ВидДляСписка  = НоваяСтрока.Вид;
		
	КонецЕсли;
	
	Если (РеквизитыКонтрагента.Свойство("ЮридическийАдрес") И ЗначениеЗаполнено(РеквизитыКонтрагента.ЮридическийАдрес))
		Или (СтрДлина(ИНН) = 12 И ЗначениеЗаполнено(ЮридическийАдресИП)) Тогда
	
		НайденныеСтроки = Об.КонтактнаяИнформация.НайтиСтроки(Новый Структура("Вид", Справочники.ВидыКонтактнойИнформации.ФактАдресКонтрагента));
		Если НайденныеСтроки.Количество() = 0 Тогда
			НоваяСтрока = Об.КонтактнаяИнформация.Добавить();
		Иначе
			НоваяСтрока = НайденныеСтроки[0];
		КонецЕсли;
		НоваяСтрока = Об.КонтактнаяИнформация.Добавить();
		НоваяСтрока.Тип           = Перечисления.ТипыКонтактнойИнформации.Адрес;
		НоваяСтрока.Вид           = Справочники.ВидыКонтактнойИнформации.ФактАдресКонтрагента;
		Новаястрока.ВидДляСписка  = НоваяСтрока.Вид;
		
		Если (РеквизитыКонтрагента.Свойство("ЮридическийАдрес") И ЗначениеЗаполнено(РеквизитыКонтрагента.ЮридическийАдрес)) Тогда
			НоваяСтрока.Представление = РеквизитыКонтрагента.ЮридическийАдрес.Представление;
			НоваяСтрока.ЗначенияПолей = РеквизитыКонтрагента.ЮридическийАдрес.КонтактнаяИнформация;
			НоваяСтрока.Значение      = НоваяСтрока.ЗначенияПолей;
		Иначе
			НоваяСтрока.Представление = ЮридическийАдресИП;
			НоваяСтрока.Значение      = ЮридическийАдресИП;
		КонецЕсли;
	КонецЕсли;
	
	Если (РеквизитыКонтрагента.Свойство("ЮридическийАдрес") И ЗначениеЗаполнено(РеквизитыКонтрагента.ЮридическийАдрес))
		Или (СтрДлина(ИНН) = 12 И ЗначениеЗаполнено(ЮридическийАдресИП)) Тогда
	
		НайденныеСтроки = Об.КонтактнаяИнформация.НайтиСтроки(Новый Структура("Вид", Справочники.ВидыКонтактнойИнформации.ПочтовыйАдресКонтрагента));
		Если НайденныеСтроки.Количество() = 0 Тогда
			НоваяСтрока = Об.КонтактнаяИнформация.Добавить();
		Иначе
			НоваяСтрока = НайденныеСтроки[0];
		КонецЕсли;
		НоваяСтрока = Об.КонтактнаяИнформация.Добавить();
		НоваяСтрока.Тип           = Перечисления.ТипыКонтактнойИнформации.Адрес;
		НоваяСтрока.Вид           = Справочники.ВидыКонтактнойИнформации.ПочтовыйАдресКонтрагента;
		Новаястрока.ВидДляСписка  = НоваяСтрока.Вид;
		
		Если (РеквизитыКонтрагента.Свойство("ЮридическийАдрес") И ЗначениеЗаполнено(РеквизитыКонтрагента.ЮридическийАдрес)) Тогда
			НоваяСтрока.Представление = РеквизитыКонтрагента.ЮридическийАдрес.Представление;
			НоваяСтрока.ЗначенияПолей = РеквизитыКонтрагента.ЮридическийАдрес.КонтактнаяИнформация;
			НоваяСтрока.Значение      = НоваяСтрока.ЗначенияПолей;
		Иначе
			НоваяСтрока.Представление = ЮридическийАдресИП;
			НоваяСтрока.Значение      = ЮридическийАдресИП;
		КонецЕсли;
	КонецЕсли;
	
	Об.Записать();
	
	УдалитьИзВременногоХранилища(АдресРеквизитовКонтрагента);

Программный код для получения данных по ИНН для "1С Управление торговлей" / "Комплексной автоматизации" / "ERP"

Код отличается только названием общего модуля для проверки ИНН на соответствие обязательным требованиям:

Функция ДанныеЕдиныхГосРеестровПоИНН(Знач ИННОбъекта, Знач ЭтоЮрЛицо) Экспорт
	ДанныеЗаполнения = Новый Структура("ОписаниеОшибки", "");
	
	ИННОбъекта = СокрП(ИННОбъекта);
	
	РезультатПроверки = ОбменСГИСЭПДКлиентСервер.ПроверитьСоответствиеТребованиямИНН(ИННОбъекта, ЭтоЮрЛицо);
	
	Если РезультатПроверки.СоответствуетТребованиям Тогда
		
		Если РезультатПроверки.ЭтоЮрЛицо Тогда
			РеквизитыКонтрагента = РаботаСКонтрагентами.СведенияОЮридическомЛицеПоИНН(ИННОбъекта).ЕГРЮЛ;
		Иначе
			РеквизитыКонтрагента = РаботаСКонтрагентами.РеквизитыПредпринимателяПоИНН(ИННОбъекта);
		КонецЕсли;
		
		РеквизитыКонтрагента.Вставить("ЮридическоеФизическоеЛицо", 
			?(РезультатПроверки.ЭтоЮрЛицо, Перечисления.ЮридическоеФизическоеЛицо.ЮридическоеЛицо, Перечисления.ЮридическоеФизическоеЛицо.ФизическоеЛицо));
		
		Если ЗначениеЗаполнено(РеквизитыКонтрагента.ОписаниеОшибки) Тогда
			ДанныеЗаполнения.ОписаниеОшибки = РеквизитыКонтрагента.ОписаниеОшибки;
		Иначе
			ДанныеЗаполнения.Вставить("НаименованиеКонтрагента", РеквизитыКонтрагента.Наименование);
			ДанныеЗаполнения.Вставить("ЮридическоеФизическоеЛицо", РеквизитыКонтрагента.ЮридическоеФизическоеЛицо);
			ДанныеЗаполнения.Вставить("АдресРеквизитовКонтрагента", ПоместитьВоВременноеХранилище(РеквизитыКонтрагента, Новый УникальныйИдентификатор));
		КонецЕсли;
	Иначе
		ДанныеЗаполнения.ОписаниеОшибки = РезультатПроверки.ОписаниеОшибки;
	КонецЕсли;
	
	Возврат ДанныеЗаполнения;
КонецФункции
MoscowSoft логотип

Подпишитесь на телеграм-канал MoscowSoft!
QR-код (ссылка приглашение) в канал MoscowSoft

https://t.me/MoscowSoft

Публикуем:
- инструкции и советы по разработке на 1С;
- рекомендации по интеграции 1С;
- бесплатно делимся своими обработками;
- публикуем секретные спецпредложения только для подписчиков.

Возврат к списку