Freigeben über


Microsoft Dataverse und die Verbesserung der Datenquellenerfahrung

Überblick

Im Mai 2021 sind viele Features, die zuvor optional waren, jetzt das Standardverhalten für alle neuen Apps. Dieser Artikel enthält Anleitungen für Benutzer, die eine App vor der Einführung neuer Features entwickelt haben, zum Aktualisieren ihrer App, um die neuesten Funktionen zu nutzen.

Native Dataverse

Wenn Sie eine Canvas-App mit dem Dataverse oder dem Dynamics 365-Connector vor November 2019 erstellt haben, haben Sie möglicherweise nicht die Vorteile der Verwendung der aktuellen systemeigenen Verbindungsoberfläche für dataverse.

Wenn Sie Ihre App vor November 2019 erstellt haben und keine native Dataverse-Verbindung verwenden, finden Sie auf der Registerkarte „Neue Funktionen“ im Abschnitt „Eingestellt“ die Option Datenquellenumgebung und Microsoft Dataverse-Ansichten verbessern zusammen mit den relationalen Daten, Auswahlmöglichkeiten und anderen neuen Features für Microsoft Dataverse.

Wie kann ich ein Upgrade durchführen?

Aktualisieren Sie Ihre App, indem Sie die Einstellungen der Features überprüfen und dann den folgenden Anweisungen folgen:

Relationale Daten, Optionssätze und andere neue Features für Microsoft Dataverse sind deaktiviert.

Überprüfen Sie den Abschnitt "Abgeschlossene Funktionen" unter "Anstehende Funktionen". Wenn sie auf "Aus" festgelegt ist, fahren Sie mit den folgenden Anweisungen als ersten Schritt in der Konvertierung fort.

Wenn relationale Daten, Optionssätze und andere neue Features für Microsoft Dataverse in den allgemeinen Einstellungen nicht angezeigt werden, oder wenn sie bereits aktiviert ist, überspringen Sie die folgenden Schritte, und fahren Sie mit dem nächsten Abschnitt fort.

  • Schritt 1: Aktivieren der Funktion "Anzeigenamen verwenden"

    1. Aktivieren Sie das Feature "Anzeigenamen verwenden".
    2. Warten Sie, bis der Gesundheitsmonitor die Analyse Ihrer App abgeschlossen hat.
    3. Speichern, schließen und öffnen Sie Ihre App erneut.
    4. Beheben Sie alle Formelfehler.
    5. Speichern, schließen und öffnen Sie Ihre App erneut.

    Mögliche Fehler und Vorschläge:

    Es ist möglich, dass einige der neu angezeigten Anzeigenamen möglicherweise mit den Anzeigenamen für andere Tabellen, Felder oder Steuerelemente in Konflikt geraten. Beispielsweise verfügen Sie möglicherweise über ein Steuerelement und ein Feld mit demselben Namen. Sie können den Namen des Steuerelements mit einem eindeutigen Wert ändern, um den Fehler zu beheben.

    Bei einem Anzeigename-Konflikt zwischen Feld und Tabelle wird möglicherweise eine Formel angezeigt, die eine Tabelle erwartet, aber in einen lokal begrenzten Feldnamen aufgelöst wird.

    Verwenden Sie die eckige Klammer mit einem @ Symbol, um einen globalen Bereich anzugeben, sodass er in die Tabelle aufgelöst wird, z. B. [@tableName].

  • Schritt 2: Aktivieren Sie relationale Daten, Optionssätze und andere neue Features für Microsoft Dataverse und die Funktion Verwendung von GUID-Datentypen anstelle von Zeichenfolgenein:

    1. Aktivieren Sie die relationalen Daten, Optionssätze und andere neue Features für Microsoft Dataverse.
    2. Aktivieren Sie die Funktion "GUID-Datentypen anstelle von Zeichenfolgen verwenden".
    3. Warten Sie, bis die Gesundheitsüberwachung die Analyse Ihrer App abgeschlossen hat.
    4. Beheben Sie alle Formelfehler.
    5. Speichern, schließen und öffnen Sie Ihre App erneut.

    Mögliche Fehler und Vorschläge:

    In dieser Phase können Fehler auftreten, wenn Sie ein Auswahlfeld oder hartcodierte GUID-Textwerte verwenden.

    • Auswahlwerte: Wenn Sie ein Auswahlfeld mit einem Textbezeichner für den Auswahlwert verwenden, verwenden Sie stattdessen die Punktnotation, um auf den Auswahlwert zu verweisen. Ändern Sie Patch(Accounts, OptionSet1 = “12345”) zu Patch(Accounts, OptionSet.Item1), wo Item1 dem 12345 Wert entspricht.
      Weitere Informationen: Detaillierte Beispiele.
    • GUIDs: Wenn Sie eine statische GUID-Zeichenfolge wie 015e45e1044e49f388115be07f2ee116 verwenden, konvertieren Sie sie in eine Funktion, die ein GUID-Objekt zurückgibt; zum Beispiel GUID(“015e45e1044e49f388115be07f2ee116”).
    • Nachschlagen: Wenn Sie Such-Funktionen verwenden, um Suchwerte der ersten Ebene zu erhalten, wie Lookup(Contacts, ‘contactID’ = ThisItem.ContactID”), erwägen Sie die Verwendung von ThisItem.PrimaryContacts (wobei PrimaryContacts der Name der Tabelle ist).

