Microsoft Dataverse とデータ ソース エクスペリエンスの向上
概要
以前はオプションだった多くの機能が、2021 年 5 月以降に新しいすべてのアプリの既定動作になりました。 この記事では、新機能が導入される前にアプリを開発したユーザー向けに、アプリをアップグレードして新機能を活用する方法のガイダンスを提供します。
ネイティブ Dataverse
Dataverse または 2019 年 11 月より前の Dynamics 365 Connector のいずれかでキャンバスアプリを作成した場合は、Dataverse の現在のネイティブ接続エクスペリエンスを使用する事のメリットを得られない場合があります。
2019 年 11 月より前にアプリを作成し、Dataverse のネイティブ接続を使用していない場合は、[近日公開の機能] タブの [設定] の [廃止済み] タブに、Microsoft Dataverse のリレーショナル データ、選択肢、その他の新機能 とともに データ ソース エクスペリエンスおよび Microsoft Dataverse ビューを向上させる オプションが表示されます。
アップグレードするには?
機能の設定を調べ、以下の指示に従ってアプリをアップグレードします。
Microsoft Dataverse のリレーショナル データ、オプション セット、その他の新機能はオフです
今後の機能の廃止セクションを確認します。 オフに設定されている場合、変換の最初のステップとして次の手順に進みます。
Microsoft Dataverse のリレーショナル データ、オプション セット、およびその他の新機能が全般設定に表示されない場合、またはすでにオンになっている場合は、次の手順をスキップして次のセクションに進みます。
ステップ 1: 表示名の使用機能をオンにします。
- 表示名の使用機能をオンにします。
- ヘルス モニターがアプリの分析を完了するまで待ちます。
- アプリを保存し、閉じて、再度開きます。
- すべての数式エラーを解決します。
- アプリを保存し、閉じて、再度開きます。
考えられるエラーと提案:
新しく表示された表示名の一部が、他のテーブル、フィールド、またはコントロールの表示名と競合する可能性があります。 たとえば、同じ名前のコントロールとフィールドがあるとします。 修正する一意の値でコントロールの名前を変更できます。
フィールドとテーブル表示名の競合については、テーブルを期待しているにもかかわらず、ローカル スコープのフィールド名に解決される数式を目にする可能性があります。
@ 記号に角括弧を使用して、テーブルに解決されるようにグローバル スコープを示します。例: [@tableName]。
Step 2: リレーショナル データ、オプション セット、Microsoft Dataverse のその他の新機能および文字列の代わりに GUID データ型を使用するの機能をオンにします。
- リレーショナル データ、オプション セット、Microsoft Dataverse のその他の新機能をオンにします。
- 文字列の代わりに GUID データ型を使用する機能をオンにします。
- ヘルス モニターがアプリの分析を完了するまで待ちます。
- すべての数式エラーを解決します。
- アプリを保存し、閉じて、再度開きます。
考えられるエラーと提案:
選択フィールドまたはハードコードされた GUID テキスト値を使用している場合、この段階でエラーが発生する可能性があります。
- 選択項目の値: 選択値にテキスト識別子を持つ選択項目フィールドを使用している場合は、代わりにドット表記を使用して選択値を参照してください。 たとえば、
Patch(Accounts, OptionSet1 = “12345”)
をPatch(Accounts, OptionSet.Item1)
に変更します。ここで、Item1
は12345
値に対応します。
詳細: 詳細な例。 - GUID:
015e45e1044e49f388115be07f2ee116
などの静的 GUID 文字列を使用している場合は、たとえばGUID(“015e45e1044e49f388115be07f2ee116”)
など、GUID オブジェクトを返す関数に変換します。 - ルックアップ: ルックアップ関数を使用して、
Lookup(Contacts, ‘contactID’ = ThisItem.ContactID”)
のような第 1 レベルのルックアップ値を取得している場合、ThisItem.PrimaryContacts
(PrimaryContacts はテーブルの名前です) を代わりに使用することを検討してください。
データ ソース エクスペリエンスと Microsoft Dataverse ビューの向上はオフです
次の手順に従って、強化されたデータ ソース エクスペリエンスおよび Microsoft Dataverse ビューの機能をオンにします。
- 既存の Dataverse データ ソース接続を削除します。
- 強化されたデータ ソース エクスペリエンスおよび Microsoft Dataverse ビューの機能をオンにします。
- 新しいデータ ソース選択エクスペリエンスを使用して、Dataverse 接続を追加します。
- アプリケーションを保存します。
注意
アプリケーションが非常に大きい場合は、データ ソース接続を元に戻すのにしばらく時間がかかることがあります。 このプロセス中はアプリケーションを閉じないでください。
Dynamics 365 Connector を使用したキャンバス アプリの変換
Dynamics 365 Connector を使用するアプリを変換する場合は、データ ソースへの接続を削除し、追加し直す必要があります。 以下の手順を使用して、接続をデータ ソースに変換します。
強化されたデータ ソース エクスペリエンスおよび Microsoft Dataverse ビューの機能がオンになっていることを確認してください。
既存の Dynamics 365 データ ソース接続を削除します。
新しいデータ ソース選択エクスペリエンスを使用して、データ ソースへの接続を Dataverse に追加します。
注意
- (現行以外の) 他の環境に接続している場合は、テーブルカテゴリ、次にその他 (...) オプションを選択して環境を変更します。 次に、別の環境からテーブルを選択して、アプリケーションに追加できます。 クロステナント接続は、改善されたネイティブ コネクタでは機能しません。 データのクロステナントにアクセスするには、データ統合を使用する必要があります。
- 接続を追加する環境を表示するには、次のいずれかの要件を満たす必要があります。
- あなたはアプリの 所有者 であるか、アプリは 協同所有者 としてあなたと 共有されています。
- あなたは、環境管理者、環境メーカー、または システム管理者 セキュリティロールの少なくとも 1 つのメンバーです。 環境のセキュリティ ロールの詳細については、環境内のリソースに対するユーザー セキュリティを構成する に移動します。
アプリケーションを保存します。
考えられるエラーと提案:
次の場合、変換時にエラーが発生する可能性があります: 表示名を使用していない場合、GUID 文字列を使用している場合、または選択項目を使用している場合。
- コントロール名が競合する場合は、コントロール名を異なる一意の名前に変更してください。
- フィールドとテーブル表示名の競合については、テーブルを期待しているにもかかわらず、よりローカル スコープのフィールド名に解決される数式を目にする可能性があります。 @ 記号に角括弧を使用して、テーブルに解決されるようにグローバル スコープを示します。例: [@tableName]。
- 選択項目の値: 選択値にテキスト識別子を持つ選択項目フィールドを使用している場合は、代わりにドット表記を使用して選択値を参照してください。 たとえば、
Patch(Accounts, OptionSet1 = “12345”)
をPatch(Accounts, OptionSet.Item1)
に変更します。ここで、Item1
は12345
値に対応します。
詳細: 詳細な例。 - GUID:
015e45e1044e49f388115be07f2ee116
などの静的 GUID 文字列を使用している場合は、たとえばGUID(“015e45e1044e49f388115be07f2ee116”)
など、GUID オブジェクトを返す関数に変換します。 - ルックアップ: ルックアップ関数を使用して、
Lookup(Contacts, ‘contactID’ = ThisItem.ContactID”)
のような第 1 レベルのルックアップ値を取得している場合、ThisItem.PrimaryContacts
(PrimaryContacts はテーブルの名前です) を代わりに使用することを検討してください。 - ポリモーフィック参照については、以下の詳細例のセクションを参照してください。
詳細例
サポート コントロールを使ってアプリが新しいオプション セットと 2 つのオプション データ タイプを使用するように変換することは、データ ソース エクスペリエンスと Microsoft Dataverse ビューを改善する昨日を使用するようアプリをアップグレード中は難しいかもしれません。
選択肢(複数)
以前は選択項目に _myfield
と _myfield_label
フィールドが個別に使用されていました。 今、ロケールに依存しない比較と、ロケール固有のラベルの取得の両方に使用できる単一の myfield
があります。
選択項目データ カードの削除と追加
既存のデータ カードを削除し、選択したデータ カードを使用できるように追加し直すことを推奨します。 たとえば、アカウント テーブルとカテゴリ選択項目を使用している場合、DataField データ カードのプロパティが _accountcategorycode_label
に設定されたことがわかります。 フィールド リストで、データ カードのタイプが文字列であることがわかります。
新しい強化されたデータ ソース エクスペリエンスと Microsoft Dataverse ビューの機能がある場合、_accountcategorycode_label
は表示されません。 accountcategorycode
に置き換えられます。 カードがカスタムとしてマークされ、エラーが表示されます。 古いデータ カードを取り外し、選択項目に追加して戻します。 新しいデータ カードは選択項目対応です。
新しい構文を使用するための選択フィルター式の編集
以前は、フィルター式で選択項目の値を使用する場合は、値フィールドを使用する必要がありました。 例:
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 つのオプション
はい/いいえデータ カードの削除と追加
既存のデータ カードを削除し、それらを追加して、[はい/いいえ] で動作するようにします。 データ型は、以前は単純なブール値として認識されていました - たとえば、ラベルなしの true/on や false/off などです。
新しい強化されたデータ ソース エクスペリエンスと Microsoft Dataverse ビュー機能では、カードはカスタムとマークされ、エラーが表示されます。 古いデータ カードを取り外し、選択肢に追加して戻します。 追加すると、既定で 2 つのオプションを持つ編集コントロールが表示されます。
ブール値のフィールドにトグル スイッチを使用する場合は、データ カードのロックを解除して、データ カードのコントロールをトグルに置き換えます。 また、トグルでこれらのプロパティを設定する必要があります。
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 つのオプション パッチ ステートメントの絞り込み
Patch 関数を 2 つのオプションと共に使用すると、そのまま動作します。 ブール値と同様に、true と false を直接使用できます。 唯一の違いは、true および false を示す値を以前の ラベル コントロールに配置した場合、代わりに 2 つのオプション ラベルが表示されることです。
ポリモーフィック ルックアップ
次のガイドラインは、ポリモーフィック フィールドを参照している場合に、アプリケーションをアップグレードするのに役立ちます。 同じフィールドからの多態的なルックアップは、複数のテーブルの制限されたセットへの参照をサポートします。 他の言語の参照と同様に、レコード参照は特定のテーブルの特定のレコードへのポインターです。 レコード参照にはテーブル情報が含まれているため、他のいくつかのテーブルのレコードを指すことができます。これは、1 つのテーブルのレコードのみを指すことができる通常のルックアップとは異なります。
レコードの所有者フィールドでのアクセス、設定、およびフィルター
たとえば、テーブルの所有者フィールドは、ユーザー テーブルまたはチーム テーブルのレコードを参照できます。 異なるレコードの同じルックアップ フィールドは、異なるテーブルのレコードを参照する可能性があります。
フィルターとパッチを持つポリモーフィック
レコード参照は、完全なレコードと同じように使用できます。
Filter( Accounts, Owner = First( Teams ) )
Patch( Accounts, First( Accounts ), { Owner: First( Users ) })
所有者名を表示するギャラリーを持つポリモーフィック
参照は異なるテーブルを指す可能性があるため、具体的にする必要があります。 ThisItem.Owner.Name は、チーム テーブルの名前フィールドがチーム名であり、ユーザー テーブルの名前フィールドがフル ネームであるため、使用できません。 Power Apps は、アプリを実行するまで、参照しているルックアップのタイプを認識しません。
この問題を解決するには、以下を行います。
- 所有者がなり得るエンティティの種類のデータ ソースを追加します。現在の例では、ユーザーとチームです)。
- より多くの関数を使用して、意図を明確にします。
使用できる 2 つの新しい関数があります。
- IsType – レコード参照が特定のテーブル タイプであるかどうかを確認します。
- AsType – レコード参照を特定のテーブル タイプと位置付けます。
これらの関数を使用すると、所有者のテーブル タイプに基づいて、2 つの異なる名前のフィールドから取得した所有者の名前を表示する式を記述できます。
If( IsType( ThisItem.Owner, [@Teams]),
AsType( ThisItem.Owner, [@Teams]).'Team Name',
AsType( ThisItem.Owner, [@Users]).'Full Name' )
[@Teams]
と [@Users]
のグローバル曖昧性解消演算子は、グローバル テーブル タイプを確実に参照するために使用されます。 この場合は必須ではありませんが、常に明確にすることをお勧めします。 一対多のリレーションシップは、ギャラリーのレコード スコープで競合することがよくありますが、この操作を行うことで混乱を回避できます。
連絡先テーブルの [会社名] フィールド (顧客データ タイプ) にアクセスして設定します
顧客検索フィールドは、所有者に類似した別のポリモーフィック ルックアップです。 各テーブルには設定できる所有者フィールドは 1 つのみです。 ただし、テーブルには 0、1、または複数の顧客ルックアップ フィールドを含めることができます。 連絡先システム テーブルには、顧客ルックアップ フィールドである会社名フィールドが含まれています。 詳細については、顧客フィールドを表示するを参照してください。
ファックス、電話、メール メッセージなどの活動テーブルの [関連] フィールドにアクセスして設定します
ポリモーフィック ルックアップは、取引先企業と取引先担当者に限定されません。 テーブルのリストは、カスタム テーブルで拡張できます。 たとえば、Faxes テーブルには、アカウント、連絡先、およびその他のテーブルを参照できるルックアップ フィールドに関する多態性があります。 データ ソースが 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',
"" )
詳細については、検索フィールドに関しておよびリレーションシップに関してを参照してください。
レコードのすべての活動のリストにアクセスする
Dataverse では、ファックス、タスク、メール、メモ、電話、手紙、チャットなどのテーブルは、活動と指定されます。 独自のカスタム活動テーブルを作成することもできます。
特定のタイプの活動 (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")
レコードのすべてのメモのリストにアクセスする
テーブルを作成するときに、添付ファイルを有効にできます。 添付ファイルを有効にするためのチェックボックスを選択すると、アカウント テーブルの図でわかるように、メモ テーブルの関連の関係性が作成されます。
Filtering
関連フィールドに基づいて読み取りまたはフィルター処理することはできません。 ただし、メモの一対多の逆の関係を使用できます。 アカウント テーブルに関連付けられているすべてのメモを一覧表示するには、次の式を使用できます。
First( Accounts ).Notes
PATCH
パッチを使用してテーブルに [メモ] フィールドを設定することはできません。 テーブルのメモ テーブルにレコードを追加するには、Relate 関数を使用できます。 この例のように、最初にメモを作成します。
Relate( ThisItem.Notes, Patch( Notes, Defaults( Notes ), { Title: "A new note", isdocument:'Is Document (Notes)'.No } ) )
次の手順
関連項目
注意
ドキュメントの言語設定についてお聞かせください。 簡単な調査を行います。 (この調査は英語です)
この調査には約 7 分かかります。 個人データは収集されません (プライバシー ステートメント)。