Работаем с сервисом подсказок на формах: dadata.ru

20.12.14

Интеграция - WEB-интеграция

Рассмотрим: как можно использовать REST-сервис данного сайта для формирования списка выбора.

Публикация устарела в связи с изменениями API на сайте dadata.ru

 

Сервис dadata.ru позволяет получать подсказки по ФИО и по Адресам. У него есть довольно неплохо описанный API. Мы Рассмотрим, как с помощью него можно вывести подсказку в ФИО. 

Данными с сайтом можно обмениваться в двух форматах: 

  1. XML
  2. JSON

Я решил делать в xml, как в более используемом в 1С. Итак, для начала создадим новую пустую конфигурацию, со справочником Физлица, и так же создадим XDTO схему:

Создадим форму элемента справочника Физлица.

Основной функцией у нас будет: ПолучитьОбъектXDTO, в которую мы будем передавать набираемый текст (Обратите внимание, что вы должны передавать в параметрах ваш код авторизации, который вы можете получить свободно на сайте).

&НаКлиенте
Функция ПолучитьОбъектXDTO(Текст, КоличествоПодсказок = 10)
    
    HTTPЗапрос = Новый HTTPЗапрос();
    HTTPЗапрос.АдресРесурса = "/api/v2/suggest/fio";
    
    HTTPЗапрос.Заголовки.Вставить("Content-Type", "application/xml");
    HTTPЗапрос.Заголовки.Вставить("Accept", "application/xml");
    HTTPЗапрос.Заголовки.Вставить("Authorization", "ВАШ КОД АВТОРИЗАЦИИ");
    HTTPЗапрос.УстановитьТелоИзСтроки("" + Текст + "" +  КоличествоПодсказок + "");
    
    Соединение = Новый HTTPСоединение("dadata.ru",,,,Новый ИнтернетПрокси,, Новый ЗащищенноеСоединениеOpenSSL);
    
    ОтветHTTP = Соединение.ОтправитьДляОбработки(HTTPЗапрос);
    
    Тело = ОтветHTTP.ПолучитьТелоКакСтроку();	
    Если Тело = "" Тогда
        Возврат Ложь;
    Иначе
        структурныйТип = ФабрикаXDTO.Тип("http://www.sample-package.org", "SuggestFioResponse"); 
        
        МойXML = Новый ЧтениеXML;
        МойXML.УстановитьСтроку(Тело);
        ОбъектXDTO = ФабрикаXDTO.ПрочитатьXML(МойXML, структурныйТип);
        
        Возврат ОбъектXDTO;
    КонецЕсли;
    
КонецФункции

Затем назначим элементу "Наименование" событие: "Автоподбор".

&НаКлиенте
Процедура НаименованиеАвтоПодбор(Элемент, Текст, ДанныеВыбора, Параметры, Ожидание, СтандартнаяОбработка)

    Если СтрДлина(Текст) > 3 Тогда

        Элемент.СписокВыбора.Очистить();	
        
        ОбъектXDTO  = ПолучитьОбъектXDTO(Текст);
        
        Если ТипЗнч(ОбъектXDTO) = Тип("ОбъектXDTO") Тогда
            Если ТипЗнч(ОбъектXDTO.suggestions) = Тип("СписокXDTO") Тогда
                Для каждого Ключ Из ОбъектXDTO.suggestions Цикл
                    Элемент.СписокВыбора.Добавить(Ключ.value);	
                КонецЦикла;
            ИначеЕсли ТипЗнч(ОбъектXDTO.suggestions) = Тип("ОбъектXDTO") Тогда
                Элемент.СписокВыбора.Добавить(ОбъектXDTO.suggestions.value);	 
            КонецЕсли;
        КонецЕсли;
    КонецЕсли;
    
КонецПроцедуры

Можно пойти и дальше. Создадим у справочника реквизиты: Фамилия, Имя, Отчество и Пол (тип: Перечисления). И заполним их при окончании редактирования:

