Передача Таблицы Значений через HTTP-сервис
Отправка / Прием (Сторона 1)
Функция ОтправитьPostЗапросJSON(текстЗапросаВФорматеJSON, Путь) Экспорт
Если Доработки_Сервер.ОпределитьЭтаИнформационнаяБазаРабочая() Тогда
url = "localhost";
ИмяСервисаВебСервер = "Buh8United";
Иначе
url = "localhost";
ИмяСервисаВебСервер = "ViatecBP_Tro";
КонецЕсли;
Данные = Неопределено;
Попытка
соединение = Новый HTTPСоединение(url,,"ПолучениеДопДанныхДляУТ","BiphI4033imOcun2Phed",,600);
Исключение
Сообщить("Не удалось установить соединение с сервером :"
+ Символы.ПС + ИнформацияОбОшибке().Описание+" для получения данных по наличию налоговых накладных. Повторная попытка будет выполнена позже.", СтатусСообщения.Важное);
Возврат Неопределено;
КонецПопытки;
запрос = Новый HTTPЗапрос("/"+ИмяСервисаВебСервер+"/hs/sales/"+Путь+"/");
запрос.УстановитьТелоИзСтроки(текстЗапросаВФорматеJSON,КодировкаТекста.UTF8,ИспользованиеByteOrderMark.НеИспользовать);
Попытка
ответ = соединение.ОтправитьДляОбработки(запрос);
ответСтрока = ответ.ПолучитьТелоКакСтроку();
Исключение
Сообщить("Не удалось установить соединение с сервером: "
+ Символы.ПС + ИнформацияОбОшибке().Описание+" для получения данных по наличию налоговых накладных. Повторная попытка будет выполнена позже.", СтатусСообщения.Важное);
Возврат Неопределено;
КонецПопытки;
Попытка
//++Троцкий 24022024
Если Путь = "nn" Тогда
ЧтениеJSON = Новый ЧтениеJSON();
ЧтениеJSON.УстановитьСтроку(ответСтрока);
Данные = ПрочитатьJSON(ЧтениеJSON, Ложь);
ИначеЕсли Путь = "status" ИЛИ Путь = "incomingndcopyorder" Тогда
Данные = ОбщегоНазначения.ЗначениеИзСтрокиXML(ответСтрока);
КонецЕсли;
//--
Исключение
//Троцкий 04012023 Отключил оповещение т.к. оно спонтанно может появляться еще еще док в БуХ не попал. Достаточно сообщений в случае невозможности вообще с сервером бухи соеденится
//Сообщить("Не удалось прочитать данные по наличию налоговых накладных с базы BAS Бух. Повторная попытка будет выполнена позже.");
КонецПопытки;
Возврат Данные;
КонецФункции
Ответ (Сторона 2)
Функция ДанныеДоступовУстановитьЛогинПароль(Запрос)
Ответ = Новый HTTPСервисОтвет(200);
СтруктураОтвета = Новый Структура;
МассивОшибок = Новый Массив;
СтруктураОтвета.Вставить("data");
СтруктураОтвета.Вставить("error",МассивОшибок);
//Разбираем поступившие данніе
Попытка
СтрокаНоменклатураJSON = Запрос.ПолучитьТелоКакСтроку();
ПоступившиеДанные = ОбщегоНазначения.ЗначениеИзСтрокиXML(СтрокаНоменклатураJSON);
Исключение
МассивОшибок.Добавить("Не удалось разобрать поступившие данные");
КонецПопытки;
Если МассивОшибок.Количество()=0 Тогда
//Выполняем операции
КонецЕсли;
//Формируем ответ
Ответ.УстановитьТелоИзСтроки(ОбщегоНазначения.ЗначениеВСтрокуXML(СтруктураОтвета), КодировкаТекста.UTF8);
Возврат Ответ;
КонецФункции