0

아래 코드는 방금 생성 한 계정에 대한 accout 엔티티의 조회 cs24_erpaccounttomergeid에서 데이터를 검색하는 데 도움이됩니다. 내 조회는 관계 1을 기반으로 다른 엔티티의 레코드를 검색하는 방법입니다. 동일한 조회와 관련된 N 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

먼저 XML 요청 생성을 위해 공용 라이브러리를 사용하도록 코드를 마이그레이션하는 것이 좋습니다. XrmServiceToolkit은 일반적으로 사용되는 도구입니다. 일단 이것을 사용하면 RetrieveMultiple 호출을 수행하는 것이 훨씬 간단합니다.

https://xrmservicetoolkit.codeplex.com/