Заполнение реквизитов контрагентов по ИНН

Обработки - Обработка справочников

Обработка получает данные юридического лица или ИП с бесплатного сервиса https://огрн.онлайн/. Заполняет реквизиты: ИНН, КПП, наименования, юр. адрес, ФИО директора.

Работает со всеми стандартными конфигурациями. Есть управляемая и обычная формы. Можно встроить в конфигурацию, можно использовать самостоятельно.

Процедура обработки для заполнения реквизитов по ИНН:

//ИНН(строка) - номер по которому ищем контрагента 
//ТекстОтвета(строка) - переменная в которой будет текст ответа с сервиса в формате JSON после поиска
//Результат(структура) - переменная в которой будет распарсенный текст ответа после поиска. Данных больше, чем может предусмотрено полей в справочнике "Контрагенты"
//Контрагент(справочникОбъект.Контрагенты) - переменная в которой будет заполненный элемент справочника после поиска. Если параметр не передавать, элемент не заполняется.
//ТекстОшибки(строка) - переменная в которой будет текст возникшей ошибки при после поиска.
Процедура Заполнить(ИНН, ТекстОтвета = Неопределено, Результат = Неопределено, Контрагент = Неопределено, ТекстОшибки = "")

Пример кода для встраивания в УТ 10:

Процедура ЗаполнитьПОИНННажатие(Элемент)
    ОбработкаЗаполнения = Обработки.ДанныеКонтрагентаПоИНН.Создать();
    ТекстОшибки = "";
    
    Результат = Новый Структура;
    ТекстОтвета = "";

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

После загрузки данных программа возвращает:

  1. Текст ответа с сервера в формате JSON для самостоятельной обработки.
  2. Распарсенный текст в виде структуры 1С
  3. Заполненный элемент справочника "Контрагенты"

Для работы необходима версия платформы не ниже 8.3.6.1977

Тестирование производилось на конфигурациях:

  • Управление торговлей, редакция 10.3.40.1, 11.2.3.200
  • Бухгалтерия предприятия, редакция 2.0.66.36, 3.0.52.35.

Скачать файлы

Наименование Файл Версия Размер
Заполнение реквизитов контрагентов по ИНН:
.epf 13,95Kb
03.10.17
40
.epf 13,95Kb 40 Скачать

См. также

Комментарии
1. Дмитрий К (InzPtic) 26.09.17 10:59 Сейчас в теме
После загрузки данных программа возвращает:

1. Текст ответа с сервера в формате JSON для самостоятельной обработки.
2. Распарсенный текст в виде структуры 1С
3. Заполненный элемент справочника "Контрагенты"

1. Зачем бухгалтеру (я так понимаю именно он будет использовать обработку) пункты 1 и 2?
2. Что будет, если элемента справочника "Контрагенты" в базе нет? Будет создан новый/выдаст сообщение об ошибке/прочее?
3. Элемент справочника "Контрагенты" открывается пользователю уже записанным или у пользователя есть возможность отменить то, что обработка наделала?
2. Василий Василий (vasya_vasechkin) 5 26.09.17 11:54 Сейчас в теме
1. текст ответа бухгалтеру не нужен, это для программиста. Может он захочет сам обработать ответ.
2. обработка не ищет контрагента в справочнике.
3. элемент справочника будет записан, иначе невозможно заполнить адрес и контактные лица.

