Citiți în limba engleză

Partajați prin


Funcțiile AsType și IsType

Se aplică pentru: Aplicații Canvas Aplicații bazate pe model Power Pages Power Platform CLI

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

Notă

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

Descriere

Funcțiile AsType și IsType pot fi utilizate pentru a converti referințe de înregistrări (de exemplu căutări polimorfe în Dataverse) și obiecte netipizate la obiecte tipizate care pot fi utilizate direct.

Înregistrați referințe

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.

Câmp de căutare Pot face refere la
Proprietar Utilizatori sau Echipe
Client Conturi sau Persoane de contact
Referitor la 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 se poate referi la diferite tabele, nu este clar care câmpuri sunt disponibile în timpul execuției atunci când scrieți o formulă. Notarea Record.Field nu este disponibilă. Aceste formule trebuie să se adapteze la înregistrările pe care aplicația le întâlnește atunci când rulează.

Funcția IsType testă dacă o referință de înregistrare se referă la un anumit tip de tabel. Funcția returnează un Boolean TRUE sau FALSE.

Funcția AsType tratează o referință de înregistrare ca un tip de tabel specific, cunoscut și ca casting. Puteți utiliza rezultatul ca și cum ar fi o înregistrare a tabelului și puteți utiliza și notația Record.Field pentru a accesa toate câmpurile acelei înregistrări. O eroare apare dacă referința nu este de tipul specific.

Utilizați aceste funcții împreună pentru a testa mai întâi tipul de tabel al unei înregistrări și apoi tratați-l ca o î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'
)

Aceste funcții sunt necesare numai dacă accesați câmpurile unei referințe de înregistrare. De exemplu, puteți utiliza referințe de înregistrare î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 ) } )

Când este utilizat într-un context de înregistrare, cum ar fi într-un control Galerie sau Editare formular control, operatorul global de dezambiguizare ar putea fi necesar pentru a face referire la tipul tabelului. De exemplu, această formulă ar fi eficientă pentru o galerie care afișează o listă de contacte unde Numele companie este o căutare de 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 prin numele sursei de date conectată la tabel. Pentru ca formula să funcționeze, trebuie să adăugați, de asemenea, o aplicație sursă de date pentru orice tipuri pe care doriți să le testați sau să le alocați. De exemplu, trebuie să adăugați tabelul Utilizatori ca sursă de date dacă doriți să utilizați IsType și AsType cu un Proprietar căutare și înregistrări din tabelul respectiv. Puteți adăuga numai sursele de date pe care le utilizați efectiv în aplicația dvs.; nu este nevoie să adăugați toate tabelele la care ar putea face referire o căutare.

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

Obiecte netipizate

Important

Un obiect netipizat dintr-un API web sau [ParseJSON funcția] trebuie convertit într-un obiect tipizat înainte de a putea fi folosit în Power Fx. Opțiunile pentru a face acest lucru includ:

  1. Introduceți implicit câmpul în punctul în care este utilizat. De exemplu, un obiect este convertit într-un număr dacă este utilizat cu operatorul + , dacă poate fi convertit într-un număr. Această opțiune poate avea conversii neașteptate și nu poate converti înregistrările și tabelele în ansamblu.
  2. Tastați în mod explicit fiecare câmp individual cu Decimal, Text, DateTime, GUID și alte funcții de constructor de tip. Acesta este cel mai invaziv pentru formulele dvs., deoarece fiecare câmp trebuie făcut separat.
  3. Tastați în mod explicit JSON cu al doilea argument al funcției ParseJSON . Aceasta este o opțiune ușoară care evită necesitatea obiectului netipificat.
  4. Introduceți în mod explicit un obiect netipizat folosind funcția AsType . De asemenea, puteți testa tipul înainte de a încerca conversia cu funcția IsType .

Sintaxă

AsType( 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 în care ar trebui convertită înregistrarea.

AsType( UntypedObject, TypeSpecification )

  • UntypedObject - Obligatoriu. O referință de înregistrare, adesea un câmp de căutare care se poate referi la o înregistrare în oricare dintre tabelele multiple.
  • TypeSpecification - Obligatoriu. Un nume de tip sau o specificație de tip definită cu funcția Tip funcția.

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 să testați.

IsType( UntypedObject, TypeSpecification )

  • UntypedObject - Obligatoriu. O referință de înregistrare, adesea un câmp de căutare care se poate referi la o înregistrare în oricare dintre tabelele multiple.
  • TypeSpecification - Obligatoriu. Un nume de tip sau o specificație de tip definită cu funcția Tip funcția.

Exemple

Înregistrați referințe

Î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 Date>Adăugați date. Și apoi, adăugați tabele Conturi și Contacte.

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

  3. În panoul din stânga, selectați + (Insert) >Aspect>Galerie verticală 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.
    • Câmpul „Cont:” și apoi Nume de cont din tabelul Conturi dacă câmpul Numele companiei se referă la un cont.
    • Câmpul „Contact:” și apoi Nume complet din tabelul Persoane de contact dacă câmpul Numele companiei se referă la o persoane de contact.

    Rezultatele dvs. pot diferi, deoarece datele eșantionului ar fi putut fi modificate pentru a afișa mai multe tipuri de rezultate.

Obiecte netipizate

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

În acest prim exemplu, nu sunt furnizate informații de tip pentru ParseJSON, așa că returnează un obiect netipizat.

>> Set( rec, ParseJSON( "{""a"":1}" ) )
rec: <Untyped: 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 tastată cu al doilea argument în ParseJSON.

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

Și o altă alternativă, acest exemplu transformă în mod explicit înregistrarea într-o înregistrare tip Power Fx utilizând AsType.

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

În cele din urmă, dacă nu eram siguri, acest exemplu testează tipul înainte de a-l converti cu funcția IsType .

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