Microsoft Dataverse en de verbeterde gegevensbron-ervaring

Samenzicht

Vanaf mei 2021 zijn veel functies die voorheen optioneel waren nu het standaardgedrag voor alle nieuwe apps. Dit artikel biedt richtlijnen voor gebruikers die een app hebben ontwikkeld vóór de introductie van nieuwe functies, over hoe ze hun app kunnen upgraden om gebruik te maken van de nieuwste functionaliteiten.

Systeemeigen Dataverse

Als u een canvas-app hebt gemaakt met de Dataverse- of de Dynamics 365 Connector vóór november 2019, dan geniet u mogelijk niet van de voordelen van het gebruik van de huidige native verbindingservaring voor de Dataverse.

Als u uw app vóór november 2019 hebt gemaakt en geen gebruikmaakt van een native Dataverse-verbinding, vindt u in instellingen op het tabblad Aankomende functies op het tabblad 'Buiten gebruik gesteld' de optie Gegevensbronervaring en Microsoft Dataverse-weergaven samen met de relationele gegevens, keuzes en andere nieuwe functies voor Microsoft Dataverse.

Hoe voer ik een upgrade uit?

Voer een upgrade van uw app uit door de instellingen van de functies te inspecteren en vervolgens de onderstaande instructies te volgen:

Relationele gegevens, optiesets en andere nieuwe functies voor Microsoft Dataverse staat op Uit

Controleer het gedeelte Buiten gebruik gesteld onder Aankomende functies. Als deze is ingesteld op Uit, gaat u verder met de volgende instructies als eerste stap in de conversie.

Als u Relationele gegevens, optiesets en andere nieuwe functies voor Microsoft Dataverse niet ziet in Algemene instellingen of als de functie al op Aan is ingesteld, sla dan de volgende stappen over en ga door naar het volgende gedeelte.

  • Stap 1: stel de functie Weergavenamen gebruiken in op Aan:

    1. Stel de functie Weergavenamen gebruiken in op Aan.
    2. Wacht tot Health Monitor klaar is met het analyseren van uw app.
    3. Sla uw app op, sluit deze en open hem vervolgens opnieuw.
    4. Los alle formulefouten op.
    5. Sla uw app op, sluit deze en open hem vervolgens opnieuw.

    Mogelijke fouten en suggesties:

    Het is mogelijk dat sommige van de nieuw getoonde weergavenamen conflicteren met de weergavenamen voor andere tabellen, velden of besturingselementen. Mogelijk hebt u bijvoorbeeld een besturingselement en een veld met dezelfde naam. U kunt de naam van het besturingselement wijzigen door een unieke waarde toe te kennen.

    Voor elk conflict in de weergavenaam voor velden en tabellen ziet u mogelijk een formule die een tabel verwacht, maar wordt omgezet in een veldnaam met een lokaal bereik.

    Gebruik de vierkante haak met een @-symbool om een algemeen bereik aan te geven zodat het naar de tabel wordt omgezet, bijvoorbeeld [@tableName].

  • Stap 2: stel de functies Relationele gegevens, optiesets en andere nieuwe functies voor Microsoft Dataverse en GUID-gegevenstypen gebruiken in plaats van tekenreeksen in op Aan:

    1. Stel de functie Relationele gegevens, optiesets en andere nieuwe functies voor Microsoft Dataverse in op Aan.
    2. Stel de functie GUID-gegevenstypen gebruiken in plaats van tekenreeksen in op Aan.
    3. Wacht tot Health Monitor klaar is met het analyseren van uw app.
    4. Los alle formulefouten op.
    5. Sla uw app op, sluit deze en open hem vervolgens opnieuw.

    Mogelijke fouten en suggesties:

    Het is mogelijk dat er in dit stadium fouten optreden als u een keuzeveld of hardgecodeerde GUID-tekstwaarden gebruikt.

    • Keuzewaarden: als u een keuzeveld met een tekst-id voor de keuzewaarde gebruikt, gebruikt u in plaats daarvan de puntnotatie om naar de keuzewaarde te verwijzen. Wijzig bijvoorbeeld Patch(Accounts, OptionSet1 = “12345”) in Patch(Accounts, OptionSet.Item1), waarbij Item1 overeenkomt met de waarde 12345.
      Meer informatie: Gedetailleerde voorbeelden.
    • GUID's: als u een statische GUID-tekenreeks gebruikt, zoals 015e45e1044e49f388115be07f2ee116, converteer u deze naar een functie die een GUID-object retourneert; bijvoorbeeld GUID(“015e45e1044e49f388115be07f2ee116”).
    • Zoekopdrachten: als u zoekopdrachtfuncties gebruikt om opzoekwaarden op het eerste niveau te krijgen, zoals Lookup(Contacts, ‘contactID’ = ThisItem.ContactID”), overweeg dan in plaats ervan het gebruik van ThisItem.PrimaryContacts (waarbij PrimaryContacts de naam van de tabel is).