если нет необходимости заполнять элемент справочника, можно вызвать процедуру без соответствующего параметра, получить в ответ структуру данных и обрабатывать эти данные по своему усмотрению.
3. Дмитрий К (InzPtic) 26.09.17 13:32 Сейчас в теме
(2)
1. Я про то и говорю. Не будет программист работать с этой обработкой. Только на этапе отладки. После этого он передаст её бухгалтеру и тогда текст ответа будет избыточным
2. Если не ищет, как тогда? Пользователь сам выбирает нужный элемент?
3. Возможно всё. Например делать в транзакции и откатывать её если пользователь не хочет изменений. Есть ещё масса других вариантов. Смысл в том, что пользователь должен иметь возможность отказаться от перезаполнения данных если считает их неверными.
4. Василий Василий (vasya_vasechkin) 5 26.09.17 14:19 Сейчас в теме
Уважаемый, я сделал просто функцию по заполнению реквизитов контрагента. Если Вам нужны дополнительные возможности, Вы можете сделать их сами.
5. serpent Пентюхов С. Г. (serpent) 40 26.09.17 15:32 Сейчас в теме
не интересно, модуль закрыт.
6. Евгений Басевич (Atrocity) 26 01.10.17 10:08 Сейчас в теме
Зря потратил 1 стартмани. Сожалею. Сочувствую разрабочикам, которые стесняются открывать свои модули.
7. Ден (lion11) 139 03.10.17 10:31 Сейчас в теме
Обработка работает, пожелание для исправления: при повторном заполнении дублируются записи контактных лиц.
8. Oksana Subbotina (OksanaSub) 50 03.10.17 11:39 Сейчас в теме
Модуль объекта запаролен(((( У меня не стандартная конфа, ничего поправить не могу...
9. Василий Василий (vasya_vasechkin) 5 03.10.17 14:46 Сейчас в теме
файл обработки обновил, пароль на модуль отсутствует. Для тех у кого старая версия, с паролем, вот пароль - asdfosdeKews9qwhadsfileqqwqIIisov
10. Ден (lion11) 139 10.10.17 09:41 Сейчас в теме
Можете подсказать почему для ИП не заполняет адрес?
11. Василий Василий (vasya_vasechkin) 5 10.10.17 14:19 Сейчас в теме
(10) сервис в интернете для ИП не выдаёт адрес.
12. Ильдар Тагиров (pentanom) 11 16.10.17 15:48 Сейчас в теме
(11)Адрес заполняется только в конфигурациях БП 3.0 ?
13. Василий Василий (vasya_vasechkin) 5 17.10.17 08:15 Сейчас в теме
(12) если сервис выдал адрес, он заполняется в любой конфигурации.
14. Ильдар Тагиров (pentanom) 11 17.10.17 09:28 Сейчас в теме
(13) Разобрался. У меня версия 11.3, а в коде 11.2.
	ИначеЕсли Версия = "11.2" ИЛИ Версия = "3.0" Тогда
			НоваяСтрокаКонтактов = Владелец.КонтактнаяИнформация.Добавить();
			НоваяСтрокаКонтактов.Представление = ЧтениеЖСН.ТекущееЗначение;
			НоваяСтрокаКонтактов.Вид = Справочники.ВидыКонтактнойИнформации.ЮрАдресКонтрагента;
			НоваяСтрокаКонтактов.Тип = Перечисления.ТипыКонтактнойИнформации.Адрес;


Еще. Можно ли получить адрес в формате КЛАДР ?
15. Василий Василий (vasya_vasechkin) 5 17.10.17 13:03 Сейчас в теме
(14)была мысль сделать процедуру "вытаскивания" адреса из ответа сервиса в формате КЛАДРа, но сходу не получилось, и ещё ходят слухи, что с нового года КЛАДР заменят на что-то другое.
16. Ильдар Тагиров (pentanom) 11 17.10.17 16:21 Сейчас в теме
(15)
что-то другое
- Это, скорее всего, ФИАС.
31. Ильдар Тагиров (pentanom) 11 22.10.17 00:18 Сейчас в теме
(15)
						Результат.Вставить("company", СтруктураОбъекта);
						
	Результат.Вставить("KladrCode", СтруктураОбъекта.address.street.kladrcode);
	Результат.Вставить("flat", СтруктураОбъекта.address.flat);
	Результат.Вставить("house", СтруктураОбъекта.address.house);

А потом из этих данных получить адрес. Так получиться ?
17. Ильдар Тагиров (pentanom) 11 17.10.17 17:32 Сейчас в теме
С УТ 10.3 все получается хорошо, а с УТ 11.3 что-то никак не получается встроить отработку. Подскажите как это сделать.
18. Василий Василий (vasya_vasechkin) 5 17.10.17 19:50 Сейчас в теме
(17)а как Вы хотите использовать её в УТ 11.3? Её можно открыть через меню "файл", можно встроить через конфигуратор, но тогда надо точно знать в каком месте Вы будете вызывать процедуру заполнения. А можно ещё адаптировать её для справочника "ДополнительныеОтчетыИОбработки". Вам какой вариант больше подходит? И что именно не получается?
19. Ильдар Тагиров (pentanom) 11 17.10.17 21:51 Сейчас в теме
(18) Хочу встроить в конфигуратор и в форме элемента "Контрагенты" привязать к кнопке "Заполнить по ИНН".
20. Василий Василий (vasya_vasechkin) 5 18.10.17 08:19 Сейчас в теме
(19) Попробую Вам помочь. Напишите пожалуйста полный номер релиза конфигурации и текст ошибки которая возникает. А так же было бы не плохо увидеть код, в который вносите изменения в конфигурации.
pentanom; +1 Ответить
21. Ильдар Тагиров (pentanom) 11 18.10.17 09:37 Сейчас в теме
(20) Релиз 11.3.4.103. Я взял пример кода для 10.3 из вашей публикации. В обработке везде, где было упоминание о 11.2, добавил и 11.3. Но в ОФ и УФ свойство "ЭтотОбъект" имеют разный смысл.
Ошибки не возникает, но новые данные в форму не записывается.
22. Василий Василий (vasya_vasechkin) 5 18.10.17 13:24 Сейчас в теме
(21)в обработке есть управляемая форма, в ней код, который можно адаптировать для УТ 11.
23. Ильдар Тагиров (pentanom) 11 18.10.17 16:11 Сейчас в теме
(22)Мне хотелось узнать, что нужно написать вместо ЭтотОбъект в выражении:
    ОбработкаЗаполнения.Заполнить(ИНН, ТекстОтвета, Результат, ЭтотОбъект, ТекстОшибки);//параметры 
и что добавить, чтобы результат обработки сохранился.
24. Василий Василий (vasya_vasechkin) 5 19.10.17 15:26 Сейчас в теме
(23)примерно так:
&НаКлиенте
Процедура ЗаполнитьРеквизиты(Команда)
	ДанныеФормы = ЭтаФорма.Объект;
	ЗаполнитьНаСервере(ДанныеФормы);
	КопироватьДанныеФормы(ДанныеФормы, ЭтаФорма.Объект);
КонецПроцедуры

&НаСервере
Процедура ЗаполнитьНаСервере(ДанныеФормы)
	ТекстОтвета = "";
	ТекстОшибки = "";
	Результат = Новый Структура;//структура данных контрагента
	Контрагент = ДанныеФормыВЗначение(Объект, Тип("СправочникОбъект.Контрагенты"));
	ОбработкаОбъект = Обработки.ДанныеКонтрагентаПоИНН.Создать();
	ОбработкаОбъект.Заполнить(Объект.ИНН, ТекстОтвета, Результат, Контрагент, ТекстОшибки);
	ЗначениеВДанныеФормы(Контрагент,ДанныеФормы);
КонецПроцедуры
Показать
pentanom; +1 Ответить
25. Ильдар Тагиров (pentanom) 11 19.10.17 20:10 Сейчас в теме
(24) Спасибо ! Все получилось.
26. Василий Василий (vasya_vasechkin) 5 20.10.17 08:21 Сейчас в теме
(25)проверьте заполнение адреса. Сохраните и закройте окно клиента, потом заново откройте и проверьте адрес.
27. Ильдар Тагиров (pentanom) 11 20.10.17 12:28 Сейчас в теме
(26)А и действительно адрес-то не заполняется :(
Я как-то не обратил на это внимание.
29. Ильдар Тагиров (pentanom) 11 20.10.17 12:55 Сейчас в теме
(26)Если запускаю как внешнюю обработку, то адрес появляется после второго открытия окна контрагента. Если как подключенную в конфигурацию, то вообще нет.
30. Ильдар Тагиров (pentanom) 11 21.10.17 22:13 Сейчас в теме
(26)
&НаКлиенте
Процедура ЗаполнитьРеквизитыПоИНН(Команда)
    ДанныеФормы = ЭтаФорма.Объект;
    ЗаполнитьРеквизитыПоИНН_НаСервере(ДанныеФормы);
    КопироватьДанныеФормы(ДанныеФормы, ЭтаФорма.Объект);
	Этаформа.Записать();
	ЭтаФорма.ОбновитьОтображениеДанных();
КонецПроцедуры

&НаСервере
Процедура ЗаполнитьРеквизитыПоИНН_НаСервере(ДанныеФормы)
    ТекстОтвета = "";
    ТекстОшибки = "";
    Результат = Новый Структура;//структура данных контрагента
    Контрагент = ДанныеФормыВЗначение(Объект, Тип("СправочникОбъект.Контрагенты"));
//    Контрагент = Объект.Ссылка.ПолучитьОбъект();
    ОбработкаОбъект = Обработки.ДанныеКонтрагентаПоИНН.Создать();
    ОбработкаОбъект.Заполнить(Объект.ИНН, ТекстОтвета, Результат, Контрагент, ТекстОшибки);
	
	Если Не ТекстОшибки = "" Тогда
        Сообщить(ТекстОшибки);
	Иначе
	КонецЕсли;
	
	Контрагент.Записать();
	
    ЗначениеВДанныеФормы(Контрагент,ДанныеФормы);
	
КонецПроцедуры
Показать

Что здесь лишнее ?
Адрес записывается, но не отражается в форме сразу. Нужно закрыть и открыть форму снова.
Кроме того, вылезает окно с сообщением: "Данные были изменены или удалены другим пользователе". Но все запускается в однопользовательском режиме. И, на всякий случай, я еще запустил полное тестирование и исправление.
28. Алексей Иванов (alexbla) 20.10.17 12:34 Сейчас в теме
Кто-нибудь тестировал в КА 1.1???
Оставьте свое сообщение