Funksjonene AsType og IsType
Gjelder: Lerretsapper
Modelldrevne apper
Power Pages
Power Platform CLI
Kontrollerer om en oppføringsreferanse er en bestemt tabelltype (IsType) og behandler referansen som denne typen (AsType).
Notat
PAC CLI pac power-fx-kommandoer støtter ikke IsType.
Description
Funksjonene AsType og IsType kan brukes til å konvertere oppføringsreferanser (for eksempel polymorfe oppslag i Dataverse) og typeløse objekter til objekter med type som kan brukes direkte.
Oppføringsreferanser
Les Forstå oppføringsreferanser og polymorfiske oppslag for å få en bredere innføring og mer informasjon.
Et oppslagsfelt refererer vanligvis til oppføringer i en bestemt tabell. Siden tabelltypen er godt etablert, kan du få tilgang til feltene i oppslaget ved å bruke enkel punktnotasjon. First( Accounts ).'Primary Contact'.'Full Name' går for eksempel fra tabellen Forretningsforbindelser til oppføringen Primær kontakt i Kontakter-tabellen og trekker ut Fullt navn-feltet.
Microsoft Dataverse støtter også polymorfe oppslagsfelter, som kan referere til oppføringer fra et sett med tabeller, slik som i disse eksemplene.
Oppslagsfelt | Kan referere til |
---|---|
Eier | Brukere eller Teams |
Kunde | Forretningsforbindelser eller Kontakter |
Angående | Forretningsforbindelser, Kontakter, Kunnskapsartikler osv. |
I formler i lerretsapper kan du bruke oppføringsreferanser til å arbeide med polymorfiske oppslag. Siden en oppføringsreferanse kan referere til ulike tabeller, er det ikke mulig å vite hvilke felter som er tilgjengelige ved kjøretid, når du skriver en formel. Notasjonen Record.Field er ikke tilgjengelig. Disse formlene må tilpasses oppføringene som appen treffer på når den kjører.
IsType-funksjonen tester om en oppføringsreferanse refererer til en bestemt tabelltype. Funksjonen returnerer en boolsk verdi som SANN eller USANN.
AsType-funksjonen behandler en oppføringsreferanse som en bestemt tabelltype, også kjent som konvertering. Du kan bruke resultatet som om det er en oppføring i tabellen, og på nytt bruke notasjonen Record.Field til å få tilgang til alle feltene i denne oppføringen. Det oppstår en feil hvis referansen ikke er av den bestemte typen.
Bruk disse funksjonene sammen for først å teste tabelltypen for en oppføring og deretter behandle den som en oppføring av denne typen, slik at feltene er tilgjengelige:
If( IsType( First( Accounts ).Owner, Users ),
AsType( First( Accounts ).Owner, Users ).'Full Name',
AsType( First( Accounts ).Owner, Teams ).'Team Name'
)
Disse funksjonene er bare nødvendige hvis du har tilgang til feltene i en oppføringsreferanse. Du kan for eksempel bruke oppføringsreferanser i Filter-funksjonen uten IsType eller AsType:
Filter( Accounts, Owner = First( Users ) )
På samme måte kan du bruke oppføringsreferanser med Patch-funksjonen:
Patch( Accounts, First( Accounts ), { Owner: First( Teams ) } )
Når de brukes i en oppføringskontekst, for eksempel i en Gallery- eller Edit form-kontroll, kan det hende at du trenger den globale tvetydighetsoperatoren for å referere til tabelltypen. Denne formelen vil for eksempel være effektiv for et galleri som viser en liste over kontakter der Firmanavn er et Kunde-oppslag:
If( IsType( ThisItem.'Company Name', Accounts ),
AsType( ThisItem.'Company Name', Accounts ).'Account Name',
AsType( ThisItem.'Company Name', Contacts ).'Full Name'
)
Angi typen for begge funksjoner via navnet på datakilden som er koblet til tabellen. Hvis formelen skal fungere, må du også legge til en datakilde i appen for alle typer du vil teste eller endre. Du må for eksempel legge til Brukere-tabellen som en datakilde hvis du vil bruke IsType og AsType med et Eier-oppslag og oppføringer fra denne tabellen. Du kan bare legge til datakildene du faktisk bruker, i appen. Du trenger ikke å legge til alle tabellene som oppslaget kan referere til.
Hvis oppføringsreferansen er tom, returnerer IsType USANN, og AsType returnerer tom. Alle felter i en tom oppføring vil være tomme.
Typeløse objekter
Viktig!
- Bruk av AsType og IsType med typeløse objekter er en eksperimentell funksjon.
- Eksperimentelle funksjoner er ikke ment for produksjonsbruk og kan være ufullstendige. Disse funksjonene er tilgjengelige før en offisielle utgivelsen slik at du kan få tidlig tilgang og gi tilbakemeldinger. Mer informasjon: Forstå eksperimentelle funksjoner og tilbaketrukne funksjoner i lerretsapper
- Virkemåten som beskrives i denne artikkelen, er bare tilgjengelig når den eksperimentelle funksjonen Brukerdefinerte typer i Innstillinger > Kommende funksjoner > Eksperimentell er aktivert (den er deaktivert som standard).
- Tilbakemeldingen din er viktig for oss. Fortell oss hva du synes i Power Apps-fellesskapsformumet for eksperimentelle funksjoner.
Et typeløst objekt fra en nett-API eller [ParseJSON-funksjonen] må konverteres til et objekt med type før det kan brukes i Power Fx. Alternativer for å gjøre dette inkluderer:
- Implisitt typsetting av feltet på det punktet det brukes. For eksempel, et objekt konverteres til et tall hvis det brukes med
+
-operatoren, hvis det kan konverteres til et tall. Dette alternativet kan ha uventede konverteringer og kan ikke konvertere poster og tabeller som helhet. - Skriv eksplisitt inn hvert felt individuelt med funksjonene Decimal, Text, DateTime, GUID og andre typekonstruktørfunksjoner. Dette er det mest inngripende for formlene, siden hvert felt må utføres separat.
- Skriv eksplisitt inn JSON med det andre argumentet i ParseJSON-funksjonen. Dette er et enkelt alternativ der en unngår behov for det typeløse objektet.
- Skriv eksplisitt inn et typeløst objekt ved hjelp av AsType-funksjonen. Du kan også teste typen før du prøver konverteringen med IsType-funksjonen.
Syntaks
AsType( RecordReference , TableType )
- RecordReference – obligatorisk. En oppføringsreferanse, ofte et oppslagsfelt som kan referere til en oppføring i enhver tabell blant mange tabeller.
- TableType – obligatorisk. Den bestemte tabellen som oppføringen skal konverteres til.
AsType(UntypedObject, TypeSpecification)
- UntypedObject – obligatorisk. En oppføringsreferanse, ofte et oppslagsfelt som kan referere til en oppføring i enhver tabell blant mange tabeller.
- TypeSpecification – obligatorisk. Et typenavn eller en typespesifikasjon som er definert med Type-funksjonen.
IsType( RecordReference, TableType )
- RecordReference – obligatorisk. En oppføringsreferanse, ofte et oppslagsfelt som kan referere til en oppføring i enhver tabell blant mange tabeller.
- TableType – obligatorisk. Den bestemte tabellen du vil teste for.
IsType(UntypedObject, TypeSpecification)
- UntypedObject – obligatorisk. En oppføringsreferanse, ofte et oppslagsfelt som kan referere til en oppføring i enhver tabell blant mange tabeller.
- TypeSpecification – obligatorisk. Et typenavn eller en typespesifikasjon som er definert med Type-funksjonen.
Eksempler
Oppføringsreferanser
Forstå oppføringsreferanser og polymorfiske oppslag inneholder omfattende eksempler.
Opprett en tom lerretsapp for nettbrett.
Velg Data>Legg til data i den venstre ruten. Legg deretter til tabellene Forretningsforbindelser og Kontakter.
I ruten til venstre velger du + (Sett inn) >Oppsett>Tomt loddrett galleri.
Velg Koble til data, og velg deretter Kontakter som datakilden.
Angi oppsettet for galleriet til Tittel og undertittel.
I Data-ruten åpner du Title1-listen, og velger deretter Fullt navn.
Velg Subtitle1-etikettkontrollen.
Angi Text-egenskapen for Subtitle1 til denne formelen:
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' )
Undertittelen i galleriet viser disse verdiene:
- "--" hvis Firmanavn er tomt.
- "Forretningsforbindelse: " og feltet Navn på forretningsforbindelse fra tabellen Forretningsforbindelser hvis Firmanavn-feltet refererer til en forretningsforbindelse.
- "Kontakt: " og feltet Fullt navn fra Kontakter-tabellen hvis Firmanavn-feltet refererer til en kontakt.
Resultatene kan avvike fordi eksempeldataene kan ha blitt endret for å vise flere typer resultater.
Typeløse objekter
Eksemplene nedenfor viser en enkel JSON-post tolket på forskjellige måter av ParseJSON, AsType og IsType i Pac CLI Power Fx REPL.
I dette første eksemplet gis ingen typeinformasjon til ParseJSON, så den returnerer et typeløst objekt.
>> Set( rec, ParseJSON( "{""a"":1}" ) )
rec: <Untyped: Use Value, Text, Boolean, or other functions to establish the type>
Feltet konverteres implisitt til et tall når det brukes i en numerisk kontekst.
>> 1 + rec.a
2
Som et alternativ konverterer dette eksemplet eksplisitt posten til en typeangitt Power Fx-post med det andre argumentet til ParseJSON.
>> ParseJSON( "{""a"":1}", Type( {a: Number} ) )
{a:1}
Og et annet alternativ, dette eksemplet konverterer eksplisitt posten til en typeangitt Power Fx-post ved hjelp av AsType.
>> AsType( ParseJSON( "{""a"":1}" ), Type( {a: Number} ) )
{a:1}
Til slutt, hvis vi ikke var sikre, tester dette eksemplet typen før den konverteres med IsType-funksjonen.
>> IsType( ParseJSON( "{""a"":1}" ), Type( {a: Number} ) )
true