Заполнение данных по ИНН контрагента с помощью альтернативного сервиса огрн.онлайн

Публикация № 694602

Программирование - Практика программирования

Получение данных по ИНН контрагентов ОРГН.ОНЛАЙН

131
Код для заполнения данных по ИНН контрагента из ЕГРЮЛ с сайта огрн.онлайн.

Всем доброго дня.

Во многих новых конфигурациях 1С существует сервис по заполнению данных контрагентов по ИНН. 

А что же делать тем, у кого старые конфы УТэшек или КАшек.

Можно, конечно, пилить в сторону нового сервиса 1С:

        Определение = Новый WSОпределения("https://api.orgregister.1c.ru/orgregister/v7?wsdl","логинИТС","парольИТС");
        Сервис = Новый WSПрокси(Определение,"http://ws.orgregister.company1c.com/", "RequisitesWebServiceEndpointImpl7Service", "RequisitesWebServiceEndpointImpl7Port");
        ТипWSПараметра = Сервис.ФабрикаXDTO.Пакеты.Получить("http://ws.orgregister.company1c.com/").Получить("getCorporationRequisitesByINN");
        Сервис.Пользователь = "логинИТС";
        Сервис.Пароль = "парольИТС";
        параметр = Сервис.ФабрикаXDTO.Создать(ТипWSПараметра);
        параметр.INN =  ИНН;
        Результат=Сервис.getCorporationRequisitesByINN(параметр);

И т.д... Но мы пойдем другим путем.

Хочу поделиться коротеньким кодом, который поможет страждущим в самописных или устаревших конфигурациях 1С8 не заводить информацию о клиентах ручками, а ввести лишь ИНН и получить исчерпывающую информацию о контрагенте, заметно большую чем в сервисе 1С.

Сегодня существует бесплатный платный сервис огрн.онлайн. Собственно с его помощью мы и реализуем эту функцию.

ИНН - переменная, в которую мы вобьем искомый ИНН.

Ответ - текстовый результат выполнения нашего запроса. 

Код 1С:

	ssl = Новый ЗащищенноеСоединениеOpenSSL();
	HTTPСоединение = Новый HTTPСоединение("xn--c1aubj.xn--80asehdb",443,,,,,ssl);     
	HTTPЗапрос = Новый HTTPЗапрос("интеграция/компании/?инн="+СокрлП(ИНН)); 
	Попытка
		ОтветСайта =  HTTPСоединение.Получить(HTTPЗапрос);
		ТекстJSON = ОтветСайта.ПолучитьТелоКакСтроку();
	Исключение
		Возврат;
	КонецПопытки;

	ЧтениеJSON = Новый ЧтениеJSON;
	ЧтениеJSON.УстановитьСтроку(ТекстJSON);
	Структ = ПрочитатьJSON(ЧтениеJSON);
	ЧтениеJSON.Закрыть();

	//В данном случае нас интересует только id организации, чтобы можно было получить полную информацию с адресом в формате ФИАС
	IDОрганизации =Структ[0].id;

	HTTPЗапрос = Новый HTTPЗапрос("интеграция/компании/"+Формат(IDОрганизации,"ЧГ=")+"/"); 
	ОтветСайта =  HTTPСоединение.Получить(HTTPЗапрос);
	ТекстJSON = ОтветСайта.ПолучитьТелоКакСтроку();
	//ТекстJSON - полный ответ с данными об организации 
	ЧтениеJSON = Новый ЧтениеJSON;
	ЧтениеJSON.УстановитьСтроку(ТекстJSON);
	Структ = ПрочитатьJSON(ЧтениеJSON);

	Ответ = "Наименование: "+СокрлП(Структ.shortName);
	Ответ = Ответ+Символы.ПС+"Полн. наименование: "+СокрлП(Структ.name);
	Ответ = Ответ+Символы.ПС+"ИНН: "+СокрлП(Структ.inn);
	Ответ = Ответ+Символы.ПС+"КПП: "+СокрлП(Структ.kpp);
	Ответ = Ответ+Символы.ПС+"ОГРН: "+СокрлП(Структ.ogrn);
	Ответ = Ответ+Символы.ПС+"Юр Адрес: "+СокрлП(Структ.address.fullAddress);
	Ответ = Ответ+Символы.ПС+"Физ Адрес: "+СокрлП(Структ.address.fullHouseAddress);

