Автор: Levis1995 20.10.23, 16:27
Потрібно оновити товар на сайт коли він змінився в базі, платформа BAF 8.3.19.1529 конфігурація Business Automation Software for small company. PROF (1.6.19.4)
Ось код POST запиту працює нормально, можливо хтось стикався з структурою PUT запиту щоб звернутися по силці на сайт за кодом товару, корисного в інтеренеті не почабив
КодHTTPСоединение = Новый HTTPСоединение(СтруктураURI.Хост, СтруктураURI.Порт,Пользователь,Пароль,,,Новый ЗащищенноеСоединениеOpenSSL());
Заголовки = Новый Соответствие();
Заголовки.Вставить("accept","application/json");
Заголовки.Вставить("Content-Type","application/json");
Для Каждого СтрокаТабличнойЧасти из СписокНоменклатуры Цикл
Если ЗначениеЗаполнено(СтрокаТабличнойЧасти.Номенклатура.id) Тогда
Продолжить;
КонецЕсли;
СтруктураДляJSON = Новый Структура("name,nodeId,externalId", СокрЛП(СтрокаТабличнойЧасти.Номенклатура),Число(Формат(СтрокаТабличнойЧасти.Номенклатура.Родитель.id, "ЧГ=")),);
ПоместитьВоВременноеХранилище(КонтрольнаяСуммаСтрокой(СтрокаТабличнойЧасти.Номенклатура), СтрокаТабличнойЧасти.Номенклатура);
СтруктураДляJSON.Вставить("data",Новый Структура("type,description,sku,price","ITEM",СокрЛП(СтрокаТабличнойЧасти.Номенклатура),СтрокаТабличнойЧасти.Номенклатура.Артикул,СтрокаТабличнойЧасти.Цена));
СтруктураДляJSON.Вставить("hidden", false);
Запись = Новый ЗаписьJSON;
Запись.УстановитьСтроку();
ЗаписатьJSON(Запись, СтруктураДляJSON);
ТелоЗапроса = Запись.Закрыть();
HTTPЗапрос = Новый HTTPЗапрос(СтруктураURI.ПутьНаСервере, Заголовки);
HTTPЗапрос.УстановитьТелоИзСтроки(ТелоЗапроса);
РезультатЗапроса = HTTPСоединение.ОтправитьДляОбработки(HTTPЗапрос);
ТекстОтветаJSON = РезультатЗапроса.ПолучитьТелоКакСтроку();
ЧтениеJSON = Новый ЧтениеJSON();
ЧтениеJSON.УстановитьСтроку(ТекстОтветаJSON);
РезультатЧтения = ПрочитатьJSON(ЧтениеJSON);
ЧтениеJSON.Закрыть();
Попытка
НоменклатураОбъект = СтрокаТабличнойЧасти.Номенклатура.ПолучитьОбъект();
НоменклатураОбъект.id = РезультатЧтения.id;
НоменклатураОбъект.Записать();
Исключение
КонецПопытки;
КонецЦикла;
Автор: Eclit 22.10.23, 16:38
Levis1995 @ 20.10.23, 16:27
,
Півроку як перейшов на використання модуля "Коннектор HTTP" для будь-якої роботи з АПІ. І вам рекомендую.
Дозволить скоротити усе це простирадло тексту в кілька разів. Якщо не вдастся загуглилити - пишіть в особисті, кину посилання.
З точки зору 1С ніякої різниці між формуванням POST і PUT немає. Якщо мінімально змінювати вашу процедуру, то необхідно замість
РезультатЗапроса = HTTPСоединение.ОтправитьДляОбработки(HTTPЗапрос);
написати
РезультатЗапроса = HTTPСоединение.ВызватьHTTPМетод("PUT", HTTPЗапрос);