コマンドは、モデル駆動型アプリのコア アプリケーションの動作を駆動します。 これらは、ユーザーがアプリをプレイするときに操作するボタンと、ボタンが選択されたときに実行されるアクションです。 各コマンドは、他のコマンドとの関係で配置され、アプリ内のコマンドバーの場所にバインドされます。
大まかに言えば、コマンドのカスタマイズは 3 つのカテゴリに適合します。 各カテゴリにはさまざまな機能が存在し、最新のコマンドドキュメント全体で詳しく説明されています。
- 表示。 ボタンの表示方法とアプリ内の位置。 たとえば、ボタンのラベル、アイコン、ユーザー補助ラベル、およびコマンドバーの位置とコマンドバー内の位置などです。
- アクション。 ユーザーがボタンを選択したときに実行されるロジック。 たとえば、データの作成と更新、またはアプリ内のさまざまなコントロールやページの操作などです。
- 可視性。 ボタンがユーザーに表示または非表示になるタイミングを指定する論理条件です。 たとえば、一部のユーザーにはボタンを表示し、他のユーザーには非表示にすることができます。 または、データ レコードの特定の基準が満たされた場合にのみ、ボタンが表示されるようにする必要があります。
コマンド バーの場所
-
メイン グリッド。 このコマンド バーは、アプリの左側のナビゲーションを使用する際に表示されるもので、このテーブルが含むレコードの全ページ一覧を表示します。
-
メインフォーム。 このコマンド バーはテーブルのメイン フォームに表示されます。 これはフォームの上部に表示され、フォームのさまざまな領域に表示される関連ビューまたはサブグリッド ビューと同じではありません。
-
サブグリッド ビュー。 このコマンド バーはサブグリッド内でこのテーブルのデータをレンダリングする他のテーブルのフォームに表示されます。 たとえば、アカウントのメイン フォームには、アカウント レコードに関連する連絡先レコードを一覧表示するサブグリッド コントロールがあります。 このコマンド バーを編集するには、連絡先テーブルのコマンド バーを編集してから、サブグリッド ビューを編集します。
-
関連ビュー。 このコマンド バーは、このテーブルに関連データを表示すると、親テーブルの形式で表示されます。 たとえば、アカウント レコードのメイン フォームから、関連タブを選択し、連絡先などの関連テーブルを選択します。
-
クイック アクション。 クイック アクションは、メイン グリッドの場所に関連付けられています。 クイック アクションとメイン グリッドの場所の両方のコマンドを追加または編集するには、モダン アプリ デザイナー内から目的のテーブルを選択し、コマンド バーを編集して、メイン グリッドの場所を選択します。 順序によって決まる最初の 5 つのコマンドは、アプリを再生するときのクイック アクションとしても表示されます。
ヒント
あまり頻繁にカスタマイズされないコマンドバーの場所は、コマンド デザイナーではサポートされていません。 これらの場所に対するコマンドのカスタマイズの詳細については、グローバル コマンド バーとその他のリボンのセクションを参照してください。
コマンドの種類
- コマンド。 標準ボタン。 選択するとアクションを実行します。 ドロップダウンおよび分割ボタン内でグループにネストすることもできます。 これらは、クラシック コマンドでフライアウトと呼ばれていた。
- ドロップダウン。 グループ内でコマンドを整理できるメニューを作成します。
- グループ。 ドロップダウンや分割ボタンにネストされたコマンド群にタイトルを追加します。
- 分割ボタン。 ドロップダウンに似ていますが、プライマリ コマンドがあります。 分割ボタンを選択すると、プライマリ コマンドのアクションが実行されます。 展開のシェブロンが選択されている場合、プライマリ コマンドは実行されません。 代わりに、リストが展開され、追加のグループ、ポップアップ、コマンドが表示されます。
クラシック コマンドとモダン コマンドの主な違い
従来コマンド (以前はリボンと呼ばれていた) は、ロー コードを使用してカスタマイズできませんでした。 コードでは、コマンドのカスタマイズは難しく、面倒で、エラーが発生しやすくなります。 コマンドをロー コードにスケーリングするためだけでなく カスタム ページを使用して、キャンバスとモデル駆動型アプリを統合する ために、コマンド インフラストラクチャを再発明して再構築することが不可欠でした。
最新のコマンドは多くの新機能を提供し、使用が非常に簡単となっています。
| 機能 | クラシック | 現代的 |
|---|---|---|
| モデル駆動型アプリのランタイムでのサポート | イエス | はい、さらに Power Fx ランタイムをサポートします。 |
| 次を使用してカスタマイズされる | ソリューション ファイル内の XML を手動で編集するか、Microsoft 以外のツールを使用します。 時間のかかるソリューションのエクスポートおよびインポート操作が必要です。 | コマンド デザイナーのサポートに加え、Dataverse API のサポートもあります。 |
| Power Fx をサポートする。 | いいえ | はい アクションと見える化。 |
| カスタマイズに必要な時間 | 遅く、エラーが発生しやすい。 | 高速 |
| 信頼性とパフォーマンス | 間違いやすい。 不適切なカスタマイズとスコープの不足は、多くの場合、アプリのパフォーマンスに影響します。 | インライン エラー処理はミスを防ぎます。 Power Fx は、ランタイム パフォーマンスを向上させるために最適化されています。 |
| 共有 | 標準的な Dataverse の役割ベースのセキュリティ。 | Power Fx 以外のコマンドでは、標準的な Dataverse ロールベースのセキュリティが使用されます。 Power Fx コマンドでは、現在、適切なセキュリティ ロールに加えて、コマンド コンポーネント ライブラリを共有する必要があります。 |
| ソリューションおよびアプリケーション ライフサイクル管理 (ALM) の動作 | 一貫性がなく問題のあるソリューションの階層化、ソリューションインターフェイスに存在しない。 パッチ、セグメンテーション、ソリューションアップグレード、管理プロパティなど、サポートされていない多くの標準ソリューションの動作。 | Dataverse 内の複数のソリューション オブジェクト タイプを一元的に管理する標準的なソリューション レイヤリング。 ソリューション インターフェイスに存在します。 サポートされているすべての標準ソリューションの動作。 |
| ローカライズ | 非標準 | ソリューション全体のエクスポートとインポートの翻訳を使用して標準化されています。 |
| データ モデル | 複雑。 クラシック リボン用に最適化されており、不要になった多くのプロパティが含まれています。 | シンプルで、最新のモデル駆動型アプリのコマンドバー用に最適化されています。 |
| JavaScript の使用 | イエス | はい シンプルになりました。 同じ JavaScript をクラシック コマンドとモダン コマンドに使用できます。 |
| 既成のコマンドをカスタマイズする | イエス | 最新のフレームワークに移行すると、コマンドはコマンド デザイナーで編集可能になります。 |
| アプリ固有のコマンド | いいえ | はい 最新のコマンドデザイナを使用すると、コマンドは選択したアプリ内でのみ表示されます。 |
| テーブルを含むすべてのアプリに表示されるテーブル固有のコマンド | イエス | はい ソリューションファイル内の appaction 定義を変更する必要があります。 |
| 指定されたコマンド バーの場所のすべてのテーブルとアプリに表示されるグローバル コマンド | イエス | はい ソリューションファイル内の appaction 定義を変更する必要があります。 |
| 分割ボタン、フライアウト、グループを作成します | イエス | イエス |
| フライアウトメニューにコードを動的に追加します | イエス | いいえ。 宣言によってコマンドを作成します。 |
| グローバル アプリケーション ヘッダー コマンドをカスタマイズする | イエス | いいえ |
| 他の、一般的でない、または古いコマンド バーの場所用にコマンドをカスタマイズする | イエス | いいえ。 |
| 最新のフロー、またはワークフローを実行する | JavaScript の使用 | JavaScript の使用。 カスタム ページの使用もサポートされています。 |
クラシックとモダンの可視性ルールの比較
従来の可視性ルールには、多くの場合、シナリオごとに特定のルールがありました。 Power Fx を使用すると、宣言型関数が多くの従来のルールに置き換わります。 そして、よりシンプルに使えるようになりました。
従来の可視性ルールは、最新のコマンド内でもサポートされています。 ただし、クラシック コマンドを最新のコマンドに確実に移行するには、クラシック ルールのサポートが必要であり、コマンド デザイナー内でのクラシック ルールのカスタマイズはサポートされていません。 今後は Power Fx を使用することをお勧めします。
| 使用例 | クラシック ルール | クラシック オプション | Power Fx の可視プロパティ |
|---|---|---|---|
| データ値に基づいて表示または非表示を切り替える | CustomRule | JavaScript の使用 | !IsBlank(Self.Selected.Item.Email) |
| テーブル権限に基づいて表示/非表示を切り替える | EntityPrivilegeRule | 複数の | DataSourceInfo() |
| レコード権限に基づいて表示/非表示を切り替える | RecordPrivilegeRule | 複数の | RecordInfo() |
| プライマリ テーブルと関連テーブルのコントロール コンテキストを参照する | EntityRule | PrimaryEntity。 SelectedEntity | Self.Selected |
| コントロールのコンテキストを参照する | EntityRule | Form。 HomePageGrid。 SubGridStandard。 SubGridAssociated | セルフ.セレクテッド |
| テーブル メタデータ プロパティ | Entityプロパティルール | DataSourceInfo() | |
| フォームの状態に基づいて表示/非表示を切り替える。 たとえば、作成フォーム用に表示してください | FormStateRule | 作成して。 既存 ReadOnly. 無効。 一括編集 | Self.Selected.State = FormMode.New // 新しいフォームモードを示しています。 |
| グリッドで> 1 つのレコードが選択されたときに表示する | 選択数ルール | CountRows(Self.Selected.Items) > 1 | |
| 関連テーブルを多態性のルックアップで表示または非表示にする。 たとえば、参照先がユーザーかチームかを確認します。 | カスタムルール | 主エンティティタイプコード | IsType()、AsType |
| 参照環境のプロパティ (Org) | カスタムルール | OrgName. OrgLcid. UserLcid | 現時点ではまだ使用できません |
よく寄せられる質問
-
アプリよりもデザイナーに多くのコマンドが表示されるのはなぜですか?
- それにはいくつかの理由があります。 アプリの実行時にコマンドを非表示にする可視性ロジックがある場合があります。 また、これらのコマンドは実行時にカスタム JavaScript を介して動的に挿入され、構成できない場合もあります。
-
デザイナーに重複するコマンドが表示されるのはなぜですか?
- これは、従来のコマンドで使用される一般的なパターンでした。 両方のコマンドは、可視性ルールによって制御されているため、ランタイムには表示されません。 コマンド デザイナーは、可視性ルールに関係なく、すべてのコマンドを表示します。
参照
コマンド デザイナーを使用して、コマンド バーをカスタマイズ
ソリューションでコマンドを管理する
最新のコマンド実行の既知の制限事項