HTTP сервис изменение объекта
Здравствуйте! Есть обработка по изменению реквизита справочника с помощью http сервиса
Вопрос: когда отбор в URL по УУИД, (как сейчас установлено в коде), все отрабатывает нормально, Код состояния возвращается 200 и метод изменяет нужный реквизит справочника, но когда пытаюсь сделать фильтр по коду (закомментированная строка в коде), метод возвращает статус 405 (указанный метод не применим к данному ресурсу). Хотя когда пытаюсь набрать в браузере , то обе строки корректно отображают данные запрашиваемого элемента справочника, что с фильтром по коду (параметр ?$filter=Code eq '000000010'), что с отбором по УУИД (Catalog_Номенклатура(guid'cdcb0e84-ba65-11e7-88e8-742f6881dbd9')) ?
&НаКлиенте
Асинх Процедура ИзменитьАртикулАсинх()
ПараметрыЗаписи=Новый ПараметрыЗаписиJSON;
Запись=Новый ЗаписьJSON;
Запись.УстановитьСтроку(ПараметрыЗаписи);
НовыйАртикул = Объект.НовыйАртикул;
КодНоменклатуры = Объект.Номенклатура.Код;
Стр=ИзменяемыеДанные(НовыйАртикул);
ЗаписатьJSON(Запись,Стр);
Данные=Запись.Закрыть();
СерверИсточник = "localhost";
//Адрес="/wstester/odata/standard.odata/Catalog_Номенклатура?$filter=Code eq '000000010'&$format=application/json;";
Адрес="/wstester/odata/standard.odata/Catalog_Номенклатура(guid'cdcb0e84-ba65-11e7-88e8-742f6881dbd9')?$format=application/json;";
НТТР = Новый HTTPСоединение(СерверИсточник);
HTTPЗапрос=Новый HTTPЗапрос(Адрес);
HTTPЗапрос.УстановитьТелоИзСтроки(Данные);
Попытка
Ответ = Ждать НТТР.ИзменитьАсинх(HTTPЗапрос);
Исключение
Сообщить("Сработало исключение");
КонецПопытки;
Если Ответ.КодСостояния=200 Тогда
Сообщить("Артикул изменен!");
Иначе
Сообщить("Ошибка, код состояния:"+Ответ.КодСостояния);
КонецЕсли;
КонецПроцедуры
ПоказатьВопрос: когда отбор в URL по УУИД, (как сейчас установлено в коде), все отрабатывает нормально, Код состояния возвращается 200 и метод изменяет нужный реквизит справочника, но когда пытаюсь сделать фильтр по коду (закомментированная строка в коде), метод возвращает статус 405 (указанный метод не применим к данному ресурсу). Хотя когда пытаюсь набрать в браузере , то обе строки корректно отображают данные запрашиваемого элемента справочника, что с фильтром по коду (параметр ?$filter=Code eq '000000010'), что с отбором по УУИД (Catalog_Номенклатура(guid'cdcb0e84-ba65-11e7-88e8-742f6881dbd9')) ?
По теме из базы знаний
Найденные решения
Остальные ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(1)
Когда ты "набираешь в браузере", ты всегда отправляешь GET, который возвращает тебе результат отбора. Когда вызываешь своё ИзменитьАсинх, то вызываешь PATCH, который должен изменить единственный объект.
Запрос с твоим фильтром по коду оперирует коллекцией, потому что в базе может существововать несколько объектов с таким кодом, это как раз твои "квадратные скобочки". Запрос с отбором по ссылке оперирует с единственным объектом. Метод PATCH не применим к коллекциям, про что тебе и сообщают ошибкой 405.
Делай, как в (7) написано.
метод возвращает статус 405 (указанный метод не применим к данному ресурсу). Хотя когда пытаюсь набрать в браузере
Еще один персонаж без понимания основ того, как оно работает.
Когда ты "набираешь в браузере", ты всегда отправляешь GET, который возвращает тебе результат отбора. Когда вызываешь своё ИзменитьАсинх, то вызываешь PATCH, который должен изменить единственный объект.
Запрос с твоим фильтром по коду оперирует коллекцией, потому что в базе может существововать несколько объектов с таким кодом, это как раз твои "квадратные скобочки". Запрос с отбором по ссылке оперирует с единственным объектом. Метод PATCH не применим к коллекциям, про что тебе и сообщают ошибкой 405.
Делай, как в (7) написано.
Наверное дело не в пробелах. Эти две URL строки выдают JSON с разной структурой: если указан параметр filtr то возвращает:
а если без параметра по УУИД, то JSON другой, здесь реквизиты элемента являются отдельными объектами JSON (нет квадратных скобок)
{
"odata.metadata": "http://localhost/wstester/odata/standard.odata/$metadata#Catalog_Номенклатура",
"value": [{
"Ref_Key": "cdcb0e84-ba65-11e7-88e8-742f6881dbd9",
"DataVersion": "AAAAGAAAAAA=",
"DeletionMark": false,
"Parent_Key": "00000000-0000-0000-0000-000000000000",
"IsFolder": false,
"Code": "000000010",
"Description": "Новенький",
"Артикул": "5456465454",
"Услуга": true,
"Картинка_Type": "application/xml+xdto",
"Картинка_Base64Data": "",
"ИмяФайла": "",
"Цена": 0,
"Комментарий": "Запись в обычном режиме",
"Predefined": false,
"PredefinedDataName": ""
}]
}
Показатьа если без параметра по УУИД, то JSON другой, здесь реквизиты элемента являются отдельными объектами JSON (нет квадратных скобок)
{
"odata.metadata": "http://localhost/wstester/odata/standard.odata/$metadata#Catalog_Номенклатура/@Element",
"Ref_Key": "cdcb0e84-ba65-11e7-88e8-742f6881dbd9",
"Predefined": false,
"IsFolder": false,
"Parent_Key": "00000000-0000-0000-0000-000000000000",
"DeletionMark": false,
"PredefinedDataName": "",
"DataVersion": "AAAAGAAAAAA=",
"Code": "000000010",
"Description": "Новенький",
"Цена": 0,
"ИмяФайла": "",
"Комментарий": "Запись в обычном режиме",
"Картинка_Type": "application/xml+xdto",
"Картинка_Base64Data": "",
"Артикул": "5456465454",
"Услуга": true
}
Показать
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот