エンティティ フォーム コントロールを使用して、Common Data Service エンティティに豊富なフォームを追加し、アプリをさらに短い期間で作成できます。

エンティティ フォーム コントロールの概要については、「New Entity form control (experimental feature) for Common Data Service」 (Common Data Service の新しいエンティティ フォーム コントロール (試験的機能)) のブログ投稿をご覧ください。

重要: このブログ投稿で記載されているとおり、エンティティ フォーム コントロールの試験的な性質に注意してください。また、少なくとも現時点では、エンティティ フォーム コントロールの実稼働アプリでの使用については慎重に検討してください。

主要なプロパティ

エンティティ フォーム コントロールの主要なプロパティは次のとおりです。

DataSource – 表示するレコードを含むデータ ソースを指定します。
: 現在、Common Data Service 内のエンティティのみがエンティティ フォーム コントロールのデータ ソースとしてサポートされています。

Patternエンティティ フォーム コントロールで表示するフォームのスタイルを指定します。 FormPattern 列挙型を使用して、このプロパティを設定します。

  • FormPattern.List – レコードの表形式のリストを表示します。
  • FormPattern.CardList – レコードのカード リストを表示します。
  • FormPattern.Details – 単一レコードの詳細を表示または編集するためのフォームを表示します。
  • FormPattern.None – スタイルが明示的に指定されていません。 既定値はタブレット アプリは List、携帯電話アプリは CardList です。

Itemエンティティ フォーム コントロールが表示する必要のあるデータ ソース内のレコードを指定します。 このプロパティは、PatternFormPattern.Details に設定されている場合にのみ使用されます。

Selected– 現在選択されているレコードを取得します。
例: エンティティ フォームコントロールが販売注文レコードの一覧を表示する場合、Selected プロパティは現在選択されているレコードを指定します。 レコード内のフィールドにアクセスすることもできます。 (たとえば、選択したレコードの Account フィールドを Selected.Account として指定します。)

SelectableFields – どのフィールドがリンクとして表示される必要があるかを指定します。 次の構文を使用して、このプロパティの値を設定します。
{Field1Name : true, Field2Name : true}
例: フォームで SalesOrderId および Account フィールドをリンクとして表示するには、そのフォームの SelectableFields プロパティを次の値に設定します。
{SalesOrderId : true, Account : true}

SelectedField – どのフィールドがクリックまたはタップされたかを特定します。 これは、SelectableFields として指定されたフィールドにのみ適用されます。
例: SelectableFields プロパティを {SalesOrderId : true, Account : true} に設定し、ユーザーが Account フィールドをクリックまたはタップすると、SelectedField.Account が true に設定されます。

OnFieldSelect – ユーザーがフィールドをクリックまたはタップしたときのアプリの応答方法。 これは、SelectableFields として指定されたフィールドにのみ適用されます。

Mode – フォームのモードを決定します。 モードを変更するには、ViewFormEditForm、または NewForm 関数を使用します。 これらの関数は、Pattern プロパティが FormPattern.Details に設定されている場合にのみ機能します。 Mode プロパティの値を FormMode 列挙型の値に設定します。

  • FormMode.View – レコードを表示できますが、編集や追加はできません。
  • FormMode.Edit – レコードを編集できます。
  • FormMode.New – レコードを追加できます。

OnSuccess – データ操作が成功したときのアプリの応答方法。

OnFailure – データ操作が失敗したときのアプリの応答方法。

Unsaved – ユーザーが編集中のレコードに未保存の変更があるかどうかを特定します。

関連する関数

エンティティ フォーム コントロールまたは編集フォーム コントロールのいずれかで、次の共有関数を使用できます。 これらの関数は、Pattern プロパティが FormPattern.Details に設定されている場合にのみ編集フォーム コントロールで機能します。

ViewFormエンティティ フォーム コントロールの Mode プロパティを FormMode.View に設定します。

EditFormエンティティ フォーム コントロールの Mode プロパティを FormMode.Edit に設定します。

NewForm - エンティティ フォーム コントロールの Mode プロパティを FormMode.New に設定します。

SubmitForm - ユーザーがエンティティ フォーム コントロールのレコードを編集するときに、変更を保存します。

ResetForm - ユーザーがエンティティ フォーム コントロールでレコードを編集するときに、未保存の変更を破棄します。

さまざまなプロパティや関数の概要を説明しました。これ以降では、これらの操作について説明します。

: Common Data Service データベースへのアクセス権がない場合は、以下の手順を行う前にアクセス権を取得してください。

レコードの一覧を表示する