Gegevensbronervaring en Microsoft Dataverse-weergaven verbeteren staat op Uit

Gebruik de volgende instructie om Gegevensbronervaring en Microsoft Dataverse-weergaven verbeteren in te stellen op Aan:

  1. Verwijder uw bestaande Dataverse-gegevensbronverbindingen.
  2. Stel de functie Gegevensbronervaring en Microsoft Dataverse-weergaven verbeteren in op Aan:
  3. Voeg de Dataverse-verbinding toe met de nieuwe ervaring voor gegevensbronselectie.
  4. Sla uw toepassing op.

Notitie

Als uw toepassing extreem groot is, kan het enige tijd duren voordat uw gegevensbronverbindingen weer zijn toegevoegd. Sluit de toepassing niet tijdens dit proces.

Canvas-apps converteren met de Dynamics 365 Connector

Als u uw app die de Dynamics 365 Connector gebruikt wilt converteren, moet u de verbindingen verwijderen en toevoegen aan uw gegevensbronnen. Gebruik de onderstaande stappen om uw verbindingen naar uw gegevensbronnen te converteren.

  1. Controleer of de functie Gegevensbronervaring en Microsoft Dataverse-weergaven verbeteren is ingesteld op Aan.

  2. Verwijder uw bestaande Dynamics 365-gegevensbronverbindingen.

  3. Voeg de verbindingen met uw gegevensbronnen toe aan de Dataverse via de nieuwe ervaring voor gegevensbronselectie.

    Notitie

    • Als u verbindingen hebt met andere omgevingen (anders dan de huidige), selecteert u de categorie Tabel en dan de optie Meer (...) om de omgeving te wijzigen. U kunt vervolgens een tabel uit een andere omgeving selecteren om aan uw toepassing toe te voegen. Cross-tenant-verbindingen werken niet met de verbeterde native connector. U moet gegevensintegratie gebruiken om cross-tenant-toegang te krijgen tot gegevens.
    • U moet aan een van de volgende vereisten voldoen om een omgeving te kunnen zien waaraan u de verbinding wilt toevoegen:
  4. Sla uw toepassing op.

Mogelijke fouten en suggesties:

