Del via


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!

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:

  1. 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.
  2. 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.
  3. 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.
  4. 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.

  1. Opprett en tom lerretsapp for nettbrett.

  2. Velg Data>Legg til data i den venstre ruten. Legg deretter til tabellene Forretningsforbindelser og Kontakter.

    Tom app med to datakilder: kontoer og kontakter.

  3. I ruten til venstre velger du + (Sett inn) >Oppsett>Tomt loddrett galleri.

    Sett inn en galleri-kontroll med et tomt loddrett oppsett.

  4. Velg Koble til data, og velg deretter Kontakter som datakilden.

  5. Angi oppsettet for galleriet til Tittel og undertittel.

    Åpne oppsettvelgeren fra egenskaper-ruten.

    Angi oppsett til Tittel og undertittel.

  6. I Data-ruten åpner du Title1-listen, og velger deretter Fullt navn.

    Angi tittelverdi.

  7. Velg Subtitle1-etikettkontrollen.

    Angi undertittelverdi.

  8. 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'
    )
    

    Skjermen er nå fullført og viser kontoer og kontakter i galleriet.

    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