Dynamics CRM 2013/Fall '13 コマンドバーのカスタマイズ その 4

みなさん、こんにちは。

前回に引き続き、コマンドバーのカスタマイズを紹介します。今回
より複雑な表示の制御と複数言語対応を紹介しますが、手順は前回
までの記事からの続きとなります。

Dynamics CRM 2013/Fall '13 コマンドバーのカスタマイズ その 1
Dynamics CRM 2013/Fall '13 コマンドバーのカスタマイズ その 2
Dynamics CRM 2013/Fall '13 コマンドバーのカスタマイズ その 3

シナリオ

前回追加したカスタムボタンは常に表示されているが、以下の条件
を満たした場合にのみ表示したい。

- グリッドでレコードを 1 件選択している
- エンティティでビジネスプロセスフローが有効になっている

またボタン名や概要が日本語のみであるが、今後のために複数言語
対応としたい。

image

複数言語対応

まず複数言語に対応させます。

1. Customizations.xml を Visual Studio で開き、 XML スキーマを
適用します。

2. RibbonDiffXml 配下の LocLabels を以下の様に変更します。

image

Id: 一意となる値です。参照される ID であるためこの ID 自体は
意味を持ちませんが、どのようなラベルを含むかわかりやすい
名前を付けると管理が容易です。
Title ノード
languagecode : 表示する言語コードです。1041 日本語 1033 英語
description : 表示する文字列です。

3. カスタムボタンの定義を以下の様に変更します。

image

ラベル類の要素には $LocLabels: に続いて LocLabel の ID を指定
することで多言語対応となります。

4. 変更を保存して、ソリューションのインポートを行います。

5. 言語を英語に切り替えた場合、以下の様に表示されます。

image

高度な表示のコントロール

前回は EnableRule、DisplayRule ともに CrmClientTypeRule を利用
しましたが、今回の要件を満たすために以下のルールを使用します。

EnableRule の SelectionCountRule
選択されているレコード数によって true/false を返す

DisplayRule の EntityPropertyRule
エンティティの設定によって true/false を返す

1. RuleDefinitions | EnableRules に以下内容を追加します。

image

Minimum :  選択すべき最小件数
Maximum  : 選択すべき最大件数
AppliesTo : 適用先。SelectedEntity はグリッドの場合
上記の場合、1 件のレコードが選択されている場合にのみ条件を
満たします。

2. RuleDefinitions | DisplayRules に以下内容を追加します。
image

EntityName : 対象となるエンティティ名
PropertyName : 確認する設定名
PropertyValue : 確認する設定の値

上記の場合、取引先企業エンティティでビジネスプロセスフロー
が有効なら true を返します。

3. 前回追加した CommnadDefinition を以下のように変更します。

image

4. 変更を保存します。

5. ダウンロードした zip ファイル内の Customizations.xml を、保存
したファイルで上書きします。

6. ブラウザに戻り、設定のカスタマイズ | ソリューションより、
変更したソリューションのインポートを実行します。

7. ソリューションのインポート完了後、すべてのカスタマイズを
公開し、ブラウザをリフレッシュします。

8. 取引先企業を表示し、レコードを選択していない状態の場合、
カスタムボタンが表示されないことを確認します。

9. 1 件レコードを選択することでボタンが表示されることと、2 件
以上選択すると再び表示されないことを確認します。

image

10. 1 件のみレコードを選択してもカスタムボタンが表示されない
場合、取引先企業でビジネスプロセスフローが有効になっているか
確認してください。

- 中村 憲一郎