Я пытаюсь добавить метку опции и значение опции в поле набора опций (new_contractserving), найденное в объекте с именем new_servingtime. Не уверен, что я делаю это правильно, но сервер выдает запрос 400 Bad, в чем проблема?!
var entity = { "new_contractserving": String(OptionValue), "new_contractserving@OData.Community.Display.V1.FormattedValue": String(OptionText) }; var reqJSON = new XMLHttpRequest(); reqJSON.open("POST", url + "/api/data/v8.2/new_servingtimes", false); reqJSON.setRequestHeader("OData-MaxVersion", "4.0"); reqJSON.setRequestHeader("OData-Version", "4.0"); reqJSON.setRequestHeader("Accept", "application/json"); reqJSON.setRequestHeader("Content-Type", "application/json; charset=utf-8"); reqJSON.onreadystatechange = function () { if (this.readyState === 4) { reqJSON.onreadystatechange = null; if (this.status === 204) { var uri = this.getResponseHeader("OData-EntityId"); var regExp = /\(([^)]+)\)/; var matches = regExp.exec(uri); var newEntityId = matches[1]; } else { Xrm.Utility.alertDialog(this.statusText + ": Third Request!"); return; } } }; reqJSON.send(entity);
Вы должны использовать InsertOptionValue Действие для добавления новой опции в существующий атрибут списка выбора в сущности.
CRM REST Builder - лучший выбор для составления таких запросов и тестирования.
Написанный вами запрос может использоваться для установки значения атрибута в записи, но он все еще не завершен. Прочтите этот блог , чтобы понять, как выполнить действие webapi.
HTTP 400 означает неверные данные. Если бы это был "URI не найден", это было бы HTTP 404
HTTP 400
HTTP 404
HTTP 400 на POST обычно означает, что ваш запрос (requestbody) не прошел проверку на стороне сервера или не ограничен форматом, ожидаемым сервером
POST