Ribbon Workbench:フィールド値でボタンを表示・非表示にする
Ribbon Workbench を使って、ボタンの表示・非表示の設定をすることができます。
ただ、単純に不要なボタンを非表示にするのであれば、セキュリティロールで権限を調整すればできます。 そこで、今回はフィールドの値により表示・非表示を変えるという設定を加えてみます。
advance preparation
カスタマイズを行う前に、事前準備をしましょう。
Ribbon Workbench のインポート
Ribbon Workbench は RIBBON WORKBENCHからダウンロードできます。
ダウンロード先のメールアドレスを登録したら、メールに届くリンクからダウンロードしてください。 ※詳細手順は割愛します。
引用元: RIBBON WORKBENCH
Dynamics 365 の ソリューション からダウンロードした Ribbon Workbench をインポートしましょう。
もしインポートが完了したら、上部にこのように表示されます。
2つのオプションセットフィールドをつくる
はい、いいえ の値によりボタンの表示・非表示を変えるので、 カスタムフィールドを1つ作成しておきます。
営業案件のフォームにフィールドを配置しておきます。
ボタンカスタマイズ用のソリューションをつくる
ボタンをカスタマイズしたいエンティティの必要最低限の情報を含んだソリューションを作成します。
Ribbon Workbench はかなり重いソリューションです。
ボタンカスタマイズするソリューションに、エンティティを含みすぎると
公開するときにサービス全体が低下するため、本番環境に実施する場合は注意が必要です。
今回は、営業案件のフォームを1つだけ含んだソリューションを作成しました。
- 既存のエンティティから 営業案件 を選び、
- すべての資産を追加 からチェックを外した状態で
- 営業案件 のフォームだけ選択して 完了 としました。
- 必須コンポーネントは含みません。
作成したソリューションは以下の通り
Lソリューションをロードする
それでは、Ribbon Workbench で先ほど作成したソリューションをロードします。
先ほどの上部のボタンをクリックします。
そして、先ほどのソリューションを選択して OK します。
ロードされたら、以下の画面になります。
Home (ホーム画面のボタン)Subgrid(サブグリッド画面のボタン)、Form (フォーム画面のボタン)とエリアが分かれ Entity でどのエンティティのボタンをカスタマイズするか設定できます。
※ 補足:単純にボタンを非表示にする場合は、 ボタン上で右クリックをして Hide をクリックすればいいです。
今回は 受注としてクローズ ボタンをカスタマイズします。
内部名は、F12 で開発者モードにして、確認すればわかります。 MarkAsWon ですね。
Form エリアの MarkAsWon ボタン上で、 右クリックから Customize Command をクリックします。
COMMANDS 以下の MarkAsWon をクリックして
右パネルの Display Rules で Add Display Rule をクリックします。
Id で適当な名前をいれます。
Add Step で Value Rule をクリックします。
作成したフィールド名を入れ、Value に true を入力する。 ※ True や TRUE とすると正しく動作しないので、小文字で正しく入力
あとは Publsih ボタンで公開します。
動作確認 ①
それでは、動作確認をしてみます。
営業案件を1つ開き、フォームを確認すると 受注としてクローズ が表示されていません。
ここで、フィールドを はい (true) に変更して保存しました。
すると、 受注としてクローズ が表示されました。うまく動作していますね。
もう一歩踏み込む
2つのオプションセットフィールドだとシンプルなので、
**予測カテゴリ (msdyn_forecastcategory)**で、”確定済み” となったら、
受注としてクローズ を表示するというカスタマイズも実施してみます。
確定済みは、100000003 が値ですね。
それを先ほどの Ribbon Workbench の Display Rules に Step を追加します。
あとは Publish します。
動作確認 ②
それでは動作確認をします。
先ほどのカスタムフィールドは はい ですが、 受注としてクローズ が表示されていません。
予測カテゴリ を “確定済み” に変更しました。
受注としてクローズ が表示されました。うまく動作していますね。
以上、Ribbon Workbench のちょっと深堀りした使い方でした。
COMMANDS で JS を呼んで処理を実行したり、
Smart Button をインポートすると、プロセスをボタンクリックで実行できるので、
ぜひ他の使い方もチャレンジしてみてください。