Версия для печати темы (https://pro1c.org.ua/index.php?showtopic=67359)

Нажмите сюда для просмотра этой темы в обычном формате

Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7 _ Программирование в 1С Предприятие 8.3 _ PUT запит на сайт, для оновлення товару

Автор: 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Запрос);


Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7
https://pro1c.org.ua