Tech Dynamics 365 (CRM)

Microsoft Dynamics 365 (CRM) を中心とした技術情報を提供しています。

WebAPIで複数レコードを参照する (Xrm.WebApi.retrieveMultipleRecords)

こんにちは。

以前の記事で、WebAPIを使用してレコードを作成する方法をご紹介しましたが、今回はその続きで追加された連絡先の件数を取得する方法をご紹介します。

さっそくですが、以下のシナリオを想定して実装を行ってみましょう。
・「取引先担当者」エンティティの「携帯電話」フィールドに番号が入力された際に、連絡先の何件目に登録されたかをアラートで表示する


JavaScriptの作成

以下のWebリソースを事前に登録しておきます。
 ・名前:new_RetrieveMultipleRenrakusaki.js
 ・表示名:RetrieveMultipleRenrakusaki.js
 ・種類:スクリプト (JScript)
 ・言語:(設定なし)
 ※[テキスト エディター] ボタンを押下して、以下のJavaScriptを貼り付けて保存してください。

function RetrieveMultipleRenrakusaki(executionContext) {
    // 実行コンテキストの取得
    var formContext = executionContext.getFormContext();
    // 現在登録されている連絡先の件数を取得して何番目に登録されたかをアラート表示
    Xrm.WebApi.retrieveMultipleRecords("new_renrakusaki").then(
        function success(result) {
            var length = result.entities.length + 1;
            alert("連絡先の " + length + " 番目に登録されました。");
        },
        function (error) {
            alert("連絡先の取得に失敗しました。");
        }
    );
}

今回は使用していませんが、本APIを使用する際にはフィルター条件を指定することもできます。
filterの組み方は以下の通りです。
 構文:
  ?$filter={フィールド名} {演算子} '{値}'
 文例:
  Xrm.WebApi.retrieveMultipleRecords("new_renrakusaki", "?$filter=new_name eq '田中 太郎'")

補足(1):複数の条件を使用したい場合は、「&」でクエリを羅列します。
補足(2):使用できる演算子の一覧はこちらの記事で紹介しています。

複数レコードを参照するために『Xrm.WebApi.retrieveMultipleRecords』というAPIを使用します。
詳しい情報は以下のリファレンスを参考にしてください。
docs.microsoft.com


JavaScriptの登録

Webリソースとして登録したJavaScriptを、取引先担当者の携帯電話が変更された際に実行されるようにします。

(1) 取引先担当者エンティティのフォームエディターから、[フォームのプロパティ] をクリックします。

(2) フォーム ライブラリ内の [追加] ボタンをクリックして、先程登録したWebリソースを追加します。
f:id:westcoastline:20190903131132p:plain

(3) 携帯電話フィールドをダブルクリックして、フィールドのプロパティから[イベント] タブを開きます。
f:id:westcoastline:20190903131237p:plain

(4)イベント ハンドラー内の [追加] ボタンをクリックして、以下の様に設定を行います。
 ※「実行コンテキストを最初のパラメーターとして渡す」にチェックを入れてください。
f:id:westcoastline:20190903131253p:plain

(5)フォームエディターのリボンから [保存] をクリックして保存し、その後、[公開] をクリックして設定の反映を行います。

実装は以上で完了となります。


動作確認

それでは、実際に取引先担当者画面の携帯電話フィールドに番号を入れてみましょう。
入力後、「連絡先の ○ 番目に登録されました。」というアラートがポップアップ表示されたら成功です。
f:id:westcoastline:20190903144356p:plain