2016-09-11 2 views
0

私はMicrosoft Dynamics CRMで新しく、CRM 2015で作業しています。 私はCRM 2015で作業しています。 古い構文のように見えますが、CRM 2015のJSにどのように適合させるかわかりません。 スクリプトはユーザーの役割と役割の名前を管理しており、fetchXMLでデータを取得しています。古いJS CRM 2011をCRM 2015にどのように適合させるか

function onChangeValutator() 
 
{ 
 
    var idUser = Xrm.Page.getAttribute("erm_valutatorid").getValue()[0].id; 
 

 
    // Use the Xrm.Page.context.getAuthenticationHeader() method 
 
    // available from the CRM form to generate the Soap header text. 
 
    var authenticationHeader = Xrm.Page.context.getAuthenticationHeader(); 
 

 
    // Define the SOAP XML to access Microsoft Dynamics CRM Web service. 
 
    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\">" + 
 
    authenticationHeader+ 
 
    "<soap:Body>" + 
 
    // Specify the RetrieveMultiple message. 
 
    "<RetrieveMultiple xmlns="+ 
 
    "\"http://schemas.microsoft.com/crm/2007/WebServices\">" + 
 
    // Specify that this is a QueryByAttribute query. 
 
    "<query xmlns:q1="+ 
 
    "\"http://schemas.microsoft.com/crm/2006/Query\" "+ 
 
    "xsi:type=\"q1:QueryByAttribute\">" + 
 
    // Query the customeraddress entity. 
 
    "<q1:EntityName>erm_source</q1:EntityName>" + 
 
    // Set the columns you want to return. 
 
    "<q1:ColumnSet xsi:type=\"q1:ColumnSet\">" + 
 
    "<q1:Attributes>" + 
 
    "<q1:Attribute>erm_roleid</q1:Attribute>" + 
 
    "</q1:Attributes>" + 
 
    "</q1:ColumnSet>" + 
 
    // Specify the attribute that you are querying on. 
 
    "<q1:Attributes>" + 
 
    "<q1:Attribute>erm_sourceid</q1:Attribute>" + 
 
    "</q1:Attributes>" + 
 
    // Set the value of the attribute using the customerid 
 
    // value of the case record. 
 
    "<q1:Values>" + 
 
    "<q1:Value xsi:type=\"xsd:string\">"+ 
 
    idUser+ 
 
    "</q1:Value>" + 
 
    "</q1:Values>" + 
 
    "</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 doc = xmlHttpRequest.responseXML; 
 
    var source = doc.selectSingleNode("//BusinessEntity"); 
 

 
    var guidSource = source.childNodes[0]; 
 

 
    if (guidSource.text != null) 
 
    { 
 
     // Define the SOAP XML to access Microsoft Dynamics CRM Web service. 
 
     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\">" + 
 
     authenticationHeader+ 
 
     "<soap:Body>" + 
 
     // Specify the RetrieveMultiple message. 
 
     "<RetrieveMultiple xmlns="+ 
 
     "\"http://schemas.microsoft.com/crm/2007/WebServices\">" + 
 
     // Specify that this is a QueryByAttribute query. 
 
     "<query xmlns:q1="+ 
 
     "\"http://schemas.microsoft.com/crm/2006/Query\" "+ 
 
     "xsi:type=\"q1:QueryByAttribute\">" + 
 
     // Query the customeraddress entity. 
 
     "<q1:EntityName>erm_companyrole</q1:EntityName>" + 
 
     // Set the columns you want to return. 
 
     "<q1:ColumnSet xsi:type=\"q1:ColumnSet\">" + 
 
     "<q1:Attributes>" + 
 
     "<q1:Attribute>erm_name</q1:Attribute>" + 
 
     "</q1:Attributes>" + 
 
     "</q1:ColumnSet>" + 
 
     // Specify the attribute that you are querying on. 
 
     "<q1:Attributes>" + 
 
     "<q1:Attribute>erm_companyroleid</q1:Attribute>" + 
 
     "</q1:Attributes>" + 
 
     // Set the value of the attribute using the customerid 
 
     // value of the case record. 
 
     "<q1:Values>" + 
 
     "<q1:Value xsi:type=\"xsd:string\">"+ 
 
     guidSource.text+ 
 
     "</q1:Value>" + 
 
     "</q1:Values>" + 
 
     "</query>" + 
 
     "</RetrieveMultiple>" + 
 
     "</soap:Body>" + 
 
     "</soap:Envelope>"; 
 
      
 
     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); 
 
     doc = xmlHttpRequest.responseXML; 
 
     var role = doc.selectSingleNode("//BusinessEntity"); 
 
     var roleName = role.childNodes[0]; 
 
     
 
     var lookupItem = new Array(); 
 
     lookupItem[0] = new Object(); 
 
     
 
     lookupItem[0].name = roleName.text; 
 
     lookupItem[0].entityType = "erm_companyrole"; 
 
     lookupItem[0].id = guidRSource.text; 
 
     
 
     Xrm.Page.getAttribute("erm_valutatorroleid").setValue(lookupItem); 
 
     
 
    } \t \t  
 
}

+0

CRM 2016以降の準備をしたい場合は、SOAPエンドポイント要求を破棄してODATAエンドポイントに切り替える必要があります。 – Filburt

+0

@Filburt私はODATAに切り替えるつもりですが、私はODATAで前に仕事をしていません。私は、fetchXMLを使用してCRM 2016のユーザー役割を管理するための標準フォーマットを望んでいました。それは私が考えることができるすべてです。 – zhaila

答えて

1

あなたのクエリは廃止されましたDynamics CRM 4.0のWebサービスのエンドポイントを使用しています。 SOAPメッセージから認証ヘッダーを削除し、エンドポイントアドレス"/mscrmservices/2007/CrmService.asmx""xrmservices/2011/organization.svc/web"で置き換えます。良い例はhereです。

ダイナミックCRM 2016でWeb APIを導入したことで、マイクロソフトはSOAPエンドポイントを全面的に却下しましたが、今後も継続してサポートすることを約束しました。

+0

私はそれを得ました。しかし、私はCRM 4.0からCRM 2015に更新したいと思っています。 xrmservices/2011/organization.svc/webはCRM 2011のためのものですが、ODATAに変換するのですが、 – zhaila

+0

xrmservices/2011/organization.svc'はCRM 2011で導入され、これまでCRMの唯一のSOAPエンドポイントでした。 –

+0

はい、私はfetchXMLでそれを変換する必要があります。 – zhaila

関連する問題