crm 2011通过Javascript和JSON停用记录(更改状态)

crm 2011通过Javascript和JSON停用记录(更改状态),javascript,json,dynamics-crm-2011,Javascript,Json,Dynamics Crm 2011,如何使用Javascript和JSON符号更改CRM中的状态/禁用记录?所有源代码都只是使用XML链接。 然而,我试图让它与JSON一起工作,但没有成功。 下面是我的代码和返回的错误。该代码在更改其他字段时起作用 function update(oldObject,id){ var newObject = new Object(); newObject.statecode=oldObject.statecode; //take the state object from recor

如何使用Javascript和JSON符号更改CRM中的状态/禁用记录?所有源代码都只是使用XML链接。 然而,我试图让它与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}"
}

从错误消息的外观来看,问题在于您试图为实体分配给statecode的值
ort_hodinyzesmluv

实体的状态由两个字段描述:
statecode
statuscode
对于每个实体,只有这两个字段的某些组合是有效的

根据您在上面发布的代码,您正在分配:

newObject.statecode.Value=1
newObject.statuscode.Value=2


我建议您查看表
StatusMap
。这将保存每个实体的所有有效组合(您还需要实体ObjectTypeCode)。

从错误消息的外观来看,问题是您试图为实体分配给statecode的值
ort_hodinyzesmluv

实体的状态由两个字段描述:
statecode
statuscode
对于每个实体,只有这两个字段的某些组合是有效的

根据您在上面发布的代码,您正在分配:

newObject.statecode.Value=1
newObject.statuscode.Value=2


我建议您查看表
StatusMap
。它保存每个实体的所有有效组合(您还需要实体ObjectTypeCode)。

这是一个有效组合。我猜这是非活动记录的默认组合。我已经在StatusMap表和entity表中对CRM停用的记录进行了检查。这是一个有效的组合。我猜这是非活动记录的默认组合。我已经在StatusMap表和entity表中对CRM停用的记录进行了检查。必须通过SetState请求/方法进行检查。我还没有找到一种方法,在没有XML的情况下如何做或调用它。它必须通过SetState请求/方法来完成。我还没有找到在没有XML的情况下如何实现或调用它的方法。