2016-10-19 11 views
0

リボンボタンからプラグインを実行するためのソリューションを見てきました。たとえば、次のとおりです。https://www.greenbeacon.com/insights/trigger-plugin-from-ribbon-button-using-custom-actions-in-dynamics-crm-2013/しかし、私がしたいのは、特に1つのエンティティに関係しないプラグインの実行を可能にすることです。このソリューションのJavaScriptには、次の情報が含まれています。複数のエンティティのCRMからのトリガープラグイン

requestXML += "   <b:value i:type="a:EntityReference">"; 
requestXML += "    <a:Id>" + Xrm.Page.data.entity.getId() + "</a:Id>"; 

ただし、私は1つのIDに限定したくありません。誰かがアカウントビューに入り、すべてのアカウント(C#コード内でフィルタリングされた)でプラグインを使用してバッチ処理を実行するボタンをクリックします。これを行う方法はありますか?

答えて

1

アクションを作成するときは、「エンティティ」に「なし」を指定します。これにより、アクションがグローバルになります。グローバルアクションは、エンティティ参照を渡す必要はありません。だから、JSは次のようになります。

function ExecuteAction(requestName, refreshPage, stringParameter) { 
    // Creating the request XML for calling the Action 
    var requestXML = "" 

    requestXML += '<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">'; 
    requestXML += ' <s:Body>'; 
    requestXML += ' <Execute xmlns="http://schemas.microsoft.com/xrm/2011/Contracts/Services" xmlns:i="http://www.w3.org/2001/XMLSchema-instance">'; 
    requestXML += '  <request xmlns:a="http://schemas.microsoft.com/xrm/2011/Contracts">'; 
    requestXML += '  <a:Parameters xmlns:b="http://schemas.datacontract.org/2004/07/System.Collections.Generic">'; 
    requestXML += '   <a:KeyValuePairOfstringanyType>'; 
    requestXML += '   <b:key>Data</b:key>'; 
    requestXML += '   <b:value i:type="c:string" xmlns:c="http://www.w3.org/2001/XMLSchema">' + stringParameter + '</b:value>'; 
    requestXML += '   </a:KeyValuePairOfstringanyType>'; 
    requestXML += '  </a:Parameters>'; 
    requestXML += '  <a:RequestId i:nil="true " />'; 
    requestXML += '  <a:RequestName>' + requestName + '</a:RequestName>'; 
    requestXML += '  </request>'; 
    requestXML += ' </Execute>'; 
    requestXML += ' </s:Body>'; 
    requestXML += '</s:Envelope>'; 

    var req = new XMLHttpRequest(); 
    req.open("POST", GetServiceUrl(), false) 
    req.setRequestHeader("Accept", "application/xml, text/xml, */*"); 
    req.setRequestHeader("Content-Type", "text/xml; charset=utf-8"); 
    req.setRequestHeader("SOAPAction", "http://schemas.microsoft.com/xrm/2011/Contracts/Services/IOrganizationService/Execute"); 
    req.send(requestXML); 
    //refresh the page if the request was successful. 
    if (req.status == 200) { 
     if (refreshPage) { 
      RefreshForm() 
     } 
    } else { 
     Xrm.Utility.alertDialog(req.statusText + "n" + req.responseXML.getElementsByTagName("faultstring")[0].textContent); 
    } 
} 

は(あなたがそう、私は引用符のすべてを反転し、コードを再フォーマットする必要がありましたブログ記事からコードをコピーしたときに私が何かを見逃している可能性があります

+0

ありがとうございます!私は何らかの理由でコメントを追加する前に、さらに8つのことを述べています。 – gareth99

0

このようなプラグインのステップを登録するときは、EntityではなくMessageを選択し、Javascriptから呼び出すときに入力パラメータをプラグインに渡す必要はありません。

関連する問題