smemo

技術メモです。

【Dynamics】Functionを利用したWebAPIクエリの実行

WebAPIを使用してエンティティレコードの検索ができます。その検索にFunctionを使うことでより高度な検索条件を指定することが可能になります。
今回は例として、階層構造となっているエンティティの階層データの取得をしてみます。
※特定の取引先企業を指定してその配下の取引先企業を取得するようなクエリを実行してみます。

今のところ使えるクエリは以下のURLに記載されているものだそうです。
Web API Query Function Reference

その中から今回はUderOrEqual関数を使用します。
UnderOrEqual Function

WebAPIのイメージ

// 
https://orgname.crm7.dynamics.com/api/data/v8.2/accounts?$filter=Microsoft.Dynamics.CRM.UnderOrEqual(PropertyName='accountid',PropertyValue='7ccb8ce3-d1d4-e611-80fd-c4346bad16b0')

※この関数を使用するにあたって、第一引数はparentaccountid(親取引先企業)ではなくaccountid(取引先企業のGUID)を指定する必要があったところが少し混乱しました。

簡単な実装イメージ

取引先企業エンティティに階層構造となるデータを作成

f:id:smemo:20170108162046p:plain

取引先企業の最上位レコード(親企業の設定されていない企業)を表示
f:id:smemo:20170108162440p:plain

取引先企業を選択(クリック)するとその配下の取引先企業をWebAPIで取得して表示。子の企業が表示されているのがわかると思います。
f:id:smemo:20170108163048p:plain

他にもいろいろな検索条件が使用できるので複雑なクエリを実行する場合には使えるかと思います。