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:
- Schalten Sie Anzeigenamen verwenden Feature Ein ein.
- Warten Sie, bis der Gesundheitsmonitor die Analyse Ihrer Apps abgeschlossen hat.
- Speichern, schließen und öffnen Sie Ihre Apps erneut.
- Beheben Sie alle Formelfehler.
- 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:
- Schalten Sie Relationale Daten, Optionssätze und andere neue Funktionen für Microsoft Dataverse Funktion Ein ein.
- Schalten Sie GUID-Datentypen anstelle von Zeichenketten verwenden Feature Ein ein.
- Warten Sie, bis der Gesundheitsmonitor die Analyse Ihrer Apps abgeschlossen hat.
- Beheben Sie alle Formelfehler.
- 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”)
inPatch(Accounts, OptionSet.Item1)
, wobeiItem1
dem Wert12345
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 VerwendungThisItem.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:
- Entfernen Sie Ihre bestehenden Dataverse-Datenquellenverbindungen.
- Schalten Sie Ein die Funktion Erfahrung mit der Datenquelle verbessern und Microsoft Dataverse Ansichten ein.
- Fügen Sie die Dataverse-Verbindung unter Verwendung der neuen Datenquellenauswahlerfahrung hinzu.
- 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.
Stellen Sie sicher, dass die Funktion Erfahrung mit Datenquellen verbessern und Microsoft Dataverse-Ansichten auf Ein eingestellt ist.
Entfernen Sie Ihre bestehenden Dynamics 365 Datenquellenverbindungen.
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:
- Sie sind der Besitzer der App, oder die App wird für Sie als Mitbesitzer freigegeben.
- Sie sind Mitglied in mindestens einer dieser Sicherheitsrollen: Umgebungsadministrator, Umgebungsersteller oder Systemadministrator. Weitere Informationen zu den Sicherheitsrollen in einer Umgebung finden Sie unter Konfigurieren der Benutzersicherheit für Ressourcen in einer Umgebung.
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”)
inPatch(Accounts, OptionSet.Item1)
, wobeiItem1
dem Wert12345
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 VerwendungThisItem.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:
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.
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:
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.
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 )
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 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 ) })
Polymorph mit einem Katalog mit dem Namen des Besitzers
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:
- Fügen Sie die Datenquellen für die Entitätstypen hinzu, die Besitzer sein könnten (im aktuellen Beispiel: Benutzer und Teams).
- 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' )
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',
"" )
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:
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")
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:
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
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).