Verbessern Sie das Erlebnis von Datenquellen und die Ansichten in Microsoft Dataverse ist deaktiviert

Verwenden Sie die folgende Anweisung, um das Feature "Verbesserte Datenquellenerfahrung und Microsoft Dataverse-Ansichten"einzuschalten:

  1. Entfernen Sie Ihre vorhandenen Dataverse-Datenquellenverbindungen.
  2. Aktivieren Sie die Funktion Datenquellenumgebung und Microsoft Dataverse-Ansichten verbessern.
  3. Fügen Sie die Dataverse-Verbindung mithilfe der neuen Datenquellenauswahl hinzu.
  4. Speichern Sie Ihre Anwendung.

Hinweis

Wenn Ihre Anwendung extrem groß ist, kann das Hinzufügen Ihrer Datenquellenverbindungen eine Weile dauern. Schließen Sie die Anwendung während dieses Vorgangs nicht.

Konvertieren von Canvas-Apps mit dem Dynamics 365-Connector

Um Ihre App zu konvertieren, die den Dynamics 365-Connector verwendet, müssen Sie die Verbindungen zu Ihren Datenquellen entfernen und hinzufügen. Führen Sie die folgenden Schritte aus, um Ihre Verbindungen in Ihre Datenquellen zu konvertieren.

  1. Stellen Sie sicher, dass das Feature "Erfahrung mit Datenquellen und Microsoft Dataverse-Ansichten verbessern" aktiviert ist.

  2. Entfernen Sie Ihre vorhandenen Dynamics 365-Datenquellenverbindungen.

  3. Fügen Sie die Verbindungen zu Ihren Datenquellen mithilfe des neuen Auswahltools für Datenquellen zum Dataverse hinzu.

    Hinweis

    • Wenn Sie Verbindungen mit anderen Umgebungen (außer aktuell) haben, wählen Sie die Kategorie "Tabelle " und dann die Option "Mehr (...)" aus, um die Umgebung zu ändern. Anschließend können Sie eine Tabelle aus einer anderen Umgebung auswählen, die Sie Ihrer Anwendung hinzufügen möchten. Mandantenübergreifende Verbindungen funktionieren nicht mit dem verbesserten nativen Connector. Sie müssen die Datenintegration verwenden, um auf mandantenübergreifende Daten zuzugreifen.
    • Sie müssen eine der folgenden Anforderungen erfüllen, um eine Umgebung anzeigen zu können, der Sie die Verbindung hinzufügen möchten:
  4. Speichern Sie Ihre Anwendung.

Mögliche Fehler und Vorschläge:

In folgenden Fällen können beim Konvertieren Fehler auftreten: Sie verwenden keine Anzeigenamen, verwenden GUID-Strings oder verwenden eine Auswahl.

  • Wenn der Steuerelementname konfliktet, ändern Sie den Namen des Steuerelements so, dass es anders und eindeutig ist.
  • Bei einem Anzeigenamenskonflikt zwischen Feld und Tabelle wird möglicherweise eine Formel angezeigt, die eine Tabelle erwartet, aber in einen lokal begrenzten Feldnamen aufgelöst wird. Verwenden Sie die eckige Klammer mit einem @ Symbol, um einen globalen Bereich anzugeben, sodass er in die Tabelle aufgelöst wird, z. B. [@tableName].
  • Auswahlwerte: Wenn Sie ein Auswahlfeld mit einem Textbezeichner für den Auswahlwert verwenden, verwenden Sie stattdessen die Punktnotation, um auf den Auswahlwert zu verweisen. Ändern Sie Patch(Accounts, OptionSet1 = “12345”) zu Patch(Accounts, OptionSet.Item1), wo Item1 dem 12345 Wert entspricht.
    Weitere Informationen: Detaillierte Beispiele.
  • GUIDs: Wenn Sie eine statische GUID-Zeichenfolge wie 015e45e1044e49f388115be07f2ee116 verwenden, konvertieren Sie sie in eine Funktion, die ein GUID-Objekt zurückgibt; zum Beispiel GUID(“015e45e1044e49f388115be07f2ee116”).
  • Nachschlagen: Wenn Sie Such-Funktionen verwenden, um Suchwerte der ersten Ebene zu erhalten, wie Lookup(Contacts, ‘contactID’ = ThisItem.ContactID”), erwägen Sie die Verwendung von ThisItem.PrimaryContacts (wobei PrimaryContacts der Name der Tabelle ist).
  • Weitere Informationen zu polymorphen Verweisen finden Sie unten im Abschnitt "Detaillierte Beispiele".