Het is mogelijk dat er fouten optreden tijdens het converteren: als u geen weergavenamen gebruikt, als u GUID-tekenreeksen gebruikt of als u een keuze gebruikt.

  • Als de naam van het besturingselement conflicteert, wijzig dan de naam van het besturingselement zodat deze verschillend en uniek is.
  • Voor conflicten in de weergavenaam voor velden en tabellen ziet u mogelijk een formule die een tabel verwacht, maar wordt omgezet in een veldnaam met een meer lokaal bereik. Gebruik de vierkante haak met een @-symbool om een algemeen bereik aan te geven zodat het naar de tabel wordt omgezet, bijvoorbeeld [@tableName].
  • Keuzewaarden: als u een keuzeveld met een tekst-id voor de keuzewaarde gebruikt, gebruikt u in plaats daarvan de puntnotatie om naar de keuzewaarde te verwijzen. Wijzig bijvoorbeeld Patch(Accounts, OptionSet1 = “12345”) in Patch(Accounts, OptionSet.Item1), waarbij Item1 overeenkomt met de waarde 12345.
    Meer informatie: Gedetailleerde voorbeelden.
  • GUID's: als u een statische GUID-tekenreeks gebruikt, zoals 015e45e1044e49f388115be07f2ee116, converteer u deze naar een functie die een GUID-object retourneert; bijvoorbeeld GUID(“015e45e1044e49f388115be07f2ee116”).
  • Zoekopdrachten: als u zoekopdrachtfuncties gebruikt om opzoekwaarden op het eerste niveau te krijgen, zoals Lookup(Contacts, ‘contactID’ = ThisItem.ContactID”), overweeg dan in plaats ervan het gebruik van ThisItem.PrimaryContacts (waarbij PrimaryContacts de naam van de tabel is).
  • Raadpleeg het gedeelte Gedetailleerde voorbeelden hieronder voor alle polymorfe referenties.

Gedetailleerde voorbeelden

Het kan lastig zijn om uw app te converteren om de nieuwe gegevenstypen Optiesets en Twee opties te gebruiken met ondersteunende besturingselementen tijdens het upgraden van een app om de nieuwe functie Gegevensbronervaring en Microsoft Dataverse-weergaven verbeteren te gebruiken.

Keuzen

Er zijn eerder aparte _myfield- en _myfield_label-velden gebruikt voor keuze. Nu is er een enkele myfield die kan worden gebruikt voor zowel landinstellingsonafhankelijke vergelijkingen als om het landinstellingsspecifieke label te verkrijgen.

Keuzegegevenskaarten verwijderen en toevoegen

We adviseren u bestaande gegevenskaarten te verwijderen en weer toe te voegen om met uw keuze te werken. Als u bijvoorbeeld met de tabel Account en de keuze Categorie werkt, ziet u dat de eigenschap DataField van de gegevenskaart is ingesteld op _accountcategorycode_label. In de veldlijst kunt u zien dat de gegevenskaart van het type Tekenreeks is:

OptionSet met oude stijlnaam.

Met het nieuwe functie Gegevensbronervaring en Microsoft Dataverse-weergaven verbeteren ziet u _accountcategorycode_label niet langer. Deze is vervangen door accountcategorycode. Uw kaart is nu gemarkeerd als aangepast en u ziet fouten. Verwijder de oude gegevenskaart en voeg Keuze weer toe. De nieuwe gegevenskaart is Keuze-bewust.

OptionSet met nieuwe stijlnaam.

De expressies van het keuzefilter bewerken om de nieuwe syntaxis te gebruiken

Als u voorheen een Keuze-waarde in een filterexpressie wilde gebruiken, moest u het veld Waarde gebruiken. Bijvoorbeeld:

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

U moet deze formule bewerken. Keuzetekst-id wordt niet langer gebruikt voor de waarde. Deze expressie moet worden bijgewerkt naar:

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

'Category(Accounts)' is de naam van de opsomming die wordt gebruikt in het veld Categorie van de tabel Accounts. Dit is een lokale keuze. U kunt hier meer lezen over lokale en algemene keuzen: Algemene keuzen.

Patch-instructies voor keuzen bewerken om nieuwe syntaxis te gebruiken

Hieronder volgt een voorbeeld van een eerdere patch-instructie voor keuze:

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

U moet uw instructies bijwerken om dit formulier te volgen:

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

Ondubbelzinnig maken van keuze

Als de weergavenaam van een keuzeveld en de naam van de keuze hetzelfde zijn, moet u de formule ondubbelzinnig maken. Om het voorbeeld van de accountcategoriecode te blijven gebruiken, impliceert @ om de keuze te gebruiken, niet het veld.

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

Twee opties

Ja/Nee-gegevenskaarten verwijderen en toevoegen

