Common Data Service および強化されたデータ ソース エクスペリエンス

概要

2019 年 11 月より前に Common Data Service コネクタを使用してキャンバス アプリを作成した場合、Common Data Service の最新バージョンの利点がない可能性があります。

強化されたデータ ソース エクスペリエンスおよび Common Data Service ビューのオプションには次の利点があります。

  1. 大幅な速度向上。
  2. 信頼性の向上。
  3. Common Data Service ビューおよびファイルと画像フィールドの属性にアクセスします。

強化されたデータ ソース エクスペリエンスと Common Data Service ビューのオプションが詳細設定セクションに表示されます。

強化されたデータ ソース エクスペリエンスおよび Common Data Service ビュー

リレーショナル データ、オプション セット、および Common Data Service の他の新機能は、非推奨機能セクションに表示されます。

アップグレードするには?

機能の設定を調べ、以下の指示に従ってアプリをアップグレードします。

強化されたデータ ソース エクスペリエンスおよび Common Data Service ビューがオンになっています。

この機能を使用するようにキャンバス アプリを既に変換しているか、この機能の既定の設定をオンにしてアプリを起動しました。 これ以降のアクションは不要です。

また、明示的な列の選択機能を有効にすることもできます。

明示的な列の選択

注意

強化されたデータ ソース エクスペリエンスおよび Common Data Service ビューは、Windows 用 Power Apps ではサポートされていません。 Windows 用 Power Apps を使用する際には、この機能をオフにする必要があります。

リレーショナル データ、オプション セット、Common Data Service のその他の新機能はオフになっています。

非推奨機能セクションの下にある詳細設定を確認してください。 オフに設定されている場合、変換の最初のステップとして次の手順に進みます。

重要

詳細設定にあるリレーショナル データ、オプション セット、Common Data Service のその他の新機能が表示されない場合、または既にオンになっている場合は、以下の手順をスキップして次のセクションに進みます。

  • ステップ 1: 表示名の使用機能をオンにします。

    1. 表示名の使用機能をオンにします。
    2. ヘルス モニターがアプリの分析を完了するまで待ちます。
    3. アプリを保存し、閉じて、再度開きます。
    4. すべての数式エラーを解決します。
    5. アプリを保存し、閉じて、再度開きます。

    考えられるエラーと提案:

    新しく表示された表示名の一部が、他のエンティティ、フィールド、またはコントロールの表示名と競合する可能性があります。 たとえば、同じ名前のコントロールとフィールドがあるとします。 修正する一意の値でコントロールの名前を変更できます。

    フィールドとエンティティの表示名の競合については、エンティティを想定しながらもローカル スコープのフィールド名に解決される式が表示される場合があります。

    角かっこと @ 記号を使用してグローバル スコープを示し、エンティティに解決するようにします。たとえば、[@entityName] などです。

  • Step 2: リレーショナル データ、オプション セット、Common Data Service のその他の新機能および文字列の代わりに GUID データ型を使用するの機能をオンにします。

    1. リレーショナル データ、オプション セット、Common Data Service のその他の新機能オンにします。
    2. 文字列の代わりに GUID データ型を使用する機能をオンにします。
    3. ヘルス モニターがアプリの分析を完了するまで待ちます。
    4. すべての数式エラーを解決します。
    5. アプリを保存し、閉じて、再度開きます。

    考えられるエラーと提案:

    オプション セット フィールドまたはハードコーディングされた GUID テキスト値を使用している場合、この段階でエラーが発生する可能性があります。

    • オプション セットの値: オプション セット値のテキスト識別子を含むオプション セット フィールドを使用している場合は、代わりにドット表記を使用してオプション セット値を参照してください。 たとえば、Patch(Accounts, OptionSet1 = “12345”)Patch(Accounts, OptionSet.Item1) に変更します。ここで、Item112345 値に対応します。
      詳細については、詳細例のセクションを参照してください。
    • GUID: 015e45e1044e49f388115be07f2ee116 などの静的 GUID 文字列を使用している場合は、たとえば GUID(“015e45e1044e49f388115be07f2ee116”) など、GUID オブジェクトを返す関数に変換します。
    • ルックアップ: Lookup 関数を使用して、Lookup(Contacts, ‘contactID’ = ThisItem.ContactID”) などの第 1 レベルのルックアップ値を取得する場合は、代わりに ThisItem.PrimaryContacts (PrimaryContacts がエンティティの名前) を使用することを検討してください。

データ ソース エクスペリエンスおよび Common Data Service ビューの向上がオフになっています。

