以下代码有助于将accout实体的查询cs24_erpaccounttomergeid
中的数据检索到我们刚刚创建的帐户。
我的问题是如何根据与同一查找cs24_erpaccounttomergeid
相关的关系1:N检索其他实体的记录?
if (crmForm.all.cs24_erpaccounttomergeid.DataValue != null)
{
var l = crmForm.GetLookup('cs24_erpaccounttomergeid');
var ERPS = GetERPSourceName(l.id);
if (ERPS == null)
{
crmForm.all.cs24_erpaccounttomergeid.DataValue = null;
}
}
// ERP SrourceName retrieve ==============
function GetERPSourceName(Act) {
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\">" +
GenerateAuthenticationHeader() +
"<soap:Body>" +
"<RetrieveMultiple xmlns='http://schemas.microsoft.com/crm/2007/WebServices'>" +
"<query xmlns:q1='http://schemas.microsoft.com/crm/2006/Query'" +
" xsi:type='q1:QueryExpression'>" +
"<q1:EntityName>account</q1:EntityName>" +
"<q1:ColumnSet xsi:type='q1:ColumnSet'>" +
"<q1:Attributes>" +
"<q1:Attribute>cs_erpsourcename</q1:Attribute>" +
"</q1:Attributes>" +
"</q1:ColumnSet>" +
"<q1:Distinct>false</q1:Distinct>" +
"<q1:Criteria>" +
"<q1:FilterOperator>And</q1:FilterOperator>" +
"<q1:Conditions>" +
"<q1:Condition>" +
"<q1:AttributeName>accountid</q1:AttributeName>" +
"<q1:Operator>Equal</q1:Operator>" +
"<q1:Values>" +
"<q1:Value xsi:type='xsd:string'>" + Act + "</q1:Value>" +
"</q1:Values>" +
"</q1:Condition>" +
"</q1:Conditions>" +
"</q1:Criteria>" +
"</query>" +
"</RetrieveMultiple>" +
"</soap:Body>" +
"</soap:Envelope>" +
"";
var xmlHttpRequest = new ActiveXObject("Msxml2.XMLHTTP");
xmlHttpRequest.Open("POST", "/mscrmservices/2007/CrmService.asmx", false);
xmlHttpRequest.setRequestHeader("SOAPAction", " http://schemas.microsoft.com/crm/2007/WebServices/RetrieveMultiple");
xmlHttpRequest.setRequestHeader("Content-Type", "text/xml; charset=utf-8");
xmlHttpRequest.setRequestHeader("Content-Length", xml.length);
xmlHttpRequest.send(xml);
var resultXml = xmlHttpRequest.responseXML;
var Request = resultXml.getElementsByTagName("BusinessEntity");
if (Request.length == 0) return null;
else
{
if (Request[0].getElementsByTagName("q1:cs_erpsourcename")[0] != null)
{
var ERPSourceName = resultXml.selectNodes("//BusinessEntity/q1:cs_erpsourcename");
return ERPSourceName[0].text;
}
else return null;
}
}
有人可以帮我实现这个目标吗? 谢谢你的时间
答案 0 :(得分:0)
我建议首先迁移您的代码以使用公共库来生成XML请求。 XrmServiceToolkit是一个常用的。一旦你使用它,做一个RetrieveMultiple调用要简单得多。