Verwijder bestaande gegevenskaarten en voeg deze weer toe om met Ja/Nee te werken. De gegevenstypen werden eerder herkend als eenvoudige boolean - zoals true/on en false/off zonder labels:

Ja/Nee - oude stijl.

Met het nieuwe functie Gegevensbronervaring en Microsoft Dataverse-weergaven verbeteren wordt uw kaart nu gemarkeerd als aangepast en ziet u fouten. Verwijder de oude gegevenskaart en voeg de keuze weer toe. U ziet standaard een bewerkingsbesturingselement met twee opties na de toevoeging.

Ja/Nee - nieuwe stijl.

Als u de wisselknop verkiest voor uw booleaanse veld, kunt u de gegevenskaart ontgrendelen en het besturingselement op de gegevenskaart vervangen door een wisselknop. U moet deze eigenschappen ook instellen op de wisselknop.

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 )

Wisselknop voor Twee opties.

Patch-instructies met Twee opties verfijnen

Bij gebruik van de functie Patch met Twee opties zou alles normaal moeten werken. Het ondersteunt direct gebruik van true en false, vergelijkbaar met Boolean. Het enige verschil is dat als u de waarde eerder in een labelbesturingselement had gezet dat true en false aangaf, het nu de labels van Twee opties laat zien.

Polymorfe zoekopdrachten

De volgende richtlijnen helpen bij het upgraden van uw toepassing als er naar wordt verwezen in polymorfe velden. Polymorfe zoekopdrachten uit hetzelfde veld ondersteunen verwijzingen naar een beperkte set van meerdere tabellen. Net als verwijzingen in andere talen is een recordverwijzing een verwijzing naar een specifieke record in een specifieke tabel. Een recordverwijzing bevat de tabelinformatie waardoor kan worden verwezen naar een record in verschillende andere tabellen, wat verschilt van een normale zoekopdracht die alleen naar records in één tabel kan verwijzen.

Het veld Eigenaar van een record openen, instellen en filteren

Bijvoorbeeld het veld Eigenaar kan verwijzen naar een record in de tabel Gebruikers of de tabel Teams. Hetzelfde opzoekveld in verschillende records kan verwijzen naar records in verschillende tabellen.

Polymorf veld Eigenaar.

Polymorf met Filter en Patch

Recordreferenties kunnen net als een complete record worden gebruikt:

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

Aangezien een verwijzing naar verschillende tabellen kan verwijzen, moet u specifiek zijn. U kunt ThisItem.Owner.Name niet gebruiken omdat het naamveld in de tabel Team Teamnaam is en het naamveld in de tabel Gebruiker Volledige naam is. Power Apps weet niet naar welk type zoekopdracht u verwijst, totdat u de app uitvoert.

U lost dit probleem als volgt op:

  1. Voeg de gegevensbronnen voor de entiteitstypen toe die Eigenaar zouden kunnen zijn. In het huidige voorbeeld is dat Gebruikers en Teams.
  2. Gebruik meer functies om uw intentie duidelijk te maken.

Er zijn twee nieuwe functies waar u gebruik van kunt maken:

  • IsType – Controleert of een recordverwijzing van een bepaald tabeltype is.
  • AsType – Converteert een recordverwijzing naar een bepaald tabeltype.

Met deze functies kunt u een formule schrijven die de naam van de eigenaar weergeeft uit twee velden met verschillende namen, gebaseerd op het tabeltype van de eigenaar:

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

Galerie met AsType.

Algemene ondubbelzinnigheidsoperator voor [@Teams] en [@Users] wordt gebruikt om ervoor te zorgen dat u verwijst naar het algemene tabeltype. Hoewel dit in dit geval niet nodig is, wordt aanbevolen om altijd duidelijk te zijn. Een-op-veel-relaties conflicteren vaak in het recordbereik van de galerie, en op deze manier kan die verwarring worden vermeden.

Open en stel het veld Bedrijfsnaam (een Klant-gegevenstype) van de tabel Contactpersonen in

