Del via


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

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:

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

  1. Opret en tom lærredapp til tablets.

  2. Vælg Data>Tilføj data i venstre rude. Tilføj derefter tabellerne Konti og Kontakter.

    Tom app med to datakilder: konti og kontakter.

  3. Vælg + (Indsæt) >Layout>Tomt lodret galleri.

    Indsæt et Gallery-kontrolelement med et tomt lodret layout.

  4. Vælg Opret forbindelse til data, og vælg derefter Kontakter som datakilde.

  5. Indstil galleriets layout til Titel og undertitel.

    Åbn layoutvælgeren fra ruden Egenskaber.

    Indstil layout til Titel og undertitel.

  6. Åbn listen Title1 i ruden Data, og vælg derefter Fulde navn.

    Indstil titelværdi.

  7. Vælg Subtitle1-kontrolelementet til etiketter.

    Indstil undertitelværdi.

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

    Skærmen er nu fuldført og viser konti og kontakter blandet sammen i galleriet.

    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