Вот и все.

Внимание! Владельцы сервиса просят пожалеть их и не выполнять массовых запросов, поэтому рекомендую всем повесить эту процедуру на кнопочку "Заполнить по ИНН", а не использовать целиком на весь справочник контрагентов за раз!  Подробнее здесь

И еще, парсер JSON появился с версии 1С 8.3.6 и в ранних версиях его нет. Но это ведь не большая проблема - из текста-то все что угодно выудить можно!  А лучше платформу все-таки обновить))

Удачи!

(20.09.2018) ВНИМАНИЕ!! К великому сожалению с момента написания статьи данный сервис перестал быть бесплатным...

131

См. также

Специальные предложения

Комментарии
Избранное Подписка Сортировка: Древо
1. Mi11er 77 02.11.17 09:42 Сейчас в теме
О, за наводку про сервис 1С спасибо, а остальное можно было получать от DaData.
2. Serega-artem 11 02.11.17 11:46 Сейчас в теме
Еще не побывал, но за идею однозначно плюс!
3. OlegAr 2 02.11.17 11:49 Сейчас в теме
4. akim2040 5 02.11.17 13:32 Сейчас в теме
А что за сервис? Ради интереса пытался найти себя, и ни чего не дал полезного.
6. user694260_vip.allabirdin 02.11.17 14:13 Сейчас в теме
(4)1С:Контрагент
Быстрая проверка информации о контрагентах, автоматическое заполнение реквизитов контрагентов в различных документах и другие полезные функции

https://portal.1c.ru/applications/3
18. akim2040 5 03.11.17 07:58 Сейчас в теме
(6) Я имел ввиду сервис, который предлагается использовать в публикации. огрн.онлайн
Он мне не правильную информацию выдал обо мне. Вернее не актуальную
5. slava_1c 481 02.11.17 14:12 Сейчас в теме
Спасибо, друзья.

На счет сервиса dadata.ru - не соглашусь с тем что он равнозначен этому.
Например в dadate в ответе по адресу я получаю адрес в формате кладр,
а сегодняшнее требование к заполнению счетов-фактур вызвало коллективное помешательство
бухгалтеров и они поголовно хотят видеть адреса в формате ФИАС. Здесь же прилетает именно
адрес в формате ФИАС, да еще и с ГУИД ссылкой в значении, по которой можно получить и ссылку из Кладра:
Структ.address.fiasOnlineLink например "фиас онлайн"
также в сервисе легко увидеть закрытые организации и причину закрытия:
Структ.closeInfo.closeReason.name например "ПРЕКРАЩЕНИЕ ДЕЯТЕЛЬНОСТИ ЮРИДИЧЕСКОГО ЛИЦА В СВЯЗИ С ИСКЛЮЧЕНИЕМ ИЗ ЕГРЮЛ НА ОСНОВАНИИ П.2 СТ.21.1 ФЕДЕРАЛЬНОГО ЗАКОНА ОТ 08.08.2001 №129-ФЗ"
Из значения Структ.description можно получить исчерпывающую информацию по организации и контролить таким образом контров перед заключением договоров
И все это бесплатно!!! (надолго, надеюсь)))

А на счет того что себя не смогли найти... И слава богу))) это поиск по организациям, директорам и учредителям
ben19791010; vld1973; +2 Ответить
9. Mi11er 77 02.11.17 16:27 Сейчас в теме
(5)да, соглашусь, тут больше всего приходит.
Написал на 100 строк утилиту, буду крутить ее к базе =) Спасибо за ссылку.
11. rozer 233 02.11.17 17:01 Сейчас в теме
(5)
И все это бесплатно!!! (надолго, надеюсь)))


