【发布时间】:2011-12-12 15:31:31
【问题描述】:
我想在 CRM 2011 中单击功能区按钮更改状态码和状态码。 我有调用 SOAP 的 javascript 函数:
if (typeof (Smpl) == "undefined") { Smpl = {}; }
Smpl.Items = {
change: function () {
var entityId = Xrm.Page.data.entity.getId().substr(1, 36);
var entityName = Xrm.Page.data.entity.getEntityName();
var entityState = 0;
var entityStatus = 100007891;
var xml = "<?xml version='1.0' encoding='utf-8'?>" +
"<soap:Envelope xmlns:soap='http://schemas.xmlsoap.org/soap/envelope/' xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xmlns:xsd='http://www.w3.org/2001/XMLSchema'>" +
"<soap:Body><Execute xmlns='http://schemas.microsoft.com/crm/2007/WebServices'><Request xsi:type='SetStateDynamicEntityRequest'>" +
"<Entity><Id xmlns='http://schemas.microsoft.com/crm/2006/CoreTypes'>" + entityId + "</Id>" +
"<Name xmlns='http://schemas.microsoft.com/crm/2006/CoreTypes'>" + entityName + "</Name></Entity>" +
"<State>" + entityState + "</State>" +
"<Status>" + entityStatus + "</Status>" +
"</Request></Execute></soap:Body></soap:Envelope>";
var xHReq = new ActiveXObject("Msxml2.XMLHTTP");
xHReq.Open("POST", "http://my.full.com:80/web/mscrmservices/2007/CrmService.asmx", false);
xHReq.setRequestHeader("SOAPAction", "http://schemas.microsoft.com/crm/2007/WebServices/Execute");
xHReq.setRequestHeader("Content-Type", "text/xml; charset=utf-8");
xHReq.setRequestHeader("Content-Length", xml.length);
xHReq.send(xml);
var resultXml = xHReq.responseXML;
var errorCount = resultXml.selectNodes('//error').length;
if (errorCount != 0) {
var msg = resultXml.selectSingleNode('//description').nodeTypedValue;
alert(msg);
}
window.location.reload();
}
}
我会说整个代码没问题,但当然,它根本不起作用:/ 在谷歌上,我只找到了一些 sn-ps,但与我的代码没有什么不同。 真的没有人通过 javascript 从功能区更改状态吗??
谢谢
【问题讨论】:
标签: javascript soap dynamics-crm-2011