次の 5 つの手順では、単一の、エンド ツー エンドのエンティティ フォーム コントロール使用方法の例を提供します。 この手順では、販売注文の一覧を表示するフォームを追加します。

  1. 空白のタブレット アプリを作成します。

  2. 最初の画面 SalesOrderListScreen の名前を変更します。

  3. [挿入] タブの [フォーム] をクリックまたはタップし、[エンティティ フォーム (試験段階)] をクリックまたはタップします。

    エンティティ フォーム コントロールが画面に追加されます。

  4. エンティティ フォーム コントロール SalesOrderListForm の名前を変更し、画面全体をカバーするサイズに変更します。

  5. 右側のウィンドウで、テキスト [データ ソースが選択されていません ] の横にあるデータベース アイコンをクリックまたはタップしてから、[データ ソースの追加] をクリックまたはタップします。

  6. 接続の一覧で、データベースの接続をクリックまたはタップします。

  7. エンティティの一覧で、[販売注文] をクリックまたはタップしてから、[接続] をクリックまたはタップします。

    販売注文エンティティのデータ ソースが作成され、SalesOrderListFormDataSource プロパティがそのデータ ソースに設定されます。

    エンティティ フォームコントロールが販売注文の一覧を表示します。 エンティティ フォームコントロールを使用して、手動で構築することなく、リスト フォームをすばやく表示しました。

    エンティティ フォーム コントロールの Pattern プロパティを設定していないため、既定で List パターンになります。 さらに、販売注文エンティティの DefaultList フィールド グループが、リスト フォームの表示に使用されます。 また、フォームは動的であり、フィールド グループでの変更を自動的に反映します。

  8. (オプション) 販売注文エンティティの DefaultList フィールド グループを表示します。

    1. powerapps.com にサインインし、左側のナビゲーション ウィンドウの [Common Data Service] をクリックまたはタップし、[エンティティ] をクリックまたはタップします。
    2. エンティティの一覧で [販売注文] をクリックまたはタップし、[フィールド グループ] タブをクリックまたはタップしてから、[DefaultList] フィールド グループをクリックまたはタップします。

    販売注文の一覧のフィールドは、ここに表示されるフィールドに一致します。

    Common Data Service で、(標準エンティティではなく) カスタム エンティティのフィールド グループを変更して、エンティティ フォーム コントロールに表示される、対応するフォーム上のフィールドを変更することができます。 特に、フィールド グループへの変更は自動的に、エンティティ フォーム コントロールを使用するすべてのアプリに反映されます。

レコードの詳細を表示する

別のエンティティ フォーム コントロールを追加して、前に作成した一覧で選択されている販売注文の詳細を表示しましょう。

  1. SalesOrderListForm のサイズを、画面の半分をカバーするように変更し、2 つ目のエンティティ フォーム コントロールを追加して、画面のもう半分をカバーするようにします。

  2. 2 つ目のエンティティ フォーム コントロール SalesOrderDetailsForm の名前を変更し、前に作成した販売注文データ ソースに接続します。

  3. SalesOrderDetailsFormPattern プロパティを FormPattern.Details に設定します。

    SalesOrderDetailsForm は、販売注文エンティティの DefaultDetails フィールド グループを使用して、フォームを表示します。 SalesOrderListForm と同様、フォームを手動で作成することなく、すばやくレコードの詳細を表示することができます。

  4. SalesOrderDetailsFormItem プロパティを SalesOrderListForm.Selected に変更します。

    SalesOrderDetailsForm は、ユーザーが SalesOrderListForm でクリックまたはタップするレコードの詳細を表示します。

  5. F5 を押してアプリをプレビューしてから、左側の一覧にある販売注文をクリックまたはタップします。

    選択した注文の詳細は、右側に表示されます。

別の画面に移動するためのフィールドの構成

次は、アプリにさらに画面を追加してから、エンティティ フォーム コントロールのフィールドを構成して、アプリでフィールドをクリックまたはタップしたときに、別の画面に移動するようにしましょう。

  1. 2 つ目の画面をアプリに追加し、画面 SalesOrderDetailsScreen の名前を変更します。

  2. SalesOrderDetailsForm を切り取って SalesOrderDetailsScreen に貼り付け、上部のにあるアイコンのスペースを確保した状態で、画面の大部分がカバーされるようにフォームのサイズを変更します。

  3. SalesOrderDetailsScreen の左上隅近くに、左向き矢印アイコンを追加します。

  4. 左向き矢印アイコンの OnSelect プロパティを Back 関数に設定します。

  5. SalesOrderListScreen で、SalesOrderListForm のサイズを変更し、画面全体がカバーされるようにします。

  6. SalesOrderListForm をクリックまたはタップして選択します。

  7. 右側のウィンドウの [フィールド] の下で、SalesOrderId を設定して SalesOrderDetailsScreen に移動するようにします。

    エンティティ フォーム コントロールが SalesOrderId フィールド (一覧の最初の列) の値ををリンクとして表示します。

  8. F5 を押してアプリをプレビューしてから、販売注文の一覧にあるリンクをクリックまたはタップします。

    2 つ目の画面が開き、指定した販売注文の詳細が表示されます。

    別の販売注文の詳細を表示するには、左向き矢印をクリックまたはタップして一覧に戻り、詳細を表示する注文のリンクをクリックまたはタップします。

