Microsoft Dataverse und die Verbesserung der Datenquellenumgebung

Überblick

Im Mai 2021 wurden viele Features, die bisher optional waren, das Standardverhalten für alle neuen Apps. Dieser Artikel bietet Benutzenden, die eine App vor der Einführung neuer Features entwickelt haben, eine Anleitung, wie sie ihre App aktualisieren können, um die neuesten Funktionen zu nutzen.

Natives Dataverse

Wenn Sie eine Canvas-App vor November 2019 mit Dataverse oder dem Dynamics 365 Connector erstellt haben, nutzen Sie möglicherweise nicht die Vorteile der aktuellen nativen Verbindungserfahrung für das Dataverse.

Wenn Sie Ihre App vor November 2019 erstellt haben und keine native Dataverse-Verbindung verwenden, finden Sie in den Einstellungen auf der Registerkarte „Kommende Features“ auf der Registerkarte „Zurückgezogen“ die Option Verbesserung der Erfahrung mit Datenquellen und Microsoft Dataverse-Ansichten zusammen mit den Relationalen Daten, Auswahlmöglichkeiten und anderen neuen Funktionen für Microsoft Dataverse.

Wie führe ich ein Upgrade durch?

Aktualisieren Sie Ihre App, indem Sie sich die Einstellungen der Funktionen ansehen und dann den nachstehenden Anweisungen folgen:

Relationale Daten, Optionssätze und andere neue Funktionen für Microsoft Dataverse ist aus

Informieren Sie sich im Abschnitt Zurückgezogen unter Geplante Funktionen. Falls auf Aus gesetzt, fahren Sie mit den folgenden Anweisungen als ersten Schritt der Konvertierung fort.

Wenn Sie elationale Daten, Optionssätze und weitere neue Funktionen für Microsoft Dataverse in Allgemeine Einstellungen nicht sehen oder wenn es schon An ist, überspringen Sie die folgenden Schritte und fahren Sie fort mit dem nächsten Abschnitt fort.

  • Schritt 1: Schalten Sie Displaynamen verwenden Funktion Ein:

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

    Mögliche Fehler und Vorschläge:

    Es ist möglich, dass einige der neu angezeigten Anzeigenamen mit den Anzeigenamen anderer Tabellen, Felder oder Steuerelemente in Konflikt stehen. Sie können z.B. ein Steuerelement und ein Feld mit demselben Namen haben. Sie können den Namen des Steuerelements mit einem eindeutigen zu fixierenden Wert ändern.

    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 Gültigkeitsbereich anzugeben, damit er in die Tabelle aufgelöst wird; beispielsweise, [@tableName].

  • Schritt 2: Schalten Sie Relationale Daten, Optionssätze und andere neue Funktionen für Microsoft Dataverse und GUID-Datentypen anstelle von Zeichenketten verwenden-Funktionen Ein:

    1. Schalten Sie Relationale Daten, Optionssätze und andere neue Funktionen für Microsoft Dataverse Funktion Ein ein.
    2. Schalten Sie GUID-Datentypen anstelle von Zeichenketten verwenden Feature Ein ein.
    3. Warten Sie, bis der Gesundheitsmonitor die Analyse Ihrer Apps abgeschlossen hat.
    4. Beheben Sie alle Formelfehler.
    5. Speichern, schließen und öffnen Sie Ihre Apps 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 z.B. Patch(Accounts, OptionSet1 = “12345”) in Patch(Accounts, OptionSet.Item1), wobei Item1 dem Wert 12345 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, z.B. GUID(“015e45e1044e49f388115be07f2ee116”).
    • Nachschlagen: Wenn Sie Such-Funktionen verwenden, um Suche-Werte der ersten Ebene zu erhalten, wie Lookup(Contacts, ‘contactID’ = ThisItem.ContactID”), erwägen Sie die Verwendung ThisItem.PrimaryContacts (wobei PrimaryContacts der Name der Tabelle ist).

Erfahrung mit der Datenquelle verbessern und Microsoft Dataverse-Ansichten ist aus

Verwenden Sie die folgende Anweisung, um Erfahrung mit Datenquellen und Microsoft Dataverse Ansichten zu verbessern Funktion Ein zu aktivieren:

  1. Entfernen Sie Ihre bestehenden Dataverse-Datenquellenverbindungen.
  2. Schalten Sie Ein die Funktion Erfahrung mit der Datenquelle verbessern und Microsoft Dataverse Ansichten ein.
  3. Fügen Sie die Dataverse-Verbindung unter Verwendung der neuen Datenquellenauswahlerfahrung hinzu.
  4. Speichern Sie Ihre Anwendung.

Hinweis

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

Konvertieren von Canvas Apps mit dem Dynamics 365 Connector