&НаКлиенте
Процедура НаименованиеПриИзменении(Элемент)
    
    Если ЗначениеЗаполнено(Объект.Наименование) Тогда
        ОбъектXDTO = ПолучитьОбъектXDTO(Объект.Наименование, 1);
        Если ТипЗнч(ОбъектXDTO) = Тип("ОбъектXDTO") Тогда
            ПолученныеДанные = ОбъектXDTO.suggestions;	 	
            Объект.Фамилия = ?(ТипЗнч(ПолученныеДанные.data.surname)=Тип("Строка"), ПолученныеДанные.data.surname, "");
            Объект.Имя = ?(ТипЗнч(ПолученныеДанные.data.name)=Тип("Строка"), ПолученныеДанные.data.name, "");
            Объект.Отчество = ?(ТипЗнч(ПолученныеДанные.data.patronymic)=Тип("Строка"), ПолученныеДанные.data.patronymic, "");
            
            Если ПолученныеДанные.data.gender = "MALE" Тогда
                Объект.Пол = ПредопределенноеЗначение("Перечисление.ПолФизическогоЛица.Мужской");	
            ИначеЕсли ПолученныеДанные.data.gender = "FEMALE" Тогда
                объект.Пол = ПредопределенноеЗначение("Перечисление.ПолФизическогоЛица.Женский");	
            КонецЕсли;
        КонецЕсли;
    КонецЕсли;
    
КонецПроцедуры

 Как результат получаем весьма удобный список подбора и разложение на составляющие ФИО.

 

оригинал

См. также

WEB-интеграция Анализ продаж Системный администратор Программист Пользователь Платформа 1С v8.3 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Управленческий учет Платные (руб)

Модуль "Подсистема интеграции AmoCRM с 1С" позволяет обеспечить единое информационное пространство, в котором пользователи могут эффективно управлять клиентской базой, следить за статусами сделок и поддерживать актуальность данных как в AmoCRM, так и в 1С.

60000 руб.

07.05.2019    34490    66    45    

26

WEB-интеграция Администрирование веб-серверов Платные (руб)

Веб-портал обеспечивает удобный доступ к конфигурации 1С:ITIL, 1С:ITILIUM, Управление IT-отделом 8 через интернет с любого устройства посредством браузера, увеличивая эффективность работы пользователей и снижая нагрузку на сервер. Быстрая инсталляция портала за пару часов, удобный и интуитивно понятный интерфейс и безопасность данных помогут упростить работу с порталом и ускорить выполнение бизнес-процессов компании.

128000 руб.

19.12.2023    2463    2    0    

9

Оптовая торговля Розничная торговля WEB-интеграция 1С:Управление торговлей 10 1С:Управление производственным предприятием 1С:Управление нашей фирмой 1.6 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 3.0 Платные (руб)

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

57600 руб.

26.11.2024    2197    1    1    

4

Сайты и интернет-магазины WEB-интеграция Системный администратор Программист Пользователь Платформа 1С v8.3 1C:Бухгалтерия 1С:Управление торговлей 11 Автомобили, автосервисы Россия Управленческий учет Платные (руб)

Интеграционный модуль обмена между конфигурацией Альфа Авто 5 и Альфа Авто 6 и порталом AUTOCRM. Данный модуль универсален. Позволяет работать с несколькими обменами AUTOCRM разных брендов в одной информационной базе в ручном и автоматическом режиме.

36000 руб.

03.08.2020    18981    21    22    

18

WEB-интеграция Программист Руководитель проекта Платформа 1С v8.3 1C:Бухгалтерия 1С:Франчайзи, автоматизация бизнеса Платные (руб)

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

24000 руб.

27.09.2024    3841    3    2    

4

WEB-интеграция Программист Платформа 1С v8.3 Бухгалтерский учет 1С:Бухгалтерия 3.0 Бытовые услуги, сервис Платные (руб)

Внешняя обработка разрабатывалась для загрузки документов из Ветменеджер в 1С: Бухгалтерия 3.0

12000 руб.