Detaillierte Beispiele

Das Konvertieren Ihrer App in die Verwendung der neuen Optionssätze und Two options-Datentypen mit unterstützenden Steuerelementen kann beim Upgrade einer App zur Verwendung des neuen Features Improve data source experience and Microsoft Dataverse views schwierig sein.

Auswahlmöglichkeiten

Separate _myfield Felder und _myfield_label Felder wurden früher für die Auswahl verwendet. Jetzt gibt es ein einziges myfield, das sowohl für ortsunabhängige Vergleiche als auch zum Abrufen des ortsspezifischen Labels verwendet werden kann.

Entfernen und Hinzufügen von Optionsdatenkarten

Wir empfehlen, vorhandene Datenkarten zu entfernen und sie wieder hinzuzufügen, um mit Ihrer Wahl zu arbeiten. Wenn Sie beispielsweise mit der Tabelle "Konto" und der Auswahl "Kategorie" arbeiten, sehen Sie, dass die DataField-Eigenschaft der Datenkarte auf "_accountcategorycode_label" gesetzt wurde. In der Feldliste können Sie sehen, dass die Datenkarte einen Typ von String hat:

OptionSet mit Namen im alten Stil

Mit der neuen Funktion "Verbesserte Datenquellenerfahrung und Microsoft Dataverse-Ansichten" wird _accountcategorycode_label nicht mehr angezeigt. Es wird durch accountcategorycode ersetzt. Ihre Karte ist jetzt als benutzerdefiniert gekennzeichnet, und Es werden Fehler angezeigt. Entfernen Sie die alte Datenkarte, und fügen Sie die Auswahl wieder hinzu. Die neue Datenkarte ist Choice-kompatibel.

OptionSet mit neuem Stilnamen.

Bearbeiten der Auswahlfilterausdrücke zur Verwendung einer neuen Syntax

Wenn Sie zuvor einen Auswahlwert in einem Filterausdruck verwenden möchten, müssen Sie das Feld "Wert " verwenden. Beispiel:

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

Sie müssen diese Formel bearbeiten. Der Auswahltextidentifikator wird für den Wert nicht mehr verwendet. Dieser Ausdruck sollte wie folgt aktualisiert werden:

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

'Kategorie(Konten) ist der Name der Aufzählung, die im Feld Kategorie der Tabelle Konten verwendet wird. Dies ist eine lokale Wahl. Weitere Informationen zu lokalen und globalen Auswahlmöglichkeiten finden Sie hier: Globale Auswahlmöglichkeiten.

Bearbeiten von Auswahlpatch-Anweisungen, um eine neue Syntax zu verwenden

Es folgt ein Beispiel für eine frühere Patch-Anweisung zur Auswahl:

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

Sie müssen Ihre Aussagen aktualisieren, um diesem Format zu entsprechen:

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

Auswahl Begriffsklärung

Wenn der Anzeigename eines Auswahlfelds und der Name der Auswahl identisch sind, müssen Sie die Formel eindeutig machen. Wenn Sie das Beispiel "Kontenkategoriecode" weiterhin verwenden möchten, impliziert die @ Verwendung der Auswahl, nicht des Felds.

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

Zwei Optionen

Entfernen und Hinzufügen von Ja/Nein-Datenkarten

Es wird empfohlen, vorhandene Datenkarten zu entfernen und sie wieder hinzuzufügen, um mit Ihrer JA/Nein-Wahl zu arbeiten. Die Datentypen wurden zuvor als einfaches boolesches Objekt erkannt , z. B. "true/on" und "false/off" ohne Beschriftungen:

Ja/Nein - alter Stil.

Mit dem neuen Feature " Verbesserte Datenquellen" und "Microsoft Dataverse-Ansichten " wird Ihre Karte jetzt als benutzerdefiniert markiert, und Es werden Fehler angezeigt. Entfernen Sie die alte Datenkarte, und fügen Sie die Auswahl wieder hinzu. Nach dem Hinzufügen wird ein Bearbeitungssteuerelement mit zwei Optionen standardmäßig angezeigt.

Ja/Nein - neuer Stil.

Wenn Sie den Umschalter für Ihr boolesches Feld bevorzugen, können Sie die Datenkarte entsperren und stattdessen das Steuerelement in der Datenkarte durch eine Umschaltfläche ersetzen. Sie müssen diese Eigenschaften auch für das Toggle-Steuerelement festlegen.

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 )

Zwei Optionen Umschalter

Verfeinern von zwei Option Patch-Anweisungen

Die Verwendung der Funktion Patch mit der Option "Zwei" sollte so wie sie ist' funktionieren. Es unterstützt die direkte Verwendung der Werte "true" und "false", ähnlich den Booleschen Werten. Der einzige Unterschied besteht darin, dass, wenn Sie zuvor den Wert in ein Steuerelement Beschriftung eingegeben hatten, der wahr und falsch anzeigte, nun stattdessen die beiden Optionsetiketten angezeigt werden.

Polymorphes Nachschlagen

Die folgenden Richtlinien helfen beim Upgrade Ihrer Anwendung, wenn sie auf polymorphe Felder verweist. Polymorphe Nachschlagevorgänge aus demselben Feld unterstützen Verweise auf einen eingeschränkten Satz von mehreren Tabellen. Ähnlich wie Verweise in anderen Sprachen ist ein Datensatzverweis ein Zeiger auf einen bestimmten Datensatz in einer bestimmten Tabelle. Ein Datensatzverweis enthält die Tabelleninformationen, die es ermöglichen, auf einen Datensatz in mehreren anderen Tabellen zu verweisen, der sich von einer normalen Suche unterscheidet, die nur auf Datensätze in einer Tabelle verweisen kann.

Zugriff, Setzen und Filter auf das Feld Besitzer eines Datensatzes

Beispielsweise kann das Feld "Besitzer" in einer Tabelle auf einen Datensatz in der Tabelle "Benutzer" oder in der Tabelle "Teams" verweisen. Dasselbe Nachschlagefeld in verschiedenen Datensätzen kann auf Datensätze in verschiedenen Tabellen verweisen.

Polymorphes Besitzerfeld.

Polymorph mit Filter und Patch

Datensatzverweise können wie ein vollständiger Datensatz verwendet werden:

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

Da ein Verweis auf verschiedene Tabellen verweisen kann, müssen Sie spezifisch sein. Sie können ThisItem.Owner.Name nicht verwenden, da das Feld "Name" in der Tabelle "Team " den Namen " Teamname" aufweist und das Feld "Name" in der Tabelle " Benutzer " "Vollständiger Name" lautet. Power Apps weiß nicht, auf welche Art von Suche Sie sich beziehen, bis Sie die App ausführen.

So beheben Sie dieses Problem:

  1. Fügen Sie die Datenquellen für die Entitätstypen hinzu, die Besitzer sein können: im aktuellen Beispiel, Benutzer und Teams.
  2. Verwenden Sie weitere Funktionen, um Ihre Absicht klar zu machen.

Es gibt zwei neue Funktionen, die Sie nutzen können:

  • IsType – Überprüft, ob eine Datensatzreferenz ein bestimmter Tabellentyp ist.
  • AsType – Wandelt eine Datensatzreferenz auf einen bestimmten Tabellentyp um.

Mit diesen Funktionen können Sie eine Formel schreiben, die den Namen des Besitzers aus zwei unterschiedlich benannten Feldern basierend auf dem Tabellentyp des Besitzers anzeigt:

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

Katalog mit Als Typ

Der globale Mehrdeutigkeitsoperator für [@Teams] und [@Users] wird verwendet, um sicherzustellen, dass Sie auf den globalen Tabellentyp verweisen. In diesem Fall ist es jedoch nicht notwendig, es wird empfohlen, immer klar zu sein. Eins-zu-viele-Beziehungen stehen oft im Eintragsbereich des Katalogs in Konflikt, und diese Praxis vermeidet diese Verwirrung.

Zugreifen und Festlegen des Felds "Firmenname" (Datentyp "Kunde") der Tabelle "Kontakte"