Het opzoekveld Klant is eveneens een polymorfe zoekopdracht die erg lijkt op Eigenaar. Elke tabel kan slechts één eigenaarveld hebben. Maar een tabel kan nul, één of meer opzoekvelden voor Klant bevatten. De systeemtabel Contactpersonen bevat het veld Bedrijfsnaam en dat is een opzoekveld voor Klant. Lees De velden van een klant weergeven voor nadere details.

Open en stel het veld Betreffende van activiteitentabellen in, zoals Faxen, Telefoongesprekken, E-mailberichten

Polymorfe zoekopdrachten zijn niet beperkt tot Accounts en Contactpersonen. De lijst met tabellen is uitbreidbaar met aangepaste tabellen. De tabel Faxen heeft bijvoorbeeld een polymorf Betreffende-opzoekveld dat kan verwijzen naar de tabellen Accounts, Contactpersonen en andere tabellen. Als u een galerie hebt met de gegevensbron ingesteld op Faxen, kunt u de volgende formule gebruiken om de naam weer te geven die is gekoppeld aan het opzoekveld Betreft.

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

Galerie met Betreft.

Lees Opzoekvelden Betreft en Relaties van Betreft voor nadere details.

De lijst met alle activiteiten voor een record openen

In Dataverse worden tabellen zoals Faxen, Taken, E-mails, Notities, Telefoongesprekken, Brieven en Chats aangeduid als activiteiten. U ook uw eigen aangepaste activiteitentabellen maken.

U kunt activiteiten van een bepaald type weergeven (zoals Faxen of Belastingen) of alle activiteiten die aan een tabel zijn gekoppeld, zoals een account. Voeg de tabel Activiteiten en andere afzonderlijke tabellen toe waarvan u de gegevens wilt weergeven in de canvas-app.

Elke keer dat u een record toevoegt (bijvoorbeeld aan de tabel Taken), wordt er een record in de tabel Activiteit gemaakt met de velden die in alle activiteitentabellen gemeenschappelijk zijn. Lees activiteitentabel voor meer details.

Het volgende voorbeeld laat zien dat wanneer u een account selecteert, alle activiteiten worden weergegeven die aan dat account zijn gekoppeld:

Polymorfe activiteiten.

De records worden weergegeven vanuit de tabel Activiteit. Maar u kunt nog steeds de functie IsType gebruiken om te identificeren wat voor type activiteit het is. Nogmaals: voordat u IsType met een tabeltype gebruikt, moet u de noodzakelijke gegevensbron toevoegen.

Door deze formule te gebruiken, kunt u het recordtype weergeven in een labelbesturingselement in de galerie:

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

Nieuw Polymorphic-IsType.

De lijst met alle notities voor een record openen

Wanneer u een tabel maakt, kunt u bijlagen inschakelen. Als u het selectievakje voor het inschakelen van bijlagen inschakelt, maakt u een Betreffende-relatie met de tabel Notities, zoals deze afbeelding laat zien voor de tabel Accounts:

Veld Notities.

Filteren

U kunt niet lezen of filteren op basis van het veld Betreft. De omgekeerde een-op-veel-relatie van Notities is echter wel beschikbaar. Als u alle notities wilt weergeven die aan een accounttabel zijn gekoppeld, kunt u de volgende formule gebruiken:

First( Accounts ).Notes
Patch

U kunt het veld Notities niet op een tabel instellen met Patch. Als u een record wilt toevoegen aan een tabel (bijvoorbeeld de tabel Notities), kunt u de functie Relateren gebruiken. Maak eerst de notitie, zoals in dit voorbeeld:

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

Volgende stappen

Zie ook

Wat is Dataverse?

Notitie

Laat ons uw taalvoorkeuren voor documentatie weten! Beantwoord een korte enquête. (houd er rekening mee dat deze in het Engels is)

De enquête duurt ongeveer zeven minuten. Er worden geen persoonlijke gegevens verzameld (privacyverklaring).