вряд ли бесплатно будет в будущем - как только наберут вес сразу монетизируют )
21. user828732 08.11.17 10:25 Сейчас в теме
(11) Видимо в этот сервис данные подсасываются из того же 1С Контрагент.
29. user861087 13.11.17 01:34 Сейчас в теме
(5)
Дадата приводит адреса именно к ФИАС. Почему вы думаете, что там адреса в формате КЛАДРа?
А ещё проставляются индексы, районы города и координаты ツ
31. slava_1c 481 13.11.17 02:54 Сейчас в теме
(29) Ну вот пример с их официального сайта
[
    "inn": "7719402047",
                "ogrn": "1157746078984",
                "okpo": null,
                "okved": "72.19",
                "okveds": null,
                "authorities": null,
                "documents": null,
                "licenses": null,
                "address": {
                    "value": "г Москва, г Троицк, Сиреневый б-р, д 1",
                    "unrestricted_value": "г Москва, г Троицк, Троицкий округ, Сиреневый б-р, д 1",
                    "data": { ... }
                },
 
Показать


Это формат ФИАС?
32. user861087 13.11.17 10:33 Сейчас в теме
(31) Это пример исправленного адреса, так как в ЕГРЮЛ полно ошибок. Адрес "как в ЕГРЮЛ" возвращается в поле address.data.source либо address.value, если address.data пустое.

Сегодняшнее требование к заполнению счетов-фактур вызвало коллективное помешательство
бухгалтеров и они поголовно хотят видеть адреса в формате ФИАС. Здесь же прилетает именно
адрес в формате ФИАС, да еще и с ГУИД ссылкой в значении, по которой можно получить и ссылку из Кладра.


Вот здесь подробности по этому поводу: https://dadata.userecho.com/forums/4-baza-znanij/topics/3369-adres-kompanii-v-tochnosti-kak-v-egryul/
33. slava_1c 481 13.11.17 11:48 Сейчас в теме
(32) Спасибо за разъяснения. Уверен, что для тех, кто выбирает себе интеграцию, это будет полезная информация!
7. gosizo 24 02.11.17 14:22 Сейчас в теме
Большое спасибо! то что нужно и в рабочем состоянии (в отличие от других подобных публикаций)
8. Xel'naga 02.11.17 16:07 Сейчас в теме
Для поиска физлица по ИНН
HTTPЗапрос = Новый HTTPЗапрос("интеграция/люди/?инн="+СокрлП(ИНН))
10. Mi11er 77 02.11.17 16:39 Сейчас в теме
Можем кому, будет интересно, как работает ( на ОФ, платформа 3.8)
Прикрепленные файлы:
ПолучениеДанных.epf
suarez55; exuma2; slava_1c; TrinitronOTV; +4 Ответить
12. Niko_Arte 02.11.17 18:51 Сейчас в теме
13. slava_1c 481 02.11.17 19:03 Сейчас в теме
(12) А это вот как раз то как (8) написал. Это как раз поиск по ИП, учредителям, директорам и сотрудникам.
Вот подробнее тут
14. rwf96 03.11.17 06:59 Сейчас в теме
Получаем структуру Структ. Такой конструкции - Структ.closeInfo.closeReason.name - в Структ нет. Судя по описанию она есть в Структ.predecessor. predecessor - это массив. При запросе информации, кол-во элементов в массиве predecessor равно 0. Подскажите, как правильно получить состояние Контрагента?
15. slava_1c 481 03.11.17 07:22 Сейчас в теме
(14) Точно есть, пример реальный привел. Есть но не всегда. Только когда организация закрыта. Поэтому проверяем не закрыта ли организация либо через
не Структ.closeInfo = Неопределено 
либо через
Попытка
16. slava_1c 481 03.11.17 07:27 Сейчас в теме
Если кому интересно как получить тоже самое из сервиса 1С - вот продолжение кода из публикации:
		
                ОбъектXDTO = Результат.РеквизитыЮрЛица;
		Сообщить("НаименованиеПолное "+ ОбъектXDTO.СвНаимЮЛ.НаимЮЛПолн);
		Сообщить("НаименованиеСокращенное "+ОбъектXDTO.СвНаимЮЛ.НаимЮЛСокр);
		Сообщить("ОГРН "+ ОбъектXDTO.ОГРН);
		Сообщить("КПП "+ОбъектXDTO.КПП);
		Адрес =ОбъектXDTO.СвАдрес.Адрес.Состав.ДопАдрЭл[0].Значение+", "+ ОбъектXDTO.СвАдрес.Адрес.Состав.СубъектРФ+", "+ОбъектXDTO.СвАдрес.Адрес.Состав.Улица;
		Для каждого СведенияОбАдресе Из ОбъектXDTO.СвАдрес.Адрес.Состав.ДопАдрЭл Цикл
			Если СведенияОбАдресе.Номер  <> Неопределено тогда
				Адрес = Адрес+", "+СведенияОбАдресе.Номер.Значение;
			КонецЕСлИ;
		КонецЦикла;
		Сообщить("Адрес: "+Адрес);
		Если ОбъектXDTO.СвУправлДеят <> Неопределено И ОбъектXDTO.СвУправлДеят.СведДолжнФЛ <> Неопределено Тогда
			Для каждого СведенияОДолжности Из ОбъектXDTO.СвУправлДеят.СведДолжнФЛ Цикл
				Если Найти(ВРег(СведенияОДолжности.НаимВидДолжн), "РУКОВОДИТЕЛЬ") > 0 И СведенияОДолжности.ФИО <> Неопределено Тогда
					Сообщить("Руководитель:"+СведенияОДолжности.ФИО.Фамилия+" "+СведенияОДолжности.ФИО.Имя+" "+СведенияОДолжности.ФИО.Отчество+", должность: "+СведенияОДолжности.НаимДолжн+", тел: "+СведенияОДолжности.ИННФл);
					Сообщить("Телефон:"+СведенияОДолжности.НомТел);
					Прервать;
				КонецЕсли;
			КонецЦикла;
		КонецЕсли;
Показать
17. rwf96 03.11.17 07:43 Сейчас в теме
19. rpgshnik 1197 07.11.17 14:49 Сейчас в теме
По вам походу уже обработки пилят https://infostart.ru/public/695635/ )))
20. slava_1c 481 07.11.17 17:51 Сейчас в теме
(19) Ну, по-хорошему, это и делалось для того чтобы все пилили обработки. )))
Автор ее к рознице прикрутил. Еще можно ее к бухгалтерии 2.0 прикрутить - там тоже нет такого сервиса, УТ 10.2, 10.3.
Ну а в 77 вообще поле не паханное, так что... ))))
В любом случае, спасибо за бдительность!
dsuryaninov; +1 Ответить
22. Zelenhof 42 09.11.17 12:53 Сейчас в теме
Хороший вариант. Жаль не подходит для пользователей совсем уж старых решений на 8.1. (
23. slava_1c 481 09.11.17 14:02 Сейчас в теме
(22) Ну конкретно этот код не работает - там просто нет таких методов.
Для пользователей 8.1 и 7.7, можно порекомендовать использовать COM объект WinHttp.WinHttpRequest.5.1
Пример для 8.1 будет такой
WinHttp = Новый COMОбъект("WinHttp.WinHttpRequest.5.1");
	WinHttp.Option(2,"utf-8");
	WinHttp.Open("POST","https://xn--c1aubj.xn--80asehdb/интеграция/компании/?инн="+СокрлП(ИНН),0);
	WinHttp.SetRequestHeader("Accept-Language", "ru");
	WinHttp.SetRequestHeader("Accept-Charset","utf-8");
	WinHttp.setRequestHeader("Content-Language", "ru");
	WinHttp.setRequestHeader("Content-Charset", "utf-8");
	WinHttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded; charset=utf-8");
	WinHttp.Send(""); 
	Ответ = WinHttp.ResponseText();

Показать


А дальше парсить, парсить... ))) Поищите в сети "парсер JSON". Он точно есть уже готовый.
regoff; Zelenhof; +2 Ответить
25. _Z1 38 11.11.17 18:15 Сейчас в теме
(23) Это в v7.7 не работает.
Пробовал по всякому.
Подскажите куда копать, что посмотреть.
я с запросами на Вы
27. slava_1c 481 12.11.17 21:08 Сейчас в теме
(25) Не было 77 под рукой (я уже забыл как там писать-то )))). Сейчас проверил - 404 Bad request... Зато без проблем сработал 1с-ный сервис. Пример в этой статье При том, что он тоже https..
24. waol 237 10.11.17 12:10 Сейчас в теме
присоединяюсь к благодарностям. Еще не смотрел, судя по обсуждениям +
26. VGHOST 111 11.11.17 23:02 Сейчас в теме
Полезная инфа, благодарю.
Настораживает только то, что база ОГРН.ОНЛАЙН содержит ошибки - меня, например, приписала к чужой ИФНС, на которую в выписке с https://egrul.nalog.ru/ никаких ссылок нет.
Видимо исправят, со временем...
30. user861090 13.11.17 01:52 Сейчас в теме
34. Serega-artem 11 11.01.18 15:23 Сейчас в теме
Во-первых, еще раз спасибо за публикацию!

