Имя: Пароль:
1C
1С v8
Проблема с PATCH запросом ODATA при обновлении табличной части элемента.
0 НачинающийВ1С
 
14.05.19
18:02
Добрый день.
В общем, возможно кто-то знает, как, зная гуид, можно обновить табличную часть элемента?
Пытаюсь вот так делать:
Код такой:

        HTTPЗапрос = Новый HTTPЗапрос("ИмяБазы/odata/standard.odata/"+МойОбъект+"('"+Элемент.Гуид+"')?$format=json");
    HTTPЗапрос.УстановитьТелоИзСтроки(ТелоЗапроса);
    HTTPЗапрос2 = Новый HTTPЗапрос("ИмяБазы/odata/standard.odata/"+МойОбъект_ТабличнаяЧасть+"?$format=json&$filter=Ref_Key eq guid'"+Элемент.Гуид+"'");
    HTTPЗапрос2.УстановитьТелоИзСтроки(ТелоЗапроса);
    
        HTTPОтвет = СоединениеHTTP.ВызватьHTTPМетод("PATCH",HTTPЗапрос);
        Ответ = HTTPОтвет.ПолучитьТелоКакСтроку();
        HTTPОтвет2 = СоединениеHTTP.ВызватьHTTPМетод("PATCH", HTTPЗапрос2);
        Ответ2 = HTTPОтвет2.ПолучитьТелоКакСтроку();


При этом первый запрос отрабатывает как надо, а вот второй запрос выдает:  "value": "Использованный HTTP метод запрещен в данном контексте"

Может кто-то сталкивался?
1 НачинающийВ1С
 
15.05.19
08:53
Нет ни у кого идей?
2 НачинающийВ1С
 
15.05.19
10:51
up
3 НачинающийВ1С
 
15.05.19
13:18
up
4 bolero
 
15.05.19
15:26
(0) запросом PATCH шлешь документ, в нем табличную часть

от документа нужна только ссылка

табличную часть если шлешь - то шлешь целиком, иначе будет 500

проще всего получить целиком документ, у него взять ТЧ, поменять чего надо и отослать обратно
5 НачинающийВ1С
 
15.05.19
15:33
(4) а можно пример какой-нибудь?
6 bolero
 
15.05.19
16:07
(5) пжста! только у меня нет примера на 1с-ных языках


    doc = ut.get('Document_ЗаказНаПеремещение', ref)
    patch = {'Товары': doc['Товары']}
    for row in patch['Товары']:
        if row['КодСтроки'] in rowcodes:
            row['Отменено'] = True
    ut.patch('Document_ЗаказНаПеремещение', ref, patch)
7 НачинающийВ1С
 
15.05.19
16:14
(6) Спасибо. Буду пробовать
Проблемы невозможно решaть нa том же уровне компетентности, нa котором они возникaют. Альберт Эйнштейн