次の手順に従って、強化されたデータ ソース エクスペリエンスおよび Common Data Service ビューの機能をオンにします。

  1. 既存の Common Data Service データ ソース接続を削除します。
  2. 強化されたデータ ソース エクスペリエンスおよび Common Data Service ビューの機能をオンにします。
  3. 新しいデータ ソース選択エクスペリエンスを使用して、Common Data Service 接続を追加します。
  4. アプリケーションを保存します。

注意

アプリケーションが非常に大きい場合は、データ ソース接続を元に戻すのにしばらく時間がかかることがあります。 このプロセス中はアプリケーションを閉じないでください。

Dynamics 365 Connector を使用したキャンバス アプリの変換

Dynamics 365 Connector を使用するアプリを変換するには、データ ソースへの接続を削除して追加する必要があります。 以下の手順を使用して、接続をデータ ソースに変換します。

  1. 強化されたデータ ソース エクスペリエンスおよび Common Data Service ビューの機能がオンになっていることを確認してください。

  2. 既存の Dynamics 365 データ ソース接続を削除します。

  3. 新しいデータ ソース選択エクスペリエンスを使用して、データ ソースへの接続を Common Data Service に追加します。

    注意

    他の環境 (現在の環境以外) に接続している場合は、エンティティ カテゴリ、次に詳細 (...) オプションを選択して環境を変更します。 次に、別の環境からエンティティを選択して、アプリケーションに追加します。 クロステナント接続は、改善されたネイティブ コネクタでは機能しません。 データのクロステナントにアクセスするには、データ統合を使用する必要があります。

  4. アプリケーションを保存します。

考えられるエラーと提案:

表示名を使用していない、GUID 文字列を使用している、またはオプション セット フィールドを使用している場合、変換時にエラーが発生する可能性があります。

  • コントロール名が競合する場合は、コントロール名を異なる一意の名前に変更してください。
  • フィールドとエンティティの表示名の競合については、エンティティを想定しながらもローカル スコープのフィールド名に解決される式が表示される場合があります。 角かっこと @ 記号を使用してグローバル スコープを示し、エンティティに解決するようにします。たとえば、[@entityName] などです。
  • オプション セットの値: オプション セット値のテキスト識別子を含むオプション セット フィールドを使用している場合は、代わりにドット表記を使用してオプション セット値を参照してください。 たとえば、Patch(Accounts, OptionSet1 = “12345”)Patch(Accounts, OptionSet.Item1) に変更します。ここで、Item112345 値に対応します。
    詳細については、詳細例のセクションを参照してください。
  • GUID: 015e45e1044e49f388115be07f2ee116 などの静的 GUID 文字列を使用している場合は、たとえば GUID(“015e45e1044e49f388115be07f2ee116”) など、GUID オブジェクトを返す関数に変換します。
  • ルックアップ: Lookup 関数を使用して、Lookup(Contacts, ‘contactID’ = ThisItem.ContactID”) などの第 1 レベルのルックアップ値を取得する場合は、代わりに ThisItem.PrimaryContacts (PrimaryContacts がエンティティの名前) を使用することを検討してください。
  • ポリモーフィック参照については、以下の詳細例のセクションを参照してください。

詳細例

アプリを変換して新しいオプション セット2 つのオプションのデータ型をサポートするコントロールで使用すると、アプリをアップグレードして強化されたデータ ソース エクスペリエンスと Common Data Service ビューの機能を使用するのが困難になる場合があります。

オプション セット

以前のオプション セットでは、個別の _myfield_myfield_label フィールドが使用されていました。 現在、ロケールに依存しない比較とロケール固有のラベル取得の両方に使用できる単一の myfield があります。

オプション セット データ カードの削除と追加

既存のデータ カードを削除し、オプション セットで使用するよう再度追加することをお勧めします。 たとえば、取引先企業エンティティとカテゴリ オプション セットを使用している場合は、_accountcategorycode_label に設定されているデータ カードの DataField プロパティが表示されます。 フィールド リストで、データ カードのタイプが文字列であることがわかります。

古いスタイル名の OptionSet

新しい強化されたデータ ソース エクスペリエンスと Common Data Service ビューの機能がある場合、_accountcategorycode_label は表示されません。 accountcategorycode に置き換えられます。 カードがカスタムとしてマークされ、エラーが表示されます。 古いデータ カードを取り外し、オプション セット を再度追加します。 新しいデータ カードはオプション セット対応です。

古いスタイル名の OptionSet

新しい構文を使用するためのオプション セット フィルター式の編集

以前は、フィルター式でオプション セット値を使用したい場合は、フィールドが必要でした。 たとえば、次のようなものです。

Filter(Account,'Category Value' = "1")

この式を編集する必要があります。 オプション セット テキスト識別子は値に使用されなくなりました。 この式は、以下を検索するように更新する必要があります。

Filter(Account, Category= ‘Category (Accounts)’.’Preferred Customer’)

