AsType și IsType funcții

Function Applies to
AsType Aplicații pânză Copilot Studio Aplicații bazate pe modele Power Platform CLI Dataverse funcții Power Pages
IsType Aplicații pânză Copilot Studio Aplicații bazate pe modele Dataverse funcții Power Pages

Verifică dacă o referință de înregistrare este un anumit tip de tabel (IsType) și tratează referința ca acel tip (AsType).

Note

COMENZIle PAC CLI pac power-fx nu acceptă IsType.

Description

Funcțiile AsType și IsType pot fi utilizate pentru a efectua conversia referințelor la înregistrări (de exemplu, căutări polimorpice în Dataverse) și a valorilor dinamice la valorile tastate care pot fi utilizate direct.

Record References

Citiți Înțelegerea referințelor la înregistrări și a căutărilor polimorfe pentru o introducere mai largă și mai multe detalii.

Un câmp de căutare se referă de obicei la înregistrările dintr-un anumit tabel. Deoarece tipul tabelului este bine stabilit, accesați câmpurile căutării folosind notația punctuală simplă. De exemplu, Primul (Conturi).„Contact principal”.„Nume complet” trece de la tabelul Conturi la înregistrarea Contact primar în tabelul Contacte și extrage câmpul Nume complet.

Microsoft Dataverse acceptă, de asemenea, câmpuri de căutare polimorfe, care se pot referi la înregistrări dintr-un set de tabele, ca în aceste exemple.

Lookup field Pot face refere la
Owner Utilizatori sau Echipe
Customer Conturi sau Persoane de contact
Regarding Conturi, Persoane de contact, Articole de cunoștințe etc.

În formulele cu aplicații pe pânză, utilizați referințe de înregistrare pentru a lucra cu căutări polimorfe. Deoarece o referință de înregistrare poate face referire la tabele diferite, nu puteți ști ce câmpuri sunt disponibile la momentul rulării atunci când scrieți o formulă. Notarea Record.Field nu este disponibilă. Aceste formule trebuie să se adapteze la înregistrările pe care le întâlnește aplicația atunci când rulează.

Funcția IsType verifică dacă o referință de înregistrare face referire la un anumit tip de tabel. Funcția returnează un Boolean TRUE sau FALSE.

Funcția AsType tratează o referință de înregistrare ca tip specific de tabel, numit și turnare. Utilizați rezultatul ca și cum ar fi o înregistrare a tabelului și utilizați notația Record.Field pentru a accesa toate câmpurile acelei înregistrări. Dacă referința nu este de tipul specific, apare o eroare.

Utilizați aceste funcții împreună pentru a verifica mai întâi tipul de tabel al unei înregistrări, apoi tratați-l ca înregistrare de acel tip, astfel încât câmpurile să fie disponibile:

If( IsType( First( Accounts ).Owner, Users ),
    AsType( First( Accounts ).Owner, Users ).'Full Name',
    AsType( First( Accounts ).Owner, Teams ).'Team Name'
)

Aveți nevoie de aceste funcții doar dacă accesați câmpurile unei referințe de înregistrare. De exemplu, utilizați referințe de înregistrări în funcția Filter fără IsType sau AsType:

Filter( Accounts, Owner = First( Users ) )

În mod similar, puteți utiliza referințe de înregistrare cu funcţia Patch:

Patch( Accounts, First( Accounts ), { Owner: First( Teams ) } )

Atunci când utilizați aceste funcții într-un context de înregistrare, cum ar fi într-un control de formular Galerie sau Editare , poate fi necesar ca operatorul global de dezambiguizare să facă referire la tipul de tabel. De exemplu, această formulă funcționează pentru o galerie care afișează o listă de persoane de contact în care Nume firmă este o căutare client :

If( IsType( ThisItem.'Company Name', Accounts ),
    AsType( ThisItem.'Company Name', Accounts ).'Account Name',
    AsType( ThisItem.'Company Name', Contacts ).'Full Name'
)

Pentru ambele funcții, specificați tipul utilizând numele sursei de date conectate la tabel. Pentru ca formula să funcționeze, adăugați o sursă de date la aplicație pentru orice tipuri pe care doriți să le verificați sau să le difuzați. De exemplu, adăugați tabelul Utilizatori ca sursă de date dacă doriți să utilizați IsType și AsType cu o căutare proprietar și înregistrări din acel tabel. Adăugați doar sursele de date pe care le utilizați în aplicație; nu trebuie să adăugați toate tabelele la care poate face referire o căutare.

Dacă referința de înregistrare este necompletată, IsType returnează FALSE și AsType returnează necompletată. Toate câmpurile unei înregistrări necompletate sunt, de asemenea, necompletate.

Dynamic values