02.02.2021    18742    53    50    

29

Обмен с ГосИС WEB-интеграция Бухгалтер Пользователь Платформа 1С v8.3 Управляемые формы 1С:Комплексная автоматизация 1.х 1С:Бухгалтерия 2.0 1С:Управление торговлей 10 1С:Управление производственным предприятием 1С:Управление нашей фирмой 1.6 1С:Бухгалтерия государственного учреждения 1С:Документооборот 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Платные (руб)

Обработка является альтернативой механизму, разработанному фирмой 1С и заполняющему реквизиты контрагента по ИНН или наименованию. Не требуется действующей подписки ИТС. Вызывается как внешняя дополнительная обработка, т.е. используется, непосредственно, из карточки контрагента. Заполнение по ИНН или наименованию реквизитов контрагента по данным сайта ФНС (egrul.nalog.ru) для БП 2.0, БП 3.0, БГУ 1.0, БГУ 2.0, УТ 10.3, УТ 11.x, КА 1.1, КА 2.x, УПП 1.x, ERP 2.x, УНФ 1.5, УНФ 1.6, УНФ 3.0, ДО 2.1

2400 руб.

28.04.2016    92817    189    217    

342

WEB-интеграция Программист Бизнес-аналитик Платформа 1С v8.3 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 3.0 1С:Розница 3.0 Оптовая торговля, дистрибуция, логистика ИТ-компания Платные (руб)

Модуль "Экспортер" — это расширение для 1С, предназначенное для автоматизации процессов выгрузки данных. Оно позволяет эффективно извлекать, преобразовывать и передавать данные из систем 1С в интеграционную платформу Spot2D. Подсистема упрощает настройку, снижает количество ручных операций и обеспечивает удобный контроль данных.

14400 руб.

20.12.2024    766    3    1    

5
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. xzorkiix 35 23.06.14 17:23 Сейчас в теме
&НаСервере
Процедура УстановитьПол(gender)
	
	Если gender = "MALE" Тогда
		Объект.Пол = Перечисления.ПолФизическогоЛица.Мужской;	
	ИначеЕсли gender = "FEMALE" Тогда
		объект.Пол = Перечисления.ПолФизическогоЛица.Женский;	
	КонецЕсли;
	
КонецПроцедуры
Показать


Здесь достаточно на стороне клиента использовать ПредопределенноеЗначение("Перечисление.ПолФизическогоЛица.Женский");
2. xzorkiix 35 23.06.14 17:29 Сейчас в теме
ЧтениеXML = Новый ЧтениеXML;
ЧтениеXML.УстановитьСтроку(СтрокаXML);
ОбъектXDTO = ФабрикаXDTO.ПрочитатьXML(ЧтениеXML);


wsСсылка, как таковая и не нужна для разбора ответа сервиса.
3. qwinter 684 23.06.14 17:54 Сейчас в теме
(2) xzorkiix, получается двойная работа, сначала создай wsСсылку и ее свойства, а затем еще надо присвоить им значения. Кода столько же как при HTTPЗапросе, плюс созданный объект в конфигурации. Вот в упор не вижу преимуществ при их использовании.
4. xzorkiix 35 24.06.14 09:28 Сейчас в теме
(3) я хотел указать xdto пакет не нужен (оговорился). По крайней мере в рамках описанной задачи. wsСсылка о другом об обмене через протокол SOAP. В вашем случае при разборе ответа нет необходимости расписывать модель сервиса. Достаточно перед обращением к свойствам сервиса проверять их наличие.

Это если для разбора XML строки вы используете объекты XDTO

Функция Свойство(ОбъектXDTO, ИмяСвойства, Значение = Неопределено)
   Результат = Не (ОбъектXDTO.Свойства().Получить(ИмяСвойства) = Неопределено);
   Если Результат Тогда
      Значение = ОбъектXDTO[ИмяСвойства];
   КонецЕсли;
   Возварт Результат;
КонецФункции 

// . . .