'Category(Accounts)' は、取引先企業エンティティのカテゴリ フィールドに使用される列挙値の名前です。 これはローカル オプション セットです。 ローカルおよびグローバル オプション セットの詳細については、グローバル オプション セット を参照してください。

新しい構文を使用するためのオプション セット パッチ ステートメントの編集

以下は、以前のオプション セットのパッチ ステートメントの例です。

Patch( Accounts, First(Accounts), { ‘Category Value’: 1 } ) )

このフォームに従うようにステートメントを更新する必要があります。

Patch( Accounts, First(Accounts), { Category: ‘Category (Accounts)’.’Preferred Customer’ } )

オプション セットの曖昧性除去

オプション セット フィールドの表示名とオプション セットの名前が同じ場合、数式の曖昧性を解消する必要があります。 取引先企業カテゴリ コードの例を引き続き使用するには、@ は、フィールドではなくオプション セットを使用することを意味します。

Filter(Accounts, 'Category Code' = [@’Category Code’].'Preferred Customer')

2 つのオプション

2 つのオプション セット データ カードの削除と追加

既存のデータ カードを削除し、2 つのオプション セットを使用するよう再度追加することをお勧めします。 データ型は、以前は単純なブール値として認識されていました - たとえば、ラベルなしの true/on や false/off などです。

2 つのオプション セット - 古いスタイル

新しい強化されたデータ ソース エクスペリエンスと Common Data Service ビュー機能では、カードはカスタムとマークされ、エラーが表示されます。 古いデータ カードを取り外し、オプション セットを再度追加します。 追加すると、既定で 2 つのオプションを持つ編集コントロールが表示されます。

TwoOptionSet-New

ブール値のフィールドにトグル スイッチを使用する場合は、データ カードのロックを解除して、データ カードのコントロールをトグルに置き換えます。 また、トグルでこれらのプロパティを設定する必要があります。

Toggle1.Default = ThisItem.’Do not allow Bulk Emails’
Toggle1.TrueText = ‘Do not allow Bulk Emails (Accounts)’.’Do Not Allow’
Toggle1.FalseText = ‘Do not allow Bulk Emails (Accounts)’.Allow
DataCard.Value = If( Toggle1.Value,
    ‘Do not allow Bulk Emails (Accounts)’.’Do Not Allow’,
    ‘Do not allow Bulk Emails (Accounts)’.Allow )

2 つのオプション トグル スイッチ

2 つのオプション パッチ ステートメントの絞り込み

Patch 関数を 2 つのオプションと共に使用すると、そのまま動作します。 ブール値と同様に、true と false を直接使用できます。 唯一の違いは、true および false を示す値を以前の Label コントロールに配置した場合、代わりに 2 つのオプション ラベルが表示されることです。

ポリモーフィック ルックアップ

次のガイドラインは、ポリモーフィック フィールドを参照している場合に、アプリケーションをアップグレードするのに役立ちます。 同じフィールドからのポリモーフィック ルックアップは、制限された複数のエンティティのセットへの参照をサポートします。 他の言語の参照と同様に、レコード参照は、特定のエンティティの特定のレコードへのポインターです。 レコード参照にはエンティティ情報が含まれているため、他の複数のエンティティのレコードを参照することができます。これは、1つのエンティティのレコードのみを参照することができる通常の検索とは異なります。

レコードの所有者フィールドでのアクセス、設定、およびフィルター

たとえば、エンティティの所有者フィールドは、ユーザー エンティティまたはチーム エンティティのレコードを参照できます。 異なるレコードの同じ検索フィールドは、異なるエンティティのレコードを参照できます。

ポリモーフィック所有者フィールド

フィルターとパッチを持つポリモーフィック

レコード参照は、完全なレコードと同じように使用できます。

Filter( Accounts, Owner = First( Teams ) )
Patch( Accounts, First( Accounts ), { Owner: First( Users ) })

参照は異なるエンティティを指すことができるので、具体的にする必要があります。 チーム エンティティの名前フィールドがチーム名であり、ユーザー エンティティの名前フィールドが氏名であるため、ThisItem.Owner.Name は使用できません。 Power Apps は、アプリを実行するまで、参照しているルックアップのタイプを認識しません。

この問題を解決するには、以下を行います。

  1. 所有者がなり得るエンティティの種類のデータ ソースを追加します。現在の例では、ユーザーとチームです)。
  2. 追加の関数を使用して、意図を明確にします。

使用できる 2 つの新しい関数があります。

  • IsType – レコード参照が特定のエンティティの種類であるかどうかを確認します。
  • AsType – レコード参照を特定のエンティティの種類にキャストします。

