0
Отвечен

Возвращается пустой ответ на запрос в 1С 8.3

Илья 3 года назад обновлен Антон Жиянов 3 года назад 2

Здравствуйте! Написал процедуру для автоматического заполнения карточки контрагента в 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);
    Исключение
        Сообщить(ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()));
    КонецПопытки;

Ответ

Решение найдено.

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