Возвращается пустой ответ на запрос в 1С 8.3
Здравствуйте! Написал процедуру для автоматического заполнения карточки контрагента в 1С 8.3 данными с dadata, в итоге приходит пустой ответ на запрос {"suggestions":[]}, подскажите в какую сторону копать, уже всю голову сломал, код прилагаю.
Процедура ЗаполнитьПоИНН();
ИНН = Объект.ИНН;
Наименование = Объект.Наименование;
ИмяВремФайла = ПолучитьИмяВременногоФайла();
APIКлючDaData = Константы.APIКлючDaData.Получить();
//XSecreet = Константы.СекретныйКлюч.Получить();
ТелоЗапроса = Новый Структура;
ТелоЗапроса.Вставить("query", ИНН);
ПараметрыЗаписиJSON = Новый ПараметрыЗаписиJSON(, , , , , , , , Ложь);
ЗаписьJSON = Новый ЗаписьJSON;
ЗаписьJSON.УстановитьСтроку(ПараметрыЗаписиJSON);
ЗаписатьJSON(ЗаписьJSON, ТелоЗапроса);
ТелоЗапросаСтрокой = ЗаписьJSON.Закрыть();
SSL = Новый ЗащищенноеСоединениеOpenSSL();
Сервер = "suggestions.dadata.ru";
//СтрокаЗапроса = "/suggestions/api/4_1/rs/suggest/party";
СтрокаЗапроса = "/suggestions/api/4_1/rs/findById/party";
HTTPСоединение = Новый HTTPСоединение(сервер,,,,,, SSL);
HTTPЗапрос = Новый HTTPЗапрос(СтрокаЗапроса);
HTTPЗапрос.Заголовки.Вставить("Content-Type", "application/json");
HTTPЗапрос.Заголовки.Вставить("Accept", "application/json");
HTTPЗапрос.Заголовки.Вставить("Authorization", "Token " + APIКлючDaData);
//HTTPЗапрос.Заголовки.Вставить("X-Secret", XSecreet);
HTTPЗапрос.УстановитьТелоИзСтроки(ТелоЗапросаСтрокой,КодировкаТекста.UTF8);
Попытка
HTTPОтвет = HTTPСоединение.ОтправитьДляОбработки(HTTPЗапрос);
Исключение
Сообщить("Произошла ошибка при отправке запроса");
КонецПопытки;
Попытка
HTTPОтвет = HTTPСоединение.Получить(HTTPЗапрос);
ТекстJSON = HTTPОтвет.ПолучитьТелоКакСтроку();
Исключение
Сообщить("При отправке запроса произошла ошибка");
Возврат;
КонецПопытки;
Если HTTPОтвет = Неопределено Тогда
Сообщить("Получен не верный ответ от сервера dadata.ru");
ИначеЕсли HTTPОтвет.КодСостояния <> 200 Тогда
Сообщить("Получен не верный ответ от сервера dadata.ru");
КонецЕсли;
ЧтениеJSON = Новый ЧтениеJSON;
ЧтениеJSON.УстановитьСтроку(ТекстJSON);
ОтветСервера = ПрочитатьJSON(ЧтениеJSON);
ЧтениеJSON.Закрыть();
Если ОтветСервера.количество() = 0 Тогда
Сообщить("Ни чего не найдено");
КонецЕсли;
Сообщить(ТекстJSON);
КонецПроцедуры
Ответ
Решение найдено.
APIКлючDaData = "Указать свой токен"; ИНН = "7707782563"; ТелоЗапроса = Новый Структура; ТелоЗапроса.Вставить("query", ИНН); ПараметрыЗаписиJSON = Новый ПараметрыЗаписиJSON(, , , , , , , , Ложь); ЗаписьJSON = Новый ЗаписьJSON; ЗаписьJSON.УстановитьСтроку(ПараметрыЗаписиJSON); ЗаписатьJSON(ЗаписьJSON, ТелоЗапроса); ТелоЗапросаСтрокой = ЗаписьJSON.Закрыть(); SSL = Новый ЗащищенноеСоединениеOpenSSL(); Сервер = "suggestions.dadata.ru"; СтрокаЗапроса = "/suggestions/api/4_1/rs/findById/party"; HTTPСоединение = Новый HTTPСоединение(Сервер,,,,,, SSL); HTTPЗапрос = Новый HTTPЗапрос(СтрокаЗапроса); HTTPЗапрос.Заголовки.Вставить("Content-Type", "application/json"); HTTPЗапрос.Заголовки.Вставить("Accept", "application/json"); HTTPЗапрос.Заголовки.Вставить("Authorization", "Token " + APIКлючDaData); HTTPЗапрос.УстановитьТелоИзСтроки(ТелоЗапросаСтрокой,КодировкаТекста.UTF8); Попытка HTTPОтвет = HTTPСоединение.ОтправитьДляОбработки(HTTPЗапрос); JSON = HTTPОтвет.ПолучитьТелоКакСтроку(); Сообщить(JSON); Исключение Сообщить(ПодробноеПредставлениеОшибки(ИнформацияОбОшибке())); КонецПопытки;
Здравствуйте, Илья!
Рада, что получилось разобраться. Если будут вопросы — пишите.
Сервис поддержки клиентов работает на платформе UserEcho
Решение найдено.