Funkce AsType a IsType
Platí pro: aplikace plátna
modelem řízené aplikace
Power Pages
Power Platform CLI
Zkontroluje, zda je odkaz na záznam konkrétní typ tabulky (IsType) a považuje odkaz za tento typ (AsType).
Poznámka:
Příkazy PAC CLI pac power-fx nepodporují IsType.
Description
Funkce AsType a IsType lze použít k převodu odkazů na záznamy (například polymorfní vyhledávání v Dataverse) a netypových objektů na typové objekty, které lze použít přímo.
Odkaz na záznam
Přečtěte si část Principy odkazů na záznamy a polymorfního vyhledávání, kde najdete rozsáhlejší úvod a další podrobnosti.
Vyhledávací pole obvykle odkazuje na záznamy v konkrétní tabulce. Protože typ tabulky je dobře znám, můžete přistupovat k polím vyhledávání pomocí jednoduché tečkové notace. Například First( Účty ).'Primární kontakt'.'Celé jméno' přechází z tabulky Účty do záznamu Primární kontakt v tabulce Kontakty a extrahuje pole Celé jméno.
Microsoft Dataverse také podporuje polymorfní vyhledávací pole, která mohou odkazovat na záznamy ze sady tabulek, jako v těchto příkladech.
Vyhledávací pole | Může odkazovat na |
---|---|
Vlastník | Uživatelé nebo Týmy |
Zákazník | Obchodní vztahy nebo Kontakty |
Týká se | Obchodní vztahy, Kontakty, Články znalostí atd. |
Ve vzorcích canvas-app použijte odkazy na záznamy pro práci s polymorfními vyhledáváními. Protože odkaz na záznam může odkazovat na různé tabulky, není jasné, která pole jsou dostupné za běhu při psaní vzorce. Notace Record.Field není k dispozici. Tyto vzorce se musí přizpůsobit záznamům, se kterými se aplikace při spuštění setkává.
Funkce IsType otestuje, zda odkaz na záznam odkazuje na konkrétní typ tabulky. Funkce vrací logickou hodnotu TRUE nebo FALSE.
Funkce AsType považuje odkaz na záznam za specifický typ tabulky, co je známo také jako přetypování. Výsledek můžete použít, jako by to byl záznam tabulky, a znovu použít zápis Záznam.Pole pro přístup ke všem polím daného záznamu. Pokud odkaz není specifického typu, dojde k chybě.
Společným použitím těchto funkcí nejprve otestujte typ tabulky záznamu a poté s ním zacházejte jako se záznamem tohoto typu, aby byla pole k dispozici:
If( IsType( First( Accounts ).Owner, Users ),
AsType( First( Accounts ).Owner, Users ).'Full Name',
AsType( First( Accounts ).Owner, Teams ).'Team Name'
)
Tyto funkce potřebujete, pouze pokud přistupujete k polím odkazu na záznam. Například můžete použít odkazy na záznamy ve funkci Filter bez IsType nebo AsType:
Filter( Accounts, Owner = First( Users ) )
Podobně můžete použít odkazy na záznamy pomocí funkce Patch:
Patch( Accounts, First( Accounts ), { Owner: First( Teams ) } )
Když se používá v kontextu záznamu, například v ovládacím prvku Gallery nebo Edit form, možná budete muset použít operátor globální víceznačnosti pro odkaz na typ tabulky. Tento vzorec by byl například účinný pro galerii, která zobrazuje seznam kontaktů, kde Název společnosti je vyhledávání pole Zákazník:
If( IsType( ThisItem.'Company Name', Accounts ),
AsType( ThisItem.'Company Name', Accounts ).'Account Name',
AsType( ThisItem.'Company Name', Contacts ).'Full Name'
)
U obou funkcí určíte typ prostřednictvím názvu zdroje dat, který je připojen k tabulce. Aby vzorec fungoval, musíte do aplikace také přidat zdroj dat pro všechny typy, které chcete vyzkoušet nebo přetypovat. Například musíte přidat tabulku Uživatelé jako zdroj dat, pokud chcete použít funkce IsType a AsType s vyhledáváním Vlastník a záznamy z této tabulky. Můžete přidat pouze zdroje dat, které ve své aplikaci skutečně používáte; nemusíte přidávat všechny tabulky, na které by vyhledávání mohlo odkazovat.
Pokud je odkaz na záznam prázdný, funkce IsType vrátí FALSE a AsType vrátí prázdnou hodnotu. Všechna pole prázdného záznamu jsou také prázdná.
Netypové objekty
Důležité
- Použití funkcí AsType a IsType s netypovanými objekty je experimentální funkce.
- Experimentální funkce nejsou určené pro normální používání a nemusí být hotové. Jsou to funkce, které jsou poskytnuté před oficiálním vydáním, abyste si je mohli co nejdříve vyzkoušet a napsat nám své názory. Další informace: Popis experimentálních a vyřazených funkcí nebo funkcí Preview v aplikacích plátna
- Chování, které tento článek popisuje, je k dispozici pouze v případě, že je zapnuta experimentální vlastnost Uživatelem definované typy v části Nastavení > Připravované funkce > Experimentální (ve výchozím nastavení je vypnutá).
- Vaše názory jsou pro nás cenné. Dejte nám vědět, co si myslíte, v komunitním fóru o experimentálníchfunkcích Power Apps.
Netypový objekt z webového rozhraní API nebo [funkce ParseJSON] musí být před použitím v Power Fx převeden na typový objekt. Mezi možnosti, jak toho dosáhnout, patří:
- Implicitně zadejte pole v místě, kde se používá. Například objekt je převeden na číslo, pokud je použit s operátorem
+
, pokud jej lze převést na číslo. Tato možnost může mít neočekávané převody a nemůže převést záznamy a tabulky jako celek. - Explicitně zadejte každé pole jednotlivě pomocí funkcí Decimal, Text, DateTime, GUID a dalších funkcí konstruktoru typu. To je nejinvazivnější pro vaše vzorce, protože každé pole musí být provedeno samostatně.
- Explicitně zadejte JSON s druhým argumentem funkce ParseJSON. Jedná se o snadnou možnost, která se vyhne potřebě netypovaného objektu.
- Explicitně zadejte netypový objekt pomocí funkce AsType. Před pokusem o převod můžete otestovat typ také pomocí funkce IsType.
Syntaxe
AsType( OdkazNaZáznam, TypTabulky )
- OdkazNaZáznam – povinné. Odkaz na záznam, často vyhledávací pole, které může odkazovat na záznam v kterékoli z více tabulek.
- TypTabulky - Požadovaný. Konkrétní tabulka, do které má být záznam přetypován.
AsType( NetypovýObjekt, SpecifikaceTypu )
- NetypovýObjekt – Povinné. Odkaz na záznam, často vyhledávací pole, které může odkazovat na záznam v kterékoli z více tabulek.
- SpecifikaceTypu – Povinné. Název typu nebo specifikace typu definovaná pomocí funkce Type.
IsType( OdkazNaZáznam, TypTabulky )
- OdkazNaZáznam – povinné. Odkaz na záznam, často vyhledávací pole, které může odkazovat na záznam v kterékoli z více tabulek.
- TypTabulky - Požadovaný. Konkrétní tabulka, která bude testována.
IsType( NetypovýObjekt, SpecifikaceTypu )
- NetypovýObjekt – Povinné. Odkaz na záznam, často vyhledávací pole, které může odkazovat na záznam v kterékoli z více tabulek.
- SpecifikaceTypu – Povinné. Název typu nebo specifikace typu definovaná pomocí funkce Type.
Příklady
Odkazy na záznamy
Téma Principy odkazů na záznamy a polymorfního vyhledávání obsahuje rozsáhlé příklady.
Vytvořte prázdnou aplikaci plátna pro tablety.
V levém podokně vyberte Data>Přidat data. A pak přidejte tabulky Účty a Kontakty.
V levém podokně vyberte + (Vložit) >Rozložení>Prázdná svislá galerie.
Vyberte Připojit k datům a potom jako zdroj dat vyberte Kontakty.
Nastavte rozložení galerie na Název a titulek.
V podokně Data otevřete seznam Title1 a vyberte Celé jméno.
Vyberte ovládací prvek popisku Subtitle1.
Nastavte vlastnost Text ovládacího 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' )
Titulek v galerii zobrazuje tyto hodnoty:
- „--“ pokud je 'Název společnosti'prázdný.
- „Účet:“ a poté pole Název účtu z tabulky Účty, když Název společnosti odkazuje na účet.
- „Účet:“ a poté pole Název účtu z tabulky Účty, když Název společnosti odkazuje na účet.
Vaše výsledky se mohou lišit, protože ukázková data mohla být upravena tak, aby zobrazovala více typů výsledků.
Netypové objekty
Následující příklady ukazují jednoduchý záznam JSON interpretovaný různými způsoby pomocí funkcí ParseJSON, AsType a aIsType v Pac CLI Power Fx REPL.
V tomto prvním příkladu nejsou funkci ParseJSON poskytnuty žádné informace o typu, takže vrátí netypový objekt.
>> Set( rec, ParseJSON( "{""a"":1}" ) )
rec: <Untyped: Use Value, Text, Boolean, or other functions to establish the type>
Pole je implicitně převedeno na číslo, pokud je použito v číselném kontextu.
>> 1 + rec.a
2
Alternativně tento příklad explicitně převede záznam na typový záznam Power Fx s druhým argumentem pro ParseJSON.
>> ParseJSON( "{""a"":1}", Type( {a: Number} ) )
{a:1}
A jako další alternativu tento příklad explicitně převede záznam na typový záznam Power Fx pomocí funkce AsType.
>> AsType( ParseJSON( "{""a"":1}" ), Type( {a: Number} ) )
{a:1}
Nakonec, pokud jsme si nebyli jisti, tento příklad otestuje typ před jeho převodem pomocí funkce IsType.
>> IsType( ParseJSON( "{""a"":1}" ), Type( {a: Number} ) )
true