我在CRM 365上创建了一个自定义操作,该操作具有一个类型为实体引用的输入参数,并且它引用了用户实体,因此我尝试将输入参数更改为另一种类型,并且效果很好。所以我认为问题出在我传递实体参考值的方式上,我试图更改它,但是我没有任何运气,所以有人可以告诉我下面的代码有什么问题吗?
function CreateBlockHistory() {
var Id = Xrm.Page.data.entity.getId();
Id = Id.replace("{", "").replace("}", "");
var data = {
"BlockedBy": {
"ohd_blockedby": Xrm.Page.context.getUserId().replace("}", "").replace("{", ""),
"@odata.type": "Microsoft.Dynamics.CRM.systemuser"
}
};
var serverURL = window.parent.Xrm.Page.context.getClientUrl();
var req = new XMLHttpRequest();
req.open("POST", serverURL + "/api/data/v8.1/new_units(" + Id + ")/Microsoft.Dynamics.CRM.ohd_ActionTest", false);
req.setRequestHeader("Accept", "application/json");
req.setRequestHeader("Content-Type", "application/json; charset=utf-8");
req.setRequestHeader("OData-MaxVersion", "4.0");
req.setRequestHeader("OData-Version", "4.0");
req.onreadystatechange = function () {
if (this.readyState == 4 /* request completed */) {
req.onreadystatechange = null;
if (this.status == 200 /* response ready */) {
var data = JSON.parse(this.response);
}
else {
var error = JSON.parse(this.response).error;
}
}
};
req.send(window.JSON.stringify(data));
}
答案 0 :(得分:0)
400 Bad request
开始-这是一个非常普通的无用错误,而不是依靠它-尝试通过传递硬编码的guid参数以查看执行状态,在浏览器控制台或CRM REST Builder中运行相同的代码段。您也可以调试XMLHttpRequest
正在同步运行(bool参数为false),将其切换为“异步”并查看Xrm
之类的混合方法来获得window.parent
上下文,有时甚至会直接。 window.JSON
。如果此操作不是以任何实体形式在Web资源中执行的,则对其进行适当修复