Um Ihre Apps zu konvertieren, die den Dynamics 365 Connector verwendet, müssen Sie die Verbindungen zu Ihren Datenquellen entfernen und hinzufügen. Verwenden Sie die folgenden Schritte, um Ihre Verbindungen zu Ihren Datenquellen zu konvertieren.

  1. Stellen Sie sicher, dass die Funktion Erfahrung mit Datenquellen verbessern und Microsoft Dataverse-Ansichten auf Ein eingestellt ist.

  2. Entfernen Sie Ihre bestehenden Dynamics 365 Datenquellenverbindungen.

  3. Fügen Sie die Verbindungen zu Ihren Datenquellen mit Hilfe der neuen Datenquellenauswahl-Erfahrung zur Dataverse hinzu.

    Hinweis

    • Wenn Sie Verbindungen zu anderen Umgebungen (außer der aktuellen) haben, wählen Sie die Tabelle Kategorie und dann die Mehr (...) Option zum Ändern der Umgebung. Sie können dann eine Tabelle aus einer anderen Umgebung auswählen, um sie Ihrer Anwendung hinzuzufügen. Cross-Mandanten-Verbindungen funktionieren nicht mit dem verbesserten nativen Konnektor. Sie müssen die Datenintegration verwenden, um mandantenübergreifend auf 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 Steuerelementnamenskonflikte auftreten, ändern Sie den Namen des Steuerelements so, dass er 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 Gültigkeitsbereich anzugeben, damit er in die Tabelle aufgelöst wird; beispielsweise, [@tableName].
  • Auswahlwerte: Wenn Sie ein Auswahlfeld mit einem Textbezeichner für den Auswahlwert verwenden, verwenden Sie stattdessen die Punktnotation, um so auf den Auswahlwert zu verweisen. Ändern Sie z.B. Patch(Accounts, OptionSet1 = “12345”) in Patch(Accounts, OptionSet.Item1), wobei Item1 dem Wert 12345 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, z.B. GUID(“015e45e1044e49f388115be07f2ee116”).
  • Nachschlagen: Wenn Sie Such-Funktionen verwenden, um Suche-Werte der ersten Ebene zu erhalten, wie Lookup(Contacts, ‘contactID’ = ThisItem.ContactID”), erwägen Sie die Verwendung ThisItem.PrimaryContacts (wobei PrimaryContacts der Name der Tabelle ist).
  • Polymorphe Referenzen finden Sie im Abschnitt Detaillierte Beispiele weiter unten.

Detaillierte Beispiele

Konvertieren Ihrer App, um die neuen Steuerelemente Optionssätze und Zwei Optionen mit unterstützenden Steuerelementen zu verwenden, kann bei der Aktualisierung eine Herausforderung darstellen, während die App aktualisiert wird, um die neue Funktion Verbessern Sie das Datenquelle-Erlebnis und Microsoft Dataverse Ansichten zu verwenden.

Optionen

Trennen der _myfield und _myfield_label Felder wurden zuvor 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 ausgewählten Datenkarten

Wir empfehlen, vorhandene Datenkarten zu entfernen und sie wieder hinzuzufügen, um mit Ihrer Wahl zu arbeiten. Wenn Sie beispielsweise mit der Kontotabelle und der Kategorieauswahl arbeiten, sehen Sie, dass die Eigenschaft Datenfeld der Datenkarte auf _accountcategorycode_label festgelegt wurde. In der Feldliste können Sie sehen, dass die Datenkarte einen Typ Zeichenkette hat:

OptionSet mit Namen im alten Stil

Mit der neuen Funktion Verbesserte Erfahrung mit Datenquellen und Microsoft Dataverse-Ansichten sehen Sie nicht mehr _accountcategorycode_label. Es wird durch accountcategorycode ersetzt. Ihre Karte wird nun als Benutzer markiert und Sie werden Fehler sehen. Entfernen Sie die alte Datenkarte und fügen Sie die Wahl zurück. Die neue Datenkarte ist Wahl bewusst.

OptionSet mit neuem Stilnamen

Bearbeiten der Auswahlfilter-Ausdrücke, um eine neue Syntax zu verwenden

Wenn Sie zuvor einen Auswahl-Wert in einem Filterausdruck verwenden wollten, mussten Sie das Feld Wert verwenden. Beispiel: ''

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

Sie müssen diese Formel bearbeiten. Die Auswahltextkennung wird nicht mehr für den Wert verwendet. Dieser Ausdruck sollte auf 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 Entscheidungen finden Sie hier: Globale Entscheidungen.

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 Formular zu folgen:

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

Auswahl Begriffsklärung

Wenn der Anzeigename einer Wahl Feld und der Name der Auswahl gleich sind, müssen Sie die Formel eindeutig machen. Um das Beispiel für den Kontenkategoriecode weiter zu verwenden, @ bedeutet, die Auswahl zu verwenden, nicht das Feld.

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 früher als einfache boolesche Datentypen erkannt - wie wahr/ein und falsch/aus ohne Label:

Ja/Nein – alter Stil

Mit der neuen Funktion Verbesserte Erfahrung mit Datenquellen und Microsoft Dataverse Ansichten wird Ihre Karte jetzt als angepasst markiert und Sie sehen Fehler. Entfernen Sie die alte Datenkarte und fügen Sie die Wahl zurück. Nach dem Hinzufügen wird standardmäßig ein Steuerelement zum Bearbeiten mit zwei Optionen angezeigt.

