AsType- og IsType-funktioner
Gælder for: Canvas apps
Modelbaserede apps
Power Pages
Power Platform CLI
Kontrollerer om en postreference er en bestemt tabeltype (IsType) og behandler referencen som en bestemt type (AsType).
Bemærk
PAC CLI pac power-fx-kommandoer understøtter ikke IsType.
Description
Funktionerne AsType og IsType kan bruges til at konvertere postreferencer (f.eks. polymorfe opslag i Dataverse) og objekter uden type til typeobjekter, der kan bruges direkte.
Postreferencer
Læs om Forstå postreferencer og polymorfe opslag for at få vist en bredere introduktion og flere detaljer.
Et opslagsfelt henviser som regel til poster i en bestemt tabel. Da tabeltypen er veletableret, kan du få adgang til felterne i opslaget ved hjælp af en simpel punktnotation. Det kan f.eks. være, at Første( Konti ).'Primær kontakt'.'Fulde navn' går fra tabellen Konti til posten Primær kontakt i tabellen Kontakter og udtrækker feltet Fulde navn.
Microsoft Dataverse understøtter også polymorfe opslagsfelter, der kan referere til poster fra et sæt tabeller, som i disse eksempler.
Opslagsfelt | Kan referere til |
---|---|
Ejer | Brugere eller Teams |
Kunde | Konti eller Kontakter |
Angående | Konti, Kontakter, Videnartikler osv. |
I lærredappformularer skal du bruge postreferencer for at arbejde med polymorfe opslag. Da en postreference kan referere til forskellige tabeller, ved du ikke, hvilke felter der er tilgængelige, når du skriver en formel. Record.Field-notationen er ikke tilgængelig. Disse formler skal tilpasses de poster, som appen støder på, når den kører.
Funktionen IsType kontrollerer, om en postreference refererer til en bestemt tabeltype. Funktionen returnerer den booleske værdi SAND eller FALSK.
Funktionen AsType behandler en postreference som en bestemt tabeltype, der undertiden kaldes en støbning. Du kan bruge resultatet, som om det var en post i tabellen, og igen bruge notationen Post.Felt til at få adgang til alle felterne i den pågældende post. Der opstår en fejl, hvis referencen ikke er af den specifikke type.
Brug disse funktioner sammen til først at teste tabeltypen af en post og derefter behandle den som en post af den pågældende type, så felterne er tilgængelige:
If( IsType( First( Accounts ).Owner, Users ),
AsType( First( Accounts ).Owner, Users ).'Full Name',
AsType( First( Accounts ).Owner, Teams ).'Team Name'
)
Du skal kun bruge disse funktioner, hvis du har adgang til felterne i en postreference. Du kan f.eks. bruge postreferencer i funktionen Filter uden IsTypeeller AsType:
Filter( Accounts, Owner = First( Users ) )
På samme måde kan du bruge postreferencer vha. funktionen Patch:
Patch( Accounts, First( Accounts ), { Owner: First( Teams ) } )
Når det bruges i en postkontekst, f.eks. i et Gallery- eller Edit form-kontrolelement , globale operator til fjernelse af flertydige udtryk kan det være nødvendigt at bruge den til at referere til tabeltypen. Formlen vil f.eks. være effektiv for et galleri, hvor der vises en liste over kontakter, hvor Kontonavn er et Kunde-opslag:
If( IsType( ThisItem.'Company Name', Accounts ),
AsType( ThisItem.'Company Name', Accounts ).'Account Name',
AsType( ThisItem.'Company Name', Contacts ).'Full Name'
)
Til begge funktioner skal du angive typen gennem navnet på den datakilde, der er knyttet til tabellen. Hvis formlen skal fungere, skal du også føje en datakilde til appen for de typer, du vil teste eller konvertere. Du skal f.eks. tilføje tabellen Brugere som en datakilde, hvis du vil bruge IsType og AsType med et opslag af typen Ejer og poster fra den pågældende tabel. Du kan kun tilføje de datakilder, du rent faktisk bruger i din app. Du behøver ikke at tilføje alle de tabeller, som et opslag kan referere til.
Hvis postreferencen er tom, returnerer IsType værdien FALSK, og AsType returnerer en tom værdi. Alle felter i en tom post er også tomme.
Objekter uden type
Vigtige oplysninger
- Brug af AsType og IsType med objekter uden type er en eksperimentel funktion.
- Eksperimentelle funktioner er ikke beregnet til produktion og kan være ufuldendte. Disse funktioner er tilgængelige før en officiel udgivelse, så du kan få tidlig adgang og give feedback. Flere oplysninger: Forstå eksperimentelle funktioner, funktioner i forhåndsversion og udgåede funktioner i lærredapps
- Den funktionsmåde, der beskrives i denne artikel, er kun tilgængelig, når Brugerdefinerede typers eksperimentelle funktion i Indstillinger > Kommende funktioner > Eksperimentel er slået til (den er deaktiveret som standard).
- Din feedback er værdifuld for os. Fortæl os, hvad du mener, i Power Apps-communityforummet for eksperimentelle funktioner.
Et objekt uden type fra en web-API eller funktionen [ParseJSON-funktion] skal konverteres til et typeobjekt, før det kan bruges i Power Fx. Mulighederne for at gøre dette omfatter:
- Angiv typen implicit for feltet på det sted, hvor det bruges. For eksempel, hvis et objekt bruges sammen med
+
operatoren, og det kan konverteres til et tal, bliver det konverteret til et tal. Denne indstilling kan have uventede konverteringer og kan ikke konvertere poster og tabeller som helhed. - Skriv eksplicit hvert felt individuelt med Decimal, Text, DateTime, GUID og andre typer konstruktørfunktioner. Dette er det mest indgribende for dine formler, da hvert felt skal udføres separat.
- Angiv specifikt JSON med det andet argument til funktionen ParseJSON. Dette er en nem mulighed, der undgår at have brug for objektet uden type.
- Skriv eksplicit et objekt uden type ved hjælp af AsType-funktionen. Du kan også teste typen, før du forsøger konverteringen med funktionen IsType.
Syntaks
AsType( Postreference, Tabeltype )
- RecordReference – kræves. En postreference, ofte et opslagsfelt, der kan referere til en post i den ene af flere tabeller.
- Tabeltype – påkrævet. Den specifikke tabel, som posten skal støbes til.
AsType( UntypedObject, TypeSpecification )
- UntypedObject - Påkrævet. En postreference, ofte et opslagsfelt, der kan referere til en post i den ene af flere tabeller.
- TypeSpecification - Påkrævet. Et typenavn eller en typespecifikation, der er defineret med Type-funktionen.
IsType( Postreference, Tabeltype )
- RecordReference – kræves. En postreference, ofte et opslagsfelt, der kan referere til en post i den ene af flere tabeller.
- Tabeltype – påkrævet. Den specifikke tabel, der skal testes for.
IsType( UntypedObject, TypeSpecification )
- UntypedObject - Påkrævet. En postreference, ofte et opslagsfelt, der kan referere til en post i den ene af flere tabeller.
- TypeSpecification - Påkrævet. Et typenavn eller en typespecifikation, der er defineret med Type-funktionen.
Eksempler
Postreferencer
Forstå postreferencer og polymorfe opslag indeholder omfattende eksempler.
Opret en tom lærredapp til tablets.
Vælg Data>Tilføj data i venstre rude. Tilføj derefter tabellerne Konti og Kontakter.
Vælg + (Indsæt) >Layout>Tomt lodret galleri.
Vælg Opret forbindelse til data, og vælg derefter Kontakter som datakilde.
Indstil galleriets layout til Titel og undertitel.
Åbn listen Title1 i ruden Data, og vælg derefter Fulde navn.
Vælg Subtitle1-kontrolelementet til etiketter.
Indstil egenskaben Text af Subtitle1 til denne formel:
If( IsBlank( ThisItem.'Company Name' ), "--", IsType( ThisItem.'Company Name', Accounts ), "Account: " & AsType( ThisItem.'Company Name', Accounts ).'Account Name', "Contact: " & AsType( ThisItem.'Company Name', Contacts ).'Full Name' )
Undertitlen i galleriet vises disse værdier:
- "--" hvis "Kontonavn" er tomt.
- "Konto: " og derefter feltet Kontonavn fra tabellen Konti, hvis feltet Kontonavn refererer til et firma.
- "Kontakt: " og derefter feltet Fulde navn fra tabellen Kontakter, hvis feltet Kontonavn refererer til en kontakt.
Resultaterne kan være anderledes, da eksempeldataene kan være blevet ændret, så de viser flere typer resultater.
Objekter uden type
Følgende eksempler viser en simpel JSON-post fortolket på forskellige måder af ParseJSON, AsType og IsType i Pac CLI Power Fx REPL.
I dette første eksempel leveres der ingen typeoplysninger til ParseJSON, så det returnerer et objekt uden type.
>> Set( rec, ParseJSON( "{""a"":1}" ) )
rec: <Untyped: Use Value, Text, Boolean, or other functions to establish the type>
Feltet konverteres implicit til et tal, når det bruges i en numerisk sammenhæng.
>> 1 + rec.a
2
Som et alternativ konverterer dette eksempel eksplicit posten til en post med type i Power Fx med det andet argument til ParseJSON..
>> ParseJSON( "{""a"":1}", Type( {a: Number} ) )
{a:1}
Og et andet alternativ, dette eksempel konverterer eksplicit posten til en post med type i Power Fx ved hjælp af AsType.
>> AsType( ParseJSON( "{""a"":1}" ), Type( {a: Number} ) )
{a:1}
Endelig, hvis vi ikke var sikre, tester dette eksempel typen, før den konverteres med IsType-funktionen.
>> IsType( ParseJSON( "{""a"":1}" ), Type( {a: Number} ) )
true