Во-вторых, вопрос: взяв за идею вашу публикацию сделал на тестовой базе реализацию добавления/актуализацию данных в справочнике юр. лиц. Поигрался и на какое-то время отложил. Вчера попробовал снова, получил:

{
  "error" : "Access is denied"
}


Почитал про api, там нужно получать ключ api. Посмотрел заявку на получения ключа - ссылка на сайт с продуктом, описание, скриншоты и т.д. Для тиражных продуктов - ок. Что делать с не тиражными решениями? Там сайта, описания и т.п. нет. Думаю написать разработчикам с этим вопросом, но вдруг кто-то из 1сников уже обращался и имел опыт получения ключа API?
35. slava_1c 481 11.01.18 16:07 Сейчас в теме
Да, сервис по прежнему бесплатен, но уже не бесконтролен, как это было до начала этого года. Это касается не только данного сервиса, например яндекс с нового года тоже отключил все тестовые ключи, пришлось заново регистрировать личный кабинет для корректной работы некоторых локальных решений 1С для логистики. Там мы предоставили сайт компании, на которой нет никакой карты но получили ключ. По сути , это защита от роботов, а не от реализации 2-х, 10-ти запросов в день.
36. Serega-artem 11 11.01.18 16:48 Сейчас в теме
(35) Спасибо за ответ! Вот кстати, что пишут разработчики в своей группе в ВК:


В связи с большим наплывом заявок на API имеет смысл прояснить критерий отбора. Ключи получают те продукты, которые предоставляют сервисы широкому кругу пользователей: боты для месседжеров, плагины для 1С, CRM и прочих. Т.е. способствующие распространению открытых данных.
Продукты, которые используются для личного или внутрикорпоративного пользования, получают отказы. Таким продуктам будет позже предложен вариант с платным API на выделенном сервере.


т.е. для нас с Вами ситуация двоякая. С одной стороны, они говорят, что 1с - это гуд. С другой, все продукты для внутрикорпоративного использования - это плохо. Учитывая специфику 1с, одно противоречит другому. Простой пример: Я сделал некую тестовую конфигурацию с использованием сервиса. Она получилось (предположим) удачной, я получил на нее ключ, конфу начали качать и встраивать в свои конфы (она для этого и создавалась) и получаются, что если один из тех, кто воспользовался конфигурацией, нарушил правила API ключ забанят у всех. Так получается?

p/s Задал эти вопросы разработчикам. Посмотрим, что скажут.
37. slava_1c 481 11.01.18 17:29 Сейчас в теме
(36) Совершенно верно. Бесплатный сервис и делается для того чтобы им пользовались все. Однако, встраивая этот и подобный ему сервисы в некую конфигурацию, сам ключ лучше сделать константой, которую пользователь будет вносить в момент начала эксплуатации. И если он вдруг нарушит правила пользования, это коснется только его. По идее разработчики совсем не против использования их сервиса в 1С.
38. Serega-artem 11 11.01.18 18:12 Сейчас в теме
(37) Вариант с константой - это первое, что пришло на ум. Но тут:

1. Чтобы получить ключ API на обработку или конфигурацию надо прислать разработчикам ссылку на продукт. Пусть даже на публикацию на инфостарте. Но публиковать по-факту неработающие и не оттестированные разработки тут (да и где угодно) нельзя. А чтобы протестировать и опубликовать нужен ключ API. Замкнутый круг. Ну это ладно, тут я думаю можно как-то договориться.

2. Сделали подключаемый ключ т.е. каждый вводит для себя. Скачал условный Иван Иванович обработку "Заполнение контрагентов в БП 3.0 с ОГРН.онлайн", она (обработка) просит ввести ключ API. А чтобы получить ключ API нужно прислать ссылку на приложение с его описанием и т.д. Всем одну и туже ссылку на публикацию на ИС присылать?

Как я понимаю логику разработчиков - одно приложение, один ключ. Но как это будет работать применимо к 1с, не очень понятно. Да и на других платформах тоже. Возможно, компрометироваться в случаи нарушения будет не ключ, а IP или еще что-то.
39. slava_1c 481 11.01.18 18:32 Сейчас в теме
Вот пример публикации которая, судя по самому сайту, получила одобрение. Т.е. автор, создал СВОЙ сервис, использующий ИХ сервис.
40. Serega-artem 11 12.01.18 09:39 Сейчас в теме
(39) Ага, интересный вариант. Но побуду опять старой бабкой и поворчу) Такой подход ИМХО не совсем правильный, ОГРН.онлайн тянет инфу из открытых информ. систем используя их API, выступая своего рода агрегатором, потом предоставляет доступ к этим данным через свой API. Появляется некий сервис для 1с, который тянет данные с ОГРН.онлайн и раздает их уже по своему API. Слишком много звеньев получается. А чем их больше тем больше потенциальных проблем и ошибок в получаемых данных. Этакий глухой телефон получается. Пообщался, кстати, с разработчиком в ВК. Вот, что они пишут:

Вопрос:

Вопрос по 1с. Предположим, создал я конфигурацию для примера работы с сервисом. Получил на нее ключ API, выложил ее на Инфостарте (крупнейшее сообщество 1с программистов), её скачало ну скажем 20 человек и внедрили в свои проекты. Кто-то один нарушил условия работы API и ключ забанили. В итоге остальные 19 то же в пролете? Ну или с другой стороны посмотрим. Я хочу создать решение (обработку, расширение) для одной из существующих (не своих) конфигураций для 1с. Чтобы создать и протестировать мне нужен ключ, для получения ключа я должен отправить Вам запрос с указанием (с сайтом, скриншотами и т.п.) решения. Замкнутый круг получается. Просто 1с - это открытый код, я создаю что-то, выкладываю, и любой это может модернизировать, использовать, встраивать в свои проекты забирая мой ключ API.


Ответ:

В случае открытого кода вам нужно сделать свой сервер, который будет принимать запросы от системы с открытым кодом и переправлять их к моему API. И этот ваш сервер должен отвечать за количество запросов, ставя запросы в пул и отравляя их с учётом ограничения.


Вопрос:

А такой вариант рассматривается: В прикладном решении (конфигурация, обработка) ключ API не забивается разработчиком, а вводится пользователем самостоятельно? т.е. Пользователь скачивает обработку, получает для нее у Вас свой собственный ключ и уже работает с ним и отвечает за него. Просто вариант с собственным сервером, как я думаю, будет мало приемлем в ввиду того, что много действительно хороших разработок для 1с делается на энтузиазме и не монетизируется в принципе (посмотрите тот-же Инфостарт). И заморачиваться собственным сервером мало кто будет.


Ответ:

Такой вариант возможен только с платными ключами. В противном случае недобросоветсные люди будут этим пользоваться, набирать себе от имени разных людей по 100 ключей и спамить запросы.


От себя добавлю, что идея платного ключа (при его небольшой цене и разовой (хотя бы в течении года) оплате) идея вполне себе хорошая. Сервис очистится от "левых" запросов + монетизация всегда стимул для разработчика продолжать проект. Вопрос как быстро они это сделают и как всё это будет выглядеть, что будет с ключами для разработчиков (для тестирования и отладки). Вопросов много, но настрой у разработчиков, вроде, вполне рабочий)
41. madonov 153 24.01.18 03:15 Сейчас в теме
Скачал несколько обработок, разобрал данный пример везде в качестве ответа получаю ответ "По указанным параметрам не найдено ни одной компании". Так сервис работает без ключа или нет?
42. slava_1c 481 24.01.18 12:15 Сейчас в теме
(41) Нет, без ключа с нового года API увы не работает. Хотя, какое то странное сообщение получаете. Ответ должен быть в формате JSON
error: "Access is denied"
43. triviumfan 10 02.02.18 10:57 Сейчас в теме
(42) На строке
ОтветСайта.ПолучитьТелоКакСтроку();

я получаю пустую строку, а далее ошибка чтения/преобразования значения JSON.
В общем, фейл :(
44. mv7890 8 20.09.18 10:23 Сейчас в теме
Бесплатно не работает: "Access is denied" . Будет честно об этом написать в самом начале.
45. slava_1c 481 20.09.18 19:49 Сейчас в теме
(44) Да, к сожалению это так. Отредактировал.
46. pentanom 20 15.11.18 23:05 Сейчас в теме
(20.09.2018) ВНИМАНИЕ!! К великому сожалению с момента написания статьи данный сервис перестал быть бесплатным...

За вообщем-то небольшие деньги (2 коп за запрос, мин. 10000 запросов = 200 руб) можно получить ключ доступа к API. А куда его нужно вставить в приведенном коде.
47. slava_1c 481 16.11.18 00:38 Сейчас в теме
Авторизация

В случае одобрения вашей заявки вам будет предоставлен ключ доступа. Данный ключ доступа необходимо указывать в заголовке X-ACCESS-KEY при каждом запросе к API.


ssl = Новый ЗащищенноеСоединениеOpenSSL();
	HTTPСоединение = Новый HTTPСоединение("xn--c1aubj.xn--80asehdb",443,,,,,ssl);     
    ЗаголовокЗапросаHTTP = Новый Соответствие();
    ЗаголовокЗапросаHTTP.Вставить("X-ACCESS-KEY", "ЗДЕСЬ ВСТАВИТЬ ЗНАЧЕНИЕ КЛЮЧА");
HTTPЗапрос = Новый HTTPЗапрос("интеграция/компании/?инн="+СокрлП(ИНН), ЗаголовокЗапросаHTTP); 
	Попытка
		ОтветСайта =  HTTPСоединение.Получить(HTTPЗапрос);
		ТекстJSON = ОтветСайта.ПолучитьТелоКакСтроку();
	Исключение
		Возврат;
	КонецПопытки;
Показать


Как то так...
pentanom; +1 Ответить
48. pentanom 20 16.11.18 11:32 Сейчас в теме
(47) Спасибо !

Но теперь, вероятно, нужно как-то и кодировку установить.
Это тоже в заголовке делается ?
49. slava_1c 481 16.11.18 12:51 Сейчас в теме
Все верно, к примеру:

ЗаголовокЗапросаHTTP.Вставить(«Content-Type», «application/json; charset=utf-8»);
50. ArtemiFD 41 08.04.19 12:02 Сейчас в теме
тоже использую сервис dadata.ru, ниже приведу небольшой пример:

Функция ПолучитьКППОрганизацииИзСервиса(ИНН)
	
	// ДЕМО ПРИМЕР
	// --
	// Для получения информации по организации используем сервис https://dadata.ru/, требуется только регистрация;
	// выбрал findById (т.е.: "Организация по ИНН или ОГРН"),
	// информацию о сервисе смотри в документации: https://dadata.ru/api/find-party/,
	// в примере из всей информации получаю только КПП.
	// --
	// Стоимость: Бесплатно до 10 тысяч запросов в день. Больше — в составе годовой подписки.
	
	
	//******************
	//* Результат
	КПП = Неопределено;
	
	
	//******************
	//* НАСТРОЙКИ
	Токен = "тут должен быть токен";
	
	Прокси = Неопределено;
	//Прокси = Новый ИнтернетПрокси;
	//Прокси.Установить("https", "СЕРВЕР", ПОРТ);
	
	
	
	//******************
	//* ТЕЛО ОБРАБОТЧИКА
	
	SSL = Новый ЗащищенноеСоединениеOpenSSL();
	Попытка
		Соединение = Новый HTTPСоединение("suggestions.dadata.ru",,,, Прокси,, SSL);
	Исключение
		ИнфОш = ИнформацияОбОшибке();
		ВызватьИсключение КраткоеПредставлениеОшибки(ИнфОш);
	КонецПопытки;
	
	ДанныеЗапрса = Новый Структура("query", ИНН);
	ДанныеЗапрсаJSON = ЗначениеВСтрокуJSON(ДанныеЗапрса);
	
	АдресРесурса = "/suggestions/api/4_1/rs/findById/party";
	
	HTTPЗапрос = Новый HTTPЗапрос(АдресРесурса);
	HTTPЗапрос.Заголовки.Вставить("Content-Type" , "application/json; charset=utf-8");
	HTTPЗапрос.Заголовки.Вставить("Accept"       , "application/json");
	HTTPЗапрос.Заголовки.Вставить("Authorization", "Token " + Токен);
	HTTPЗапрос.УстановитьТелоИзСтроки(ДанныеЗапрсаJSON, КодировкаТекста.UTF8);
	
	Попытка
		HTTPОтвет = Соединение.ОтправитьДляОбработки(HTTPЗапрос);
	Исключение
		ИнфОш = ИнформацияОбОшибке();
		ВызватьИсключение КраткоеПредставлениеОшибки(ИнфОш);
	КонецПопытки;
	
	Если HTTPОтвет.КодСостояния = 200 Тогда 
		
		СтрокаJSON = HTTPОтвет.ПолучитьТелоКакСтроку(КодировкаТекста.UTF8);
		
		Значение = ЗначениеИЗСтрокиJSON(СтрокаJSON);
		
		ДанныеПоОрганизации  = Значение.suggestions[0];
		
		КПП = ДанныеПоОрганизации.data.kpp;
		
	КонецЕсли;
	
	Возврат КПП;
	
КонецФункции

Функция ЗначениеВСтрокуJSON(Значение)
	ЗаписьJSON = Новый ЗаписьJSON;
	ЗаписьJSON.УстановитьСтроку( Новый ПараметрыЗаписиJSON(, Символы.Таб));
	ЗаписатьJSON(ЗаписьJSON, Значение);
	Возврат ЗаписьJSON.Закрыть();
КонецФункции

Функция ЗначениеИЗСтрокиJSON(СтрокаJSON)
	ЧтениеJSON = Новый ЧтениеJSON;
	ЧтениеJSON.УстановитьСтроку(СтрокаJSON);
	Значение = ПрочитатьJSON(ЧтениеJSON);
	ЧтениеJSON.Закрыть();
	Возврат Значение;
КонецФункции
Показать
Оставьте свое сообщение