Zdieľať cez


Funkcie AsType a IsType

Platí pre: aplikácie plátna aplikácie riadené modelom Power Pages Power Platform CLI

Skontroluje, či odkaz na záznam je špecifický typ tabuľky (IsType) a zaobchádza s odkazom ako s týmto typom (AsType).

Poznámka

PAC CLI príkazy pac power-fx nepodporujú IsType.

Description

Funkcie AsType a IsType možno použiť na konverziu odkazov na záznamy (napríklad polymorfné vyhľadávania v Dataverse) a netypované objekty na typizované objekty, ktoré možno priamo použiť.

Referencie záznamov

Prečítajte si Porozumenie referenciám na záznamy a polymorfným vyhľadávaniam pre širší úvod a ďalšie podrobnosti.

Vyhľadávacie pole zvyčajne odkazuje na záznamy v konkrétnej tabuľke. Pretože typ tabuľky je dobre zavedený, pristupujte k poliam vyhľadávania pomocou jednoduchého bodkového zápisu. Napríklad First( Accounts ).'Primary Contact'.'Full Name' prejde z tabuľky Accounts na záznam Primary Contact v tabuľke Contacts a extrahuje pole Full Name.

Microsoft Dataverse podporuje aj polymorfné vyhľadávacie polia, ktoré môžu odkazovať na záznamy z množiny tabuliek, ako v týchto príkladoch.

Vyhľadávacie pole Môže odkazovať na
Vlastník Používatelia alebo Tímy
Zákazník Účty alebo Kontakty
Čo sa týka Účty, Kontakty, Znalostné články atď.

Vo vzorcoch aplikácie plátna používajte odkazy na záznamy pri práci s polymorfnými vyhľadávaniami. Pretože odkaz na záznam môže odkazovať na rôzne tabuľky, nie je jasné, ktoré polia sú dostupné za behu pri písaní vzorca. Záznam Record.Field nie je k dispozícii. Tieto vzorce sa musia prispôsobiť záznamom, s ktorými sa aplikácia stretne pri spustení.

Funkcia IsType testuje, či odkaz na záznam odkazuje na konkrétny typ tabuľky. Funkcia vráti logickú hodnotu PRAVDA alebo NEPRAVDA.

Funkcia AsType zaobchádza s odkazom na záznam ako so špecifickým typom tabuľky, známym aj ako casting. Výsledok môžete použiť, akoby išlo o záznam tabuľky, a znova použiť zápis Záznam.Pole pre prístup do všetkých polí tohto záznamu. Ak referencia nie je špecifického typu, vyskytne sa chyba.

Pomocou týchto funkcií môžete najskôr otestovať typ tabuľky záznamu a potom s ním zaobchádzať ako so záznamom daného typu, aby boli polia k dispozícii:

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

Tieto funkcie sú potrebné iba pri prístupe k poliam odkazu na záznam. Napríklad môžete použiť odkazy na záznamy vo funkcii Filter bez IsType alebo AsType:

Filter( Accounts, Owner = First( Users ) )

Podobne môžete použiť odkazy na záznamy pomocou funkcie Patch:

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

Pri použití v kontexte záznamu, napríklad v rámci Galérie alebo Upraviť formulár ovládací prvok < Na odkaz na typ tabuľky môže byť potrebný /a48>globálny operátor jednoznačnosti . Tento vzorec by bol napríklad účinný pre galériu, ktorá zobrazuje zoznam kontaktov, kde Názov spoločnosti je vyhľadávaním Zákazník:

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

Pre obe funkcie zadajte typ prostredníctvom názvu zdroja údajov pripojeného k tabuľke. Aby vzorec fungoval, musíte do aplikácie pridať zdroj údajov pre všetky typy, ktoré chcete testovať alebo pretypovať. Napríklad musíte pridať tabuľku Používatelia ako zdroj údajov, ak chcete použiť IsType a AsType s vyhľadávaním Vlastníka a záznamy z tejto tabuľky. Môžete pridať iba zdroje údajov, ktoré skutočne používate vo svojej aplikácii; nemusíte pridávať všetky tabuľky, na ktoré by vyhľadávanie mohlo odkazovať.

Ak je odkaz na záznam prázdny, IsType vráti NEPRAVDA a AsType vráti prázdnu hodnotu. Všetky polia prázdneho záznamu sú tiež prázdne.

Objekty bez typu

Dôležité