Das Kunden-Lookup-Feld ist ein weiteres polymorphes Lookup-Feld, das dem Feld Besitzer ähnlich ist. Sie können nur ein Feld "Besitzer" pro Tabelle haben. Eine Tabelle kann jedoch null, eins oder mehrere Kunden-Nachschlagefelder enthalten. Die Tabelle "Kontakte" enthält das Feld "Firmenname", bei dem es sich um ein Nachschlagefeld "Kunde" handelt. Lesen Sie die Felder eines Kunden anzeigen, um weitere Details zu erhalten.

Greifen Sie auf die Tabellen der Aktivitätsfelder wie Faxe, Telefonanrufe, E-Mail-Nachrichten zu und legen Sie sie fest

Polymorphe Nachschlagevorgänge sind nicht auf Konten und Kontakte beschränkt. Die Liste der Tabellen ist mit benutzerdefinierten Tabellen erweiterbar. Beispielsweise weist die Tabelle "Faxes" ein polymorphes Nachschlagefeld "Bezüglich" auf, das auf die Tabellen "Konten", "Kontakte" und andere verweisen kann. Wenn Sie einen Katalog haben, dessen Datenquelle auf Faxe eingestellt ist, können Sie die folgende Formel verwenden, um den Namen anzuzeigen, der mit dem Feld Betreffend Lookup verknüpft ist.

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',
   "" )

Katalog mit Betreff

Lesen Sie Bezüglich Nachschlagefeldern und Bezüglich Beziehungen für weitere Details.

Auf die Liste aller Aktivitäten für einen Datensatz zugreifen

In Dataverse werden Tabellen wie Faxe, Aufgaben, E-Mails, Notizen, Telefonanrufe, Briefe und Chats als Aktivitäten festgelegt. Sie können auch eigene benutzerdefinierte Aktivitätstabellen erstellen.

Sie können Aktivitäten eines bestimmten Typs (z. B. Faxe oder Steuern) oder alle Aktivitäten anzeigen, die einer Tabelle wie z. B. einem Konto zugeordnet sind. Fügen Sie die Tabelle "Aktivitäten" und andere einzelne Tabellen hinzu, deren Daten sie in der Canvas-App anzeigen möchten.

Jedes Mal, wenn Sie einen Datensatz zu (z. B. der Tabelle "Aufgaben") hinzufügen, wird ein Datensatz in der Tabelle "Aktivität" mit den Feldern erstellt, die in allen Aktivitätstabellen gemeinsam sind. Lesen Sie die Aktivitätstabelle , um weitere Details zu erhalten.

Das folgende Beispiel zeigt, dass beim Auswählen eines Kontos alle diesem Konto zugeordneten Aktivitäten angezeigt werden:

Polymorphe Aktivitäten.

Die Datensätze werden aus der Tabelle "Aktivität" angezeigt. Sie können die IsType-Funktion jedoch weiterhin verwenden, um zu ermitteln, welche Art von Aktivität sie sind. Bevor Sie IsType mit einem Tabellentyp verwenden, müssen Sie die erforderliche Datenquelle hinzufügen.

Durch Verwendung dieser Formel können Sie den Datensatztyp in einem Beschriftung-Steuerelement innerhalb des Katalogs anzeigen:

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

New Polymorphic-IsType.

Zugreifen auf die Liste der Notizen für einen Datensatz

Wenn Sie eine Tabelle erstellen, können Sie Anlagen aktivieren. Wenn Sie das Kontrollkästchen zum Aktivieren von Anhängen aktivieren, erstellen Sie eine Hinsichtlich-Beziehung zu der Anmerkungen-Tabelle, wie diese Grafik für die Konten-Tabelle:

Notizenfeld.

Filterung

Sie können nicht basierend auf dem Feld "Bezug" lesen oder filtern. Die umgekehrte Eins-zu-viele-Beziehung der Notizen ist jedoch verfügbar. Zum Auflisten aller Notizen, die einer Kontotabelle zugeordnet sind, können Sie die folgende Formel verwenden:

First( Accounts ).Notes
Patch

Sie können das Feld "Notizen" in einer Tabelle nicht mithilfe von Patch festlegen. Um einen Datensatz zur Notizentabelle einer Tabelle hinzuzufügen, können Sie die Relate-Funktion verwenden. Erstellen Sie zuerst die Notiz, wie in diesem Beispiel gezeigt:

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

Nächste Schritte

Siehe auch

Was ist Dataverse?