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














