コンテキストの変数を使用した移動

SalesOrderDetailsFormItem プロパティは、ユーザーが SalesOrderListForm で選択したレコードの詳細が SalesOrderDetailsForm で表示されるように SalesOrderListForm.Selected に設定されています。 移動するフィールドを構成するためにフォームのカスタマイズ ウィンドウを使用するときに自動的に作成される NavigationContext コンテキストの変数を使用して、選択したレコードのコンテキストを取得することもできます。

  1. SalesOrderDetailsFormItem プロパティを SalesOrderListForm.Selected に変更します。

  2. F5 を押してアプリをプレビューしてから、販売注文の一覧にあるリンクをクリックまたはタップします。

    SalesOrderDetailsScreen が開き、指定した販売注文の詳細が表示されます。

フォームのカスタマイズ ウィンドウによってどのように移動とコンテキストが設定されるかを見てみましょう。

SalesOrderListFormSelectableFields プロパティは、SalesOrderId を選択可能なフィールドとして指定します。

これは、フォームのカスタマイズ ウィンドウを使用して SalesOrderId フィールドを SalesOrderDetailsScreen に移動するようにしたときに、自動的に設定されています。 そのため、SalesOrderId フィールド内の値がリンクとして表示されます。

SalesOrderListFormOnFieldSelect プロパティは If 関数に設定され、これによりユーザーが販売注文 IDフィールド: SalesOrderListForm.SelectedField.SalesOrderId = true をクリックするかタップするかが決定されます。

この関数が true として評価される場合、SalesOrderDetailsScreen は以前使用した NavigationContext というコンテキストの変数で開きます。

これもすべて、フォームのカスタマイズ ウィンドウを使用して SalesOrderId フィールドを SalesOrderDetailsScreen に移動するようにしたときに、自動的に設定されています。

そのため、販売注文 ID フィールドをクリックまたはタップすると、If 関数が true に評価され、Navigate 関数が対応するコンテキストで呼び出されて詳細画面が開きます。

: フォームのカスタマイズ ウィンドウを使用すると、NavigationContext が適切に決定されます。 ユーザーが SalesOrderId をクリックまたはタップすると、以前の数式と同様に NavigationContextSalesOrderListForm.Selected に設定されます。 代わりに、移動に Account フィールドが指定されている場合は、NavigationContextSalesOrderListForm.Selected.Account に設定されており、正しいコンテキストが渡されます。 ただし、そのコンテキストを使用するには、エンティティ フォーム コントロールが Common Data Service の Account エンティティに接続されている必要があります。

レコードの編集および保存

最後に、エンティティ フォーム コントロールでレコードを編集し、保存する方法について見てみましょう。

  1. SalesOrderDetailsScreen で、編集アイコンを追加してから、その OnSelect プロパティを次の数式に設定します。
    EditForm(SalesOrderDetailsForm)

  2. 編集アイコンの隣にチェックマーク アイコンを追加し、チェックマーク アイコンの OnSelect プロパティを次の数式に設定します。
    SubmitForm(SalesOrderDetailsForm)

  3. F5 キーを押してアプリをプレビューし、販売注文 ID リンクをクリックまたはタップして販売注文の詳細を表示してから、編集アイコンをクリックまたはタップします。

    レコードを編集できるように、エンティティ フォーム コントロールの ModeFormMode.Edit に設定されています。

  4. [注文状況][請求書] に更新します。

  5. [販売担当者][WRK014] に更新します。

    [販売担当者] の選択をサポートするため、エンティティ フォーム コントロールによって自動的に詳細な検索がレンダリングされます。 この検索を生成および表示するため、このコントロールでは Common Data Service のワーカーエンティティの DefaultLookup フィールド グループが使用されます。 [販売担当者] フィールドの種類が [ワーカー] であるため、ワーカー エンティティが使用されます。

  6. チェックマーク アイコンをクリックまたはタップして、変更を保存します。

アプリでエンティティ フォーム コントロールを使用する方法について説明したこの記事は、この手順で終了です。 ここでご紹介した情報がエンティティ フォーム コントロールの使用を始めるときにお役に立てば幸いです。 エンティティ フォーム コントロール、およびアプリに豊富なフォームを追加する方法に関してご提供した情報についてのご意見をお待ちしております。