最新のコマンド実行の概要

コマンドは、モデル駆動型アプリのコア アプリケーションの動作を駆動します。 これらは、ユーザーがアプリをプレイするときに操作するボタンと、ボタンが選択されたときに実行されるアクションです。 各コマンドは、他のコマンドとの関係で配置され、アプリ内のコマンドバーの場所にバインドされます。

コマンド バー

コマンドのカスタマイズは、大別すると以下のようなカテゴリーに分類されます。 各カテゴリーには様々な機能が用意されており、最新のコマンド ドキュメントでより詳しく説明されています。

  • 表示。 ボタンの表示方法とアプリ内の位置。 たとえば、ボタンのラベル、アイコン、ユーザー補助ラベル、およびコマンドバーの位置とコマンドバー内の位置などです。
  • アクション。 ボタンが選択されたときに実行されるロジックです。 たとえば、データの作成と更新、またはアプリ内のさまざまなコントロールやページの操作などです。
  • 表示対象。 ボタンがユーザーに表示または非表示になるタイミングを指定する論理条件です。 たとえば、一部のユーザーにはボタンを表示し、他のユーザーには非表示にすることができます。 または、データ レコードの特定の基準が満たされた場合にのみ、ボタンが表示されるようにする必要があります。

コマンド バーの場所

  • メイン グリッド。 このコマンド バーは、アプリの左側のナビゲーションを使用する際に表示されるもので、このテーブルが含むレコードの全ページ一覧を表示します。

    メイン グリッドのコマンド バー

  • メイン フォーム。 このコマンド バーはテーブルのメイン フォームに表示されます。 これはフォームの上部に表示され、フォームのさまざまな領域に表示される関連ビューまたはサブグリッド ビューと同じではありません。

    メイン フォーム

  • サブグリッド ビュー。 このコマンド バーはサブグリッド内でこのテーブルのデータをレンダリングする他のテーブルのフォームに表示されます。 たとえば、アカウントのメイン フォームには、アカウント レコードに関連する連絡先レコードを一覧表示するサブグリッド コントロールがあります。 以下のコマンド バーを編集するには、連絡先テーブルのコマンド バーを編集してから、サブグリッド ビューを編集します。

    サブグリッド ビュー

  • 関連ビュー。 このコマンド バーは、このテーブルに関連データを表示すると、親テーブルの形式で表示されます。 たとえば、アカウント レコードのメイン フォームから、関連タブを選択し、連絡先などの関連テーブルを選択します。

    関連ビュー

  • クイック アクション。 クイック アクションは、メイン グリッドの場所に関連付けられています。 クイック アクションとメイン グリッドの場所の両方のコマンドを追加または編集するには、最新のアプリ デザイナー内から目的のテーブルを選択し、コマンド バーを編集してメイン グリッドの場所を選択します。 順序によって決定される最初の 5 つのコマンドも、アプリをプレイするときのクイック アクションとして表示されます。

    連絡先テーブルに構成されたクイック アクションの例

注意

あまり頻繁にカスタマイズされないコマンドバーの場所は、コマンド デザイナーではサポートされていません。 これらの場所に対するコマンドのカスタマイズの詳細については、グローバル コマンド バーとその他のリボンのセクションを参照してください。

コマンドの種類

  • コマンド。 標準ボタン。 選択するとアクションを実行します。 ドロップダウンおよび分割ボタン内でグループにネストすることもできます。 これらは、従来のコマンドではポップアップと呼ばれていたことに注意してください。
  • ドロップダウン。 グループ内でコマンドを整理できるメニューを作成します。
  • グループ。 ドロップダウンや分割ボタンにネストされたコマンド群にタイトルを追加します。
  • 分割ボタン。 ドロップダウンに似ていますが、プライマリ コマンドがあります。 分割ボタンを選択すると、プライマリ コマンドのアクションが実行されます。 展開のシェブロンが選択されている場合、プライマリ コマンドは実行されません。 代わりに、リストが展開され、追加のグループ、ポップアップ、コマンドが表示されます。

コマンドの種類

クラシック コマンドとモダン コマンドの主な違い

従来コマンド (以前はリボンと呼ばれていた) は、ロー コードを使用してカスタマイズできませんでした。 コードでは、コマンドのカスタマイズは難しく、面倒で、エラーが発生しやすくなります。 コマンドをロー コードにスケーリングするためだけでなく カスタム ページを使用して、キャンバスとモデル駆動型アプリを統合する ために、コマンド インフラストラクチャを再発明して再構築することが不可欠でした。

最新のコマンドは多くの新機能を提供し、使用が非常に簡単となっています。

機能 クラシック 最新
モデル駆動型アプリのランタイムでのサポート イエス はい、さらに Power Fx ランタイムをサポートします。
次を使用したカスタマイズ ソリューション ファイル内の XML を手動で編集するか、サードパーティのツールを使用します。 時間のかかるソリューションのエクスポートおよびインポート操作が必要です。 コマンド デザイナーだけでなく 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 Self.Selected
テーブル メタデータ プロパティ EntityPropertyRule DataSourceInfo()
フォームの状態に基づく表示/非表示。 たとえば、作成フォームに表示します FormStateRule Create。 Existing。 ReadOnly. Disabled。 BulkEdit Self.Selected.State = FormMode.New
グリッドで 1 つを超えるレコードが選択されたときに表示する SelectionCountRule CountRows(Self.Selected.Items) > 1
ポリモーフィック ルックアップで関連テーブルを表示/非表示にします。 たとえば、ルックアップがユーザーなのかチームなのかをチェックする場合 CustomRule PrimaryEntityTypeCode IsType(), AsType
Reference environment properties (Org) CustomRule OrgName. OrgLcid. UserLcid 現時点ではまだ使用できません

よく寄せられる質問

  • アプリよりもデザイナーに多くのコマンドが表示されるのはなぜですか?
    • それにはいくつかの理由があります。 アプリの実行時にコマンドを非表示にする可視性ロジックがある場合があります。 また、これらのコマンドは実行時にカスタム JavaScript を介して動的に挿入され、構成できない場合もあります。
  • デザイナーに重複するコマンドが表示されるのはなぜですか?
    • これは、従来のコマンドで使用される一般的なパターンでした。 両方のコマンドは、可視性ルールによって制御されているため、ランタイムには表示されません。 コマンド デザイナーは、可視性ルールに関係なく、すべてのコマンドを表示します。

参照

コマンド デザイナーを使用して、コマンド バーをカスタマイズ
ソリューションでコマンドを管理する
最新のコマンド実行の既知の制限事項