如何使用Javascript和JSON表示法更改CRM中的状态/禁用记录?所有来源都只使用XML链接到http://mileyja.blogspot.cz/2011/07/set-status-or-state-of-record-using.html。 我尝试使用JSON,但没有成功。 下面是我的代码并返回错误。更改其他字段时代码有效。
function update(oldObject,id){
var newObject = new Object();
newObject.statecode=oldObject.statecode; //take the state object from record of the same entity
newObject.statuscode=oldObject.statuscode; // -||-
newObject.statecode.Value=1;
newObject.statuscode.Value=2;
var jsonEntity = window.JSON.stringify(newObject);
var ODataPath = serverUrl +
"/XRMServices/2011/OrganizationData.svc/ort_hodinyzesmluvSet(guid'" + id + "')";
var r = new XMLHttpRequest();
r.open("POST", ODataPath, false);
r.setRequestHeader("Accept", "application/json");
r.setRequestHeader("Content-Type", "application/json; charset=utf-8");
r.setRequestHeader("X-HTTP-Method", "MERGE");
r.onreadystatechange = function () {
r=this;
if (r.readyState == 4 ) {
if (r.status == 200 || r.status == 201 || r.status == 202 || r.status==1223){
alert('suc');
}
else
prompt('error',JSON.stringify(r));
}
};
r.send(jsonEntity);
}
错误:
{
"timeout":0,
"responseXML":{},
"ontimeout":null,
"status":500,
"readyState":4,
"statusText":"Internal Server Error",
"responseText":"{\r\n\"error\": {\r\n\"code\": \"-2147187704\", \"message\": {\r\n\"lang\": \"en-US\", \"value\": \"**2 is not a valid status code for state code ort_hodinyzesmluvState.Active on ort_hodinyzesmluv**.\"\r\n}\r\n}\r\n}"
}
答案 0 :(得分:1)
通过错误消息的外观,问题是您尝试为实体ort_hodinyzesmluv
分配给状态代码的值
实体的状态由两个字段描述:statecode
和statuscode
对于每个实体,只有两个字段的某些组合有效。
根据您在上面发布的代码,您要分配:
newObject.statecode.Value = 1;
newObject.statuscode.Value = 2;
我建议您查看表格StatusMap
。这包含每个实体的所有有效组合(您还需要实体ObjectTypeCode)。