私は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
}
CRM 2016以降の準備をしたい場合は、SOAPエンドポイント要求を破棄してODATAエンドポイントに切り替える必要があります。 – Filburt
@Filburt私はODATAに切り替えるつもりですが、私はODATAで前に仕事をしていません。私は、fetchXMLを使用してCRM 2016のユーザー役割を管理するための標準フォーマットを望んでいました。それは私が考えることができるすべてです。 – zhaila