O valoare dinamică dintr-un API web sau din funcția [ParseJSON ] trebuie convertită la o anumită valoare tastată înainte de a o putea utiliza în Power Fx. Iată câteva opțiuni:

  1. Tastați în mod implicit câmpul în momentul în care îl utilizați. De exemplu, un obiect se transformă într-un număr dacă îl utilizați cu + operatorul, dacă poate fi convertit într-un număr. Această opțiune poate provoca conversii neașteptate și nu poate efectua conversia înregistrărilor și tabelelor ca întreg.
  2. Tastați în mod explicit fiecare câmp individual cu Decimal, Text, DateTime, GUID și alte funcții de constructor de tip. Această opțiune este cea mai invazivă pentru formulele dvs., deoarece trebuie să faceți fiecare câmp separat.
  3. Tastați în mod explicit JSON cu al doilea argument al funcției ParseJSON . Această opțiune este simplă și evită necesitatea valorii dinamice .
  4. Tastați în mod explicit o valoare Dinamică utilizând funcția AsType . De asemenea, puteți verifica tipul înainte de a încerca conversia cu funcția IsType .

Syntax

AsType( RecordReference, TableType )

  • RecordReference - Obligatoriu. O referință de înregistrare, adesea un câmp de căutare care face referire la o înregistrare din oricare dintre mai multe tabele.
  • TableType - Obligatoriu. Tabelul specific la care se va face înregistrarea.

AsType( DynamicValue, TypeSpecification )

  • DynamicValue - Obligatoriu. O valoare dinamică din funcția ParseJSON sau din apelul API.
  • TypeSpecification - Obligatoriu. Un nume de tip sau o specificație de tip pe care o definiți cu funcția Type.

IsType( RecordReference, TableType )

  • RecordReference - Obligatoriu. O referință de înregistrare, adesea un câmp de căutare care se poate referi la o înregistrare în oricare dintre tabelele multiple.
  • TableType - Obligatoriu. Tabelul specific pentru care se face testarea.

IsType( DynamicValue, TypeSpecification )

  • DynamicValue - Obligatoriu. O valoare dinamică din funcția ParseJSON sau dintr-un apel API.
  • TypeSpecification - Obligatoriu. Un nume de tip sau o specificație de tip definită cu funcția Tip funcția.

Examples

Record References

Înțelegeți referințele înregistrărilor și căutările polimorfe conține exemple ample.

  1. Creați o aplicație proiectată pe pânză necompletată pentru tablete.

  2. În panoul din stânga, selectați Adăugare date>, apoi adăugați tabele Conturi și Persoane de contact.

    Aplicație necompletată cu două surse de date: conturi și contacte.

  3. În panoul din stânga, selectați + (Inserare) >Galerie>verticală Aspect necompletat.

    Inserați un control de galerie cu un aspect vertical gol.

  4. Selectați Conectați-vă la date, apoi selectați Contacte ca sursă de date.

  5. Setați aspectul galeriei la Titlu și subtitlu.

    Deschideți selectorul de aspect din panoul de proprietăți.

    Setați aspectul la Titlu și subtitrare.

  6. În panoul Date, deschideți lista Title1, apoi selectați Nume complet.

    Setați valoarea titlului.

  7. Selectați controlul etichetelor Subtitle1.

    Setați valoarea subtitrarilor.

  8. Setați proprietatea Text a Subtitle1 la această formulă:

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

    Ecranul este acum complet și arată conturile și contactele amestecate în galerie.

    Subtitlul din galerie arată aceste valori:

    • "--” dacă "Numele Companiei” este necompletat.
    • "Cont: " și câmpul Nume cont din tabelul Conturi , dacă câmpul Nume firmă se referă la un cont.
    • "Persoană de contact: " și câmpul Nume complet din tabelul Persoane de contact , dacă câmpul Nume firmă se referă la o persoană de contact.

    Rezultatele dvs. pot fi diferite, deoarece datele eșantion pot fi modificate pentru a afișa mai multe tipuri de rezultate.

Dynamic values

Următoarele exemple arată o înregistrare JSON simplă interpretată în diverse moduri de ParseJSON, AsTypeși IsType în Pac CLI Power Fx REPL.

În acest prim exemplu, nu se furnizează informații despre tip la ParseJSON, deci returnează o valoare dinamică.

>> Set( rec, ParseJSON( "{""a"":1}" ) )
rec: <Dynamic: Use Value, Text, Boolean, or other functions to establish the type>

Câmpul este convertit implicit într-un număr atunci când este utilizat într-un context numeric.

>> 1 + rec.a
2

Ca alternativă, acest exemplu transformă în mod explicit înregistrarea într-o înregistrare Power Fx tactilă cu al doilea argument în ParseJSON.

>> ParseJSON( "{""a"":1}", Type( {a: Number} ) )
{a:1}

Și o altă alternativă, acest exemplu efectuează în mod explicit conversia înregistrării într-o înregistrare Power Fx tastată utilizând AsType.

>> AsType( ParseJSON( "{""a"":1}" ), Type( {a: Number} ) )
{a:1}

În sfârșit, dacă nu sunteți sigur, acest exemplu testează tipul înainte de a efectua conversia acestuia cu funcția IsType .

>> IsType( ParseJSON( "{""a"":1}" ), Type( {a: Number} ) )
true