Dynamics 365のLook up Fieldでは、結果をフィルタリングすることが可能です。
今回は、「フィールド(Field)」で特定のエンティティを表示する方法について説明します。
例えば、デフォルトでは、取引先担当者エンティティへのLook up Fieldを表示するには、Dynamicsすべての有効な担当者を表示することになります。ただ、実際の業務では、必ずしもすべでの担当者Fieldを表示する必要がある訳ではありません。とある条件で、指定した取引先企業に関連する連絡先のみを表示することは可能です。
上記のシナリオを実現するためには、2つの方法があります。
1つはカスタマイズを行います。該当のフォームに接続し、Field Propertiesを開いて、Related Records Filteringのセッションで設定を行う。
もう1つはJavaScript開発を行います。簡単なロジックのため、工数はそこまでかからない一方、決められたフォームに対するカスタマイズことより自由度が高いことはメリットと言えます。
開発にしろカスタマイズにしろ、プロジェクト現場はそれぞれの状況や方針によりますので、一概には言えません。
ここでは開発の手法やサンプルコードを紹介します。
JavaScript開発の例:
カスタムフィールド [regarding type]を作成しました。このフィールドはオプションで設定されており、オプション設定値からの入力に基づいて、以下のコードでエンティティタイプを設定しました。
var formCustomizations = {
filterRegarding: function (execContext) {
var formContext = execContext.getFormContext();
if (formContext.getAttribute("new_regardingtype").getValue() != null) {
regardingtype = formContext.getAttribute("new_regardingtype").getValue();
if (regardingtype === 1) {
formContext.getControl("regardingobjectid").setEntityTypes(["account"]);
}
else if (regardingtype === 2) {
formContext.getControl("regardingobjectid").setEntityTypes(["contact"]);
}
else {
formContext.getControl("regardingobjectid").setEntityTypes(["contact", "account"]);
}
}
}
}
regardingtypeはカスタマイズ可能であり、汎用性は高い。
実際にdynamics 365で表示したら、Account(取引先企業)とContact(取引先担当者)という特定のエンティティでフィルタリングすることが出来ました。
コメント