これらの関数を使用すると、所有者のエンティティの種類に基づいて、2 つの異なる名前のフィールドから取得した所有者の名前を表示する式を記述できます。

If( IsType( ThisItem.Owner,  [@Teams]), 
    AsType( ThisItem.Owner, [@Teams]).'Team Name', 
    AsType( ThisItem.Owner, [@Users]).'Full Name' )

AsType を持つギャラリー

[@Teams][@Users] のグローバル曖昧性除去演算子を使用して、グローバル エンティティの種類を参照するようにします。 この場合は必須ではありませんが、常に明確にすることをお勧めします。 一対多のリレーションシップは、ギャラリーのレコード スコープで競合することがよくありますが、この操作を行うことで混乱を回避できます。

取引先担当者エンティティの会社名フィールド (顧客データ型) にアクセスして設定する

顧客検索フィールドは、所有者に類似した別のポリモーフィック ルックアップです。 各エンティティには所有者フィールドを 1 つのみ設定できます。 ただし、エンティティには 0、1、またはそれ以上の顧客検索フィールドを含めることができます。 取引先担当者システム エンティティには、顧客検索フィールドである会社名フィールドが含まれています。 詳細については、顧客フィールドを表示するを参照してください。

FAX、電話、電子メール メッセージなどの活動エンティティの関連フィールドにアクセスして設定する

ポリモーフィック ルックアップは、取引先企業と取引先担当者に限定されません。 エンティティのリストは、カスタム エンティティで拡張できます。 たとえば、FAX エンティティには、取引先企業、取引先担当者、およびその他のエンティティを参照できるポリモーフィック関連検索フィールドがあります。 データ ソースが FAX に設定されているギャラリーを使用している場合は、次の数式を使用して、関連検索フィールドに関連付けられている名前を表示できます。

If( IsBlank( ThisItem.Regarding ), "",
   IsType( ThisItem.Regarding, [@Accounts] ),
       "Account: " & AsType( ThisItem.Regarding, [@Accounts] ).'Account Name',
   IsType( ThisItem.Regarding, [@Contacts] ),
       "Contacts: " & AsType( ThisItem.Regarding, [@Contacts] ).'Full Name',
   "" )

関連付けギャラリー

詳細については、検索フィールドに関しておよびリレーションシップに関してを参照してください。

レコードのすべての活動のリストにアクセスする

Common Data Service では、FAX、タスク、電子メール、メモ、電話、レター、チャットなどは、活動として指定されます。 独自のカスタム活動エンティティを作成することもできます。

特定の種類の活動 (FAX や税金など)、または取引先企業などのエンティティに関連付けられているすべての活動を表示できます。 活動エンティティと、キャンバス アプリに表示する予定のデータを持つその他の個々のエンティティを追加します。

(たとえば、タスク エンティティに) レコードを追加するたびに、すべての活動エンティティに共通のフィールドを持つ活動エンティティのレコードが作成されます。 詳細については、活動エンティティを参照してください。

次の例は、取引先企業を選択すると、その取引先企業に関連付けられているすべての活動が表示されることを示しています。

ポリモーフィック活動

レコードは、活動エンティティから表示されています。 ただし、IsType 関数を使用して、それらがどのような種類の活動であるかを識別することができます。 この場合も、エンティティの種類で IsType を使用する前に、必要なデータ ソースを追加する必要があります。

この式を使用すると、ギャラリー内のラベル コントロールにレコードの種類を表示できます。

If( IsType( ThisItem, [@Faxes] ), "Fax",
   IsType( ThisItem, [@'Phone Calls'] ), "Phone Call",
   IsType( ThisItem, [@'Email Messages'] ), "Email Message",
   IsType( ThisItem, [@Chats] ), "Chat",
   "Unknown")

ポリモーフィック - IsType

レコードのすべてのメモのリストにアクセスする

エンティティを作成する際に、添付ファイルを有効にできます。 添付ファイルを有効にするためのチェックボックスをオンにすると、次の図が取引先企業エンティティを示すように、メモ エンティティとの関連リレーションシップが作成されます。

メモフィールド

フィルタリング

関連フィールドに基づいて読み取りまたはフィルター処理することはできません。 ただし、メモの一対多の逆の関係を使用できます。 取引先企業エンティティに関連付けられているすべてのメモを一覧表示するには、次の数式を使用します。

First( Accounts ).Notes
Patch

パッチを使用してエンティティのメモ フィールドを設定することはできません。 エンティティのメモ テーブルにレコードを追加するには、Relate 関数を使用します。 この例のように、最初にメモを作成します。

Relate( ThisItem.Notes, Patch( Notes, Defaults( Notes ), { Title: "A new note", isdocument:'Is Document (Notes)'.No } ) )

次の手順

関連項目

Common Data Service とは?