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.
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.
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.
Important
- Utilizarea AsType și IsType cu obiecte netipizate este o caracteristică experimentală.
- Funcțiile experimentale nu sunt destinate utilizării în producție și pot să nu fie complete. Aceste funcții sunt disponibile înainte de lansarea oficială, astfel încât să puteți obține acces anticipat și să oferi feedback. Mai multe informații: Înțelegeți caracteristicile experimentale, de previzualizare și perimate în aplicațiile create pe planșă
- Comportamentul descris de acest articol este disponibil numai atunci când Tipuri definite de utilizator funcția experimentală din Setări > Funcții viitoare > Experimental este activat (este dezactivat implicit).
- Feedback-ul dumneavoastră este valoros pentru noi. Spuneți-ne părerea dvs. pe Power Apps forumul comunității cu funcții experimentale.
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:
- 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. - 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.
- 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.
- 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 .
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.
Înțelegeți referințele înregistrărilor și căutările polimorfe conține exemple ample.
Creați o aplicație proiectată pe pânză necompletată pentru tablete.
În panoul din stânga, selectați Date>Adăugați date. Și apoi, adăugați tabele Conturi și Contacte.
În panoul din stânga, selectați + (Insert) >Aspect>Galerie verticală necompletată.
Selectați Conectați-vă la date, apoi selectați Contacte ca sursă de date.
Setați aspectul galeriei la Titlu și subtitlu.
În panoul Date, deschideți lista Title1, apoi selectați Nume complet.
Selectați controlul etichetelor Subtitle1.
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' )
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.
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