Objekt bez typu z webového rozhrania API alebo funkcie [ParseJSON ] je potrebné skonvertovať na typizovaný objekt, aby sa dal použiť v Power Fx. Možnosti, ako to urobiť, zahŕňajú:

  1. Implicitne zadajte pole v mieste, kde sa používa. Napríklad objekt sa skonvertuje na číslo, ak sa používa s operátorom + , ak ho možno skonvertovať na číslo. Táto možnosť môže mať neočakávané konverzie a nemôže konvertovať záznamy a tabuľky ako celok.
  2. Explicitne zadajte každé pole jednotlivo pomocou Desatinné, Text, Dátum a čas, GUID a ďalšie funkcie konštruktora typov. Toto je najinvazívnejšie pre vaše vzorce, pretože každé pole musí byť vykonané samostatne.
  3. Explicitne zadajte JSON s druhým argumentom funkcie ParseJSON . Toto je jednoduchá možnosť, ktorá sa vyhne potrebe nezadaného objektu.
  4. Explicitne zadajte nezadaný objekt pomocou funkcie AsType . Pred pokusom o konverziu môžete tiež otestovať typ pomocou funkcie IsType .

Syntax

AsType( Referencia záznamu, Typ tabuľky )

  • RecordReference – povinné. Odkaz na záznam, často vyhľadávacie pole, ktoré môže odkazovať na záznam v ktorejkoľvek z viacerých tabuliek.
  • TableType - povinné. Konkrétna tabuľka, do ktorej by sa mal záznam pretypovať.

AsType( UntypedObject, Špecifikácia typu )

  • UntypedObject – povinné. Odkaz na záznam, často vyhľadávacie pole, ktoré môže odkazovať na záznam v ktorejkoľvek z viacerých tabuliek.
  • Špecifikácia typu – povinné. Názov typu alebo špecifikácia typu definovaná pomocou funkcie Typ.

IsType( Referencia záznamu, Typ tabuľky )

  • RecordReference – povinné. Odkaz na záznam, často vyhľadávacie pole, ktoré môže odkazovať na záznam v ktorejkoľvek z viacerých tabuliek.
  • TableType - povinné. Konkrétna tabuľka, pre ktorú sa má testovať.

IsType( UntypedObject, Špecifikácia typu )

  • UntypedObject – povinné. Odkaz na záznam, často vyhľadávacie pole, ktoré môže odkazovať na záznam v ktorejkoľvek z viacerých tabuliek.
  • Špecifikácia typu – povinné. Názov typu alebo špecifikácia typu definovaná pomocou funkcie Typ.

Príklady

Referencie záznamov

Porozumenie odkazom na záznamy a polymorfným vyhľadávaniam obsahuje rozsiahle príklady.

  1. Vytvorte prázdnu aplikáciu plátna pre tablety.

  2. Na ľavej table vyberte Údaje>Pridať údaje. A potom pridajte tabuľky Obchodné vzťahy a Kontakty.

    Prázdna aplikácia s dvoma zdrojmi údajov: obchodné vzťahy a kontakty.

  3. Na ľavej table vyberte možnosť + (Vložiť) >Rozloženie>Prázdna vertikálna galéria.

    Vloženie ovládacieho prvku Galéria s orientáciou Prázdne vertikálne.

  4. Vyberte Pripojiť k údajom a potom vyberte Kontakty ako zdroj údajov.

  5. Nastavte rozloženie galérie na Nadpis a podnadpis.

    Otvorte výber rozloženia z tably vlastností.

    Nastavte rozloženie na názov a podnadpis.

  6. Na table Údaje otvorte zoznam Title1 a potom vyberte Celé meno.

    Nastavte hodnotu titulku.

  7. Vyberte ovládací prvok označenia Subtitle1.

    Nastavte hodnotu titulkov.

  8. Nastavte vlastnosť Text prvku Subtitle1 na tento vzorec:

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

    Obrazovka je teraz dokončená a zobrazuje účty a kontakty zmiešané v galérii.

    Podnadpis v galérii zobrazuje tieto hodnoty:

    • „--“, ak je 'Názov spoločnosti' is prázdny.
    • „Obchodný vzťah:“ a potom pole Názov obchodného vzťahu z tabuľky Obchodné vzťahy , ak pole Názov spoločnosti odkazuje na obchodný vzťah.
    • „Kontakt:“ a potom pole Celý názov z tabuľky Kontakty , ak pole Názov spoločnosti odkazuje na kontakt.

    Vaše výsledky sa môžu líšiť, pretože vzorové údaje mohli byť upravené tak, aby zobrazovali viac typov výsledkov.

Objekty bez typu

Nasledujúce príklady ukazujú jednoduchý záznam JSON interpretovaný rôznymi spôsobmi pomocou ParseJSON, AsType a IsType v Pac CLI Power Fx REPL.

V tomto prvom príklade nie sú pre ParseJSON poskytnuté žiadne informácie o type, takže vracia objekt bez typu.

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

Pole sa pri použití v číselnom kontexte implicitne skonvertuje na číslo.

>> 1 + rec.a
2

Ako alternatívu tento príklad explicitne konvertuje záznam na typizovaný Power Fx záznam s druhým argumentom na ParseJSON.

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

A ďalšia alternatíva, tento príklad explicitne konvertuje záznam na typizovaný Power Fx záznam pomocou AsType.

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

Nakoniec, ak by sme si neboli istí, tento príklad otestuje typ pred jeho konverziou pomocou funkcie IsType .

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