Ja/Nein – neuer Stil

Wenn Sie den Kippschalter für Ihr boolesches Feld bevorzugen, können Sie die Datenkarte entsperren und stattdessen das Steuerelement in der Datenkarte durch einen Schalter ersetzen. Sie müssen diese Eigenschaften auch auf dem Umschalter einstellen.

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 von true und false, ähnlich wie bei Boolean. 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.

Polymorphe Lookups

Die folgenden Richtlinien helfen bei der Aktualisierung Ihrer Anwendung, wenn sie sich auf polymorphe Felder bezieht. Polymorphe Suchen aus demselben Feld unterstützen Verweise auf einen eingeschränkten Satz von mehreren Tabellen. Ähnlich wie Referenzen in anderen Sprachen ist eine Datensatzreferenz ein Zeiger auf einen bestimmten Datensatz in einer bestimmten Tabelle. Eine Datensatzreferenz enthält die Tabelleninformationen, die es ihr ermöglichen, auf einen Datensatz in mehreren anderen Tabellen zu verweisen, was sich von einer normalen Suche unterscheidet, die nur auf Datensätze in einer Tabelle zeigen 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 Teams verweisen. Das gleiche Nachschlagefeld in verschiedenen Datensätzen könnte auf Datensätze in verschiedenen Tabellen verweisen.

Polymorph-Feld Besitzer

Polymorph mit Filter und Patch

Datensatzreferenzen können genau 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 Namensfeld in der Tabelle Team der Teamnameist, und das Namensfeld in der Tabelle Benutzer ein vollständiger Name ist. 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önnten (im aktuellen Beispiel: Benutzer und Teams).
  2. Verwenden Sie mehr Funktionen, um Ihre Absicht zu verdeutlichen.

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

  • IsType – Prüft, ob eine Datensatzreferenz von einem bestimmten Tabellentyp ist.
  • AsType – Prüft, ob eine Datensatzreferenz von einem bestimmten Tabellentyp ist.

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

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

Greifen Sie auf das Feld Firmenname (einen Kundendatentyp) der Kontakttabelle zu und legen Sie es fest

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

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

Polymorphe Lookups sind nicht auf Konten und Kontakte beschränkt. Die Liste der Tabellen ist mit benutzerdefinierten Tabellen erweiterbar. Die Tabelle Faxe hat beispielsweise ein polymorphes Nachschlagefeld Bezüglich, das auf Konten, Kontakte und andere Tabellen 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 Regarding Lookup-Felder und Regarding Beziehungen für weitere Details.

Zugriff auf die Liste aller Aktivitäten für einen Datensatz

In Dataverse Tabellen wie Faxe, Aufgaben, E-Mails, Notizen, Telefonanrufe, Briefe und Chats werden diese als Aktivitäten festgelegt. Sie können auch Ihre eigenen benutzerdefinierten Aktivitätentabellen erstelle.

Sie können Aktivitäten eines bestimmten Typs (z. B. Fax oder Steuern) oder alle Aktivitäten anzeigen, die mit einer Tabelle wie z. B. einem Konto verknüpft 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 hinzufügen (z. B. der Tabelle Aufgaben), wird ein Datensatz in der Tabelle Aktivität mit den Feldern erstellt, die allen Aktivitätstabellen gemeinsam sind. Lesen Sie Aktivitätstabelle für mehr Details.

Das folgende Beispiel zeigt, dass bei der Auswahl eines Kontos alle mit diesem Konto verbundenen Aktivitäten angezeigt werden:

Polymorphe Aktivitäten

Die Datensätze werden aus der Aktivitätstabelle angezeigt. Sie können aber immer noch die Funktion IsType verwenden, um zu identifizieren, um welche Art von Aktivität es sich handelt. Bevor Sie IsType mit einem Tabellentyp verwenden, müssen Sie erneut das 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")

Neu Polymorpher-IsTyp

Zugriff auf die Liste der Notizen für einen Datensatz

Wenn Sie eine Tabelle erstellen, können Sie Anhänge 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:

Feld Notizen

Filtering

Sie können nicht auf der Basis des Felds Betreffend lesen oder filtern. Die umgekehrte Eins-zu-viele-Beziehung der Notizen ist jedoch verfügbar. Um alle Notizen aufzulisten, die einer Kontotabelle zugeordnet sind, können Sie die folgende Formel verwenden:

First( Accounts ).Notes
Patch

Sie können das Notizenfeld in einer Tabelle nicht mithilfe von Patch festlegen. Um einen Datensatz zur Notiz hinzuzuzufügen, können Sie die Funktion Verknüpfen verwenden. Erstellen Sie zuerst die Notiz, wie in diesem Beispiel:

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

Nächste Schritte

Siehe auch

Was ist Dataverse?

Hinweis

Können Sie uns Ihre Präferenzen für die Dokumentationssprache mitteilen? Nehmen Sie an einer kurzen Umfrage teil. (Beachten Sie, dass diese Umfrage auf Englisch ist.)

Die Umfrage dauert etwa sieben Minuten. Es werden keine personenbezogenen Daten erhoben. (Datenschutzbestimmungen).