Предложения = Неопределено;
Если Свойство(ОбъектXDTO, "suggestions", Предложения) Тогда
   // . . .
КонецЕсли;
Показать
theshadowco; qwinter; +2 Ответить
5. qwinter 684 24.06.14 09:35 Сейчас в теме
(4) xzorkiix, коментарии как обычно полезнее статьи)))
6. bonv 1574 25.06.14 20:32 Сейчас в теме
1.
&НаКлиенте
Функция ПолучитьОбъектXDTO(Текст, КоличествоПодсказок = 10)


Не делайте это на клиенте, в веб-клиенте работать не будет, в нем нет объекта XDTO. Лучше делать внеконтекстный вызов сервера.

2.
Тело = ОтветHTTP.ПолучитьТелоКакСтроку();	
Если Тело = "" Тогда


Это не совсем корректная проверка, если сервер вернет ошибку, то в теле будет ее описание.
Надо использовать проверку на код состояния

Если ОтветHTTP.КодСостояния = 200 Тогда


3.
структурныйТип = ФабрикаXDTO.Тип("http://www.sample-package.org", "SuggestFioResponse"); 
		
МойXML = Новый ЧтениеXML;
МойXML.УстановитьСтроку(Тело);
ОбъектXDTO = ФабрикаXDTO.ПрочитатьXML(МойXML, структурныйТип);
		
Возврат ОбъектXDTO;


Собственно определять в метаданных и затем использовать объект XDTO это лишнее.
Используете анонимный объект XDTO.

ЧтениеXML = Новый ЧтениеXML;
ЧтениеXML.УстановитьСтроку(Тело);
ЧтениеXML.ПерейтиКСодержимому();
ОбъектXDTO = Фабрика.ПрочитатьXML(ЧтениеXML);
ЧтениеXML.Закрыть();

Возврат ОбъектXDTO;


4.
&НаКлиенте
Процедура НаименованиеАвтоПодбор(Элемент, Текст, ДанныеВыбора, Параметры, Ожидание, СтандартнаяОбработка)


В этом методе лучше подключать обработчик ожидания, скажем на 0.5 сек и уже в нем заполнять список.
И опять же лучше отказаться от клиентского кода в пользу вызова внеконтекстного серверного вызова, из которого уже возвращать список.
BigB; babys; awk; worker1c; +4 Ответить
7. qwinter 684 25.06.14 20:56 Сейчас в теме
8. chmv 30.06.14 16:28 Сейчас в теме
Любопытно, но не более
9. Патриот 458 01.07.14 12:26 Сейчас в теме
Более чем любопытно, плюсую, хороший пример демонстрации возможностей работы с интернет сервисом.Комментаторам тоже спасибо за дополнения, сейчас попробую реализовать.
10. lyalius 09.07.14 15:51 Сейчас в теме
Отличная статья, только пример нерабочий.

Проблема вот в этих двух строках:

HTTPЗапрос.Заголовки.Вставить("Authorization", "ВАШ КОД АВТОРИЗАЦИИ");
HTTPЗапрос.УстановитьТелоИзСтроки("" + Текст + "" + КоличествоПодсказок + "");

Правильно так:

HTTPЗапрос.Заголовки.Вставить("Authorization", "Token ВАШ КОД АВТОРИЗАЦИИ");
HTTPЗапрос.УстановитьТелоИзСтроки("<req><query>" + Текст + "</query><count>" + КоличествоПодсказок + "</count></req>");

Еще момент: если по введенной пользователем строке ничего не будет найдено, то код сломается на строчке
> Если ТипЗнч(ОбъектXDTO.suggestions) = Тип("СписокXDTO") Тогда
потому что свойство suggestions в ответе отсутствует.
timurkhann; olegmedvedev; ::Green::; +3 Ответить
11. Патриот 458 10.07.14 18:46 Сейчас в теме
(10) lyalius, спасибо, так работает
12. mnemchinov 109 12.07.14 18:06 Сейчас в теме
У меня заработало только так:
HTTPЗапрос.УстановитьТелоИзСтроки("<req><query>" + Текст + "" + КоличествоПодсказок + "</query></req>");


И еще вместо:
Если ТипЗнч(ОбъектXDTO) = Тип("ОбъектXDTO") Тогда
		Если ТипЗнч(ОбъектXDTO.suggestions) = Тип("СписокXDTO") Тогда


сделал:
Если ТипЗнч(ОбъектXDTO) = Тип("ОбъектXDTO") Тогда
		Если ОбъектXDTO.Свойства().Получить("suggestions") <> Неопределено Тогда
			Если ТипЗнч(ОбъектXDTO.suggestions) = Тип("СписокXDTO") Тогда


и тогда окончательно заработало
olegovich; +1 Ответить
13. oslokot 196 09.09.14 16:46 Сейчас в теме
Всем привет! у этого сервиса, как я понимаю, сменилась версия api и теперь прежняя не работает.
Пытаюсь сделать как в примере, но сервер возвращает ошибку 400.
Текст ошибки: {"detail": "JSON parse error - No JSON object could be decoded"}
Странно, вроде все как надо сделал.

HTTPЗапрос = Новый HTTPЗапрос();
	HTTPЗапрос.АдресРесурса = "/api/v2/clean";
	HTTPЗапрос.Заголовки.Вставить("Content-Type", "application/json");
	HTTPЗапрос.Заголовки.Вставить("charset", "UTF-8");
	HTTPЗапрос.Заголовки.Вставить("Authorization", "Token API-ключ"); 
	HTTPЗапрос.Заголовки.Вставить("X-Secret", "Секретный ключ"); 
	Стр = "{ ""structure"": [ ""ADDRESS"" ], ""data"": [ [ ""Москва, Милютинский 13"" ] ] }";
	HTTPЗапрос.УстановитьТелоИзСтроки(Стр,КодировкаТекста.UTF8); 	
	Соединение = Новый HTTPСоединение("dadata.ru",,,,Новый ИнтернетПрокси,, Новый ЗащищенноеСоединениеOpenSSL);
	ОтветHTTP = Соединение.ОтправитьДляОбработки(HTTPЗапрос);
	
	Сообщить(ОтветHTTP.КодСостояния);
	Тело = ОтветHTTP.ПолучитьТелоКакСтроку();	
	Сообщить(Тело);
Показать

Может кто уже делал, подскажите пожалуйста где я наколбасил
14. oslokot 196 09.09.14 17:44 Сейчас в теме
(13) Сам себе и отвечу) Разобрался. Нужно перезаписать файл в кодировке UTF-8 без BOM и отправить серверу.
В общем неплохой сервис dadata.ru, жаль платный.
15. anton.fly7 175 10.09.14 08:44 Сейчас в теме
(14) покажите как вы устанавливаете тело НТТРЗапроса?
я делаю из строки, возвращает такую же ошибку
	ТекстЗапроса = "[ ""NAME"", ""PHONE"" ], ""data"": [ [ """ + Парам.Наименование + """, """ + Парам.Телефон + """ ] ]";
	
	ТекстЗапроса = "{ ""structure"": " + ТекстЗапроса + " }";
	
	HTTPЗапрос = Новый HTTPЗапрос();
	HTTPЗапрос.АдресРесурса = "/api/v2/clean";
	
	HTTPЗапрос.Заголовки.Вставить("Content-Type", "application/json");
	HTTPЗапрос.Заголовки.Вставить("Authorization", "Token " + Token); 
	HTTPЗапрос.Заголовки.Вставить("X-Secret", Secret);
	HTTPЗапрос.Заголовки.Вставить("charset", "UTF-8");
	HTTPЗапрос.УстановитьТелоИзСтроки(ТекстЗапроса);
Показать
16. anton.fly7 175 10.09.14 09:01 Сейчас в теме
(15) сам себе отвечу )

	ИмяВременногоФайла = ПолучитьИмяВременногоФайла();
	ЗТ = Новый ЗаписьТекста(ИмяВременногоФайла, КодировкаТекста.ANSI);
	ЗТ.Закрыть();
	ЗТ = Новый ЗаписьТекста(ИмяВременногоФайла,,, Истина, Символы.ПС);
	ЗТ.Записать(ТекстЗапроса);
	ЗТ.Закрыть();	
	
	HTTPЗапрос = Новый HTTPЗапрос();
	HTTPЗапрос.АдресРесурса = "/api/v2/clean";
	
	HTTPЗапрос.Заголовки.Вставить("Content-Type", "application/json");
	HTTPЗапрос.Заголовки.Вставить("Authorization", "Token " + Token); 
	HTTPЗапрос.Заголовки.Вставить("X-Secret", Secret);
	HTTPЗапрос.Заголовки.Вставить("charset", "UTF-8");
	//HTTPЗапрос.УстановитьТелоИзСтроки(ТекстЗапроса, КодировкаТекста.UTF8); 
	HTTPЗапрос.УстановитьТелоИзДвоичныхДанных(Новый ДвоичныеДанные(ИмяВременногоФайла));
Показать
progersan; +1 Ответить
19. lyalius 17.09.14 17:06 Сейчас в теме
(14) oslokot, спасибо :) Посмотрите, у нас теперь и подсказки по ЕГРЮЛ есть.
21. oslokot 196 23.09.14 14:40 Сейчас в теме
(19) lyalius, Да-да, видел.
Может как-нибудь воспользуюсь
Пока что использую свою обработку по данным контур.фокус

Ну а так, конечно молодцы, хорошая работа!
Желаю вам успешного развития проекта!
23. lyalius 23.09.14 17:46 Сейчас в теме
(21) oslokot, спасибо, очень приятно слышать такие пожелания :)
17. Zixxx 10.09.14 18:36 Сейчас в теме
А что там по поводу SOAP?

По адресу: http://confluence.hflabs.ru/pages/viewpage.action?... существуют подсказки для протокола SOAP. Пробовал обратиться к wsdl по адресу: http://dadata.ru/suggestions/api/4_1/ws?wsdl, но в ответ получаю ошибку:

Error loading [http://dadata.ru/suggestions/api/4_1/ws?wsdl]: org.apache.xmlbeans.XmlException: org.apache.xmlbeans.XmlException: error: does not close tag

Я так понимаю что это неправильный адрес, но какой тогда правильный?
18. lyalius 17.09.14 17:05 Сейчас в теме
(17) Zixxx, правильный вот этот https://dadata.ru/api/suggest. Та страница, на которую вы сослались — это чтобы вызвать подсказки, которые у вас внутри на сервере установлены.
20. Zixxx 18.09.14 19:09 Сейчас в теме
(18) lyalius, И где там по ссылке wsdl?
22. lyalius 23.09.14 17:45 Сейчас в теме
(20) Zixxx, wsdl доступна тем, кто поставил сервис у себя в корпоративной сети. Вы не ставили и вам она не доступна. Вам нужно пользоваться вот этим сервисом: https://dadata.ru/api/suggest.
24. olegmedvedev 66 13.02.17 15:56 Сейчас в теме
HTTPЗапрос = Новый HTTPЗапрос();
HTTPЗапрос.АдресРесурса = "/api/v2/suggest/address";
	
HTTPЗапрос.Заголовки.Вставить("Content-Type", "application/xml");
HTTPЗапрос.Заголовки.Вставить("Accept", "application/xml");
HTTPЗапрос.Заголовки.Вставить("Authorization", "Token "+Token); 
HTTPЗапрос.УстановитьТелоИзСтроки("<req><query>" + Текст + "</query></req>"); 
	
Соединение = Новый HTTPСоединение("dadata.ru",,,,,, Новый ЗащищенноеСоединениеOpenSSL);
	
ОтветHTTP = Соединение.ОтправитьДляОбработки(HTTPЗапрос);
Показать

вот такой код работает сейчас
25. olegmedvedev 66 21.02.17 09:31 Сейчас в теме
	
	HTTPЗапрос = Новый HTTPЗапрос();
	HTTPЗапрос.АдресРесурса = "/api/4_1/rs/suggest/address";
	
	HTTPЗапрос.Заголовки.Вставить("Content-Type", "application/xml");
	HTTPЗапрос.Заголовки.Вставить("Accept", "application/xml");
	HTTPЗапрос.Заголовки.Вставить("Authorization", "Token "+Token); 
	HTTPЗапрос.УстановитьТелоИзСтроки("<req><query>" + Текст + "</query></req>"); 
	
	Соединение = Новый HTTPСоединение("suggestions.dadata.ru/suggestions",,,,,, Новый ЗащищенноеСоединениеOpenSSL);
	
	ОтветHTTP = Соединение.ОтправитьДляОбработки(HTTPЗапрос);
Показать

изменился API dadata
26. vaad80 24.05.17 21:50 Сейчас в теме
народ, подскажите плз, делаю запрос по последней инструкции, апи текущий, как в инструкции, а в ответ приходит код ответа 200 и соответствие
"Content-Type":"application/xml; charset=UTF-8"
"Connection":"keep-alive"
"X-Powered-By":"Undertow/1"
"Vary":"Accept-Encoding"
"Server":"nginx/1.13.0"
"Date":"Wed, 24 May 2017 17:46:12 GMT"
"Transfer-Encoding":"chunked"

Поля suggestions нет(( в чем может быть ошибка?, вызываю &насервере

код
27. olegmedvedev 66 25.05.17 09:08 Сейчас в теме
(26) Ответ кода 200 - "Запрос успешно обработан", все верно делаете). Сейчас гляну и может подскажу подробнее.
28. vaad80 25.05.17 13:06 Сейчас в теме
(27)
Приветствую, со структурой разобрался, не выходило потому что результат не вогнал в тело. Сейчас приходит тегированная структура,<suggest><\suggest>
Всё ок, но это не устраивает, хотелось бы чтобы приходило в json,так как он легче и быстрее парсится 1ской.
Затык происходит у меня при json на выставке параметра запроса, текста который ищу. Строкой не проходит, возможно надо туда объект json-a впихнуть...
Может есть рабочий код с json?
29. tonimontana05 19.04.18 12:50 Сейчас в теме
(28)
HTTPЗапрос = Новый HTTPЗапрос();
HTTPЗапрос.АдресРесурса = "/api/4_1/rs/suggest/address";
HTTPЗапрос.Заголовки.Вставить("Content-Type", "application/json");
HTTPЗапрос.Заголовки.Вставить("Accept", "application/json");
HTTPЗапрос.Заголовки.Вставить("Authorization", "Token " + "Свой токен");
HTTPЗапрос.УстановитьТелоИзСтроки("{"+"""query""" + ":" + """" + Текст + """" + "," +"""count""" + ":" + "" + КоличествоПодсказок + "" + "}",
КодировкаТекста.UTF8,
ИспользованиеByteOrderMark.НеИспользовать);

Соединение = Новый HTTPСоединение("suggestions.dadata.ru/suggestions",,,,Новый ИнтернетПрокси,, Новый
ЗащищенноеСоединениеOpenSSL);

Ответ = Соединение.ОтправитьДляОбработки(HTTPЗапрос);
ОтветСервера = Ответ.ПолучитьТелоКакСтроку(КодировкаТекста.UTF8);

Чтение = Новый ЧтениеJSON;
Чтение.УстановитьСтроку(ОтветСервера);
Данные = ПрочитатьJSON(Чтение);
Чтение.Закрыть();
30. JetBrain 78 19.06.19 09:21 Сейчас в теме
Сервис выдает абсолютно не актуальную информацию, ИП три раза уже закрылось и открылось , а карточка старая из ФНС загрузилась, проверили пол базы из них 50-60 % только актуально у тех кто ни чего не менял в регистрации.
Оставьте свое сообщение