Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
| Function | Applies to |
|---|---|
| AsType |
|
| IsType |
|
Zkontroluje, jestli je odkaz na záznam určitým typem tabulky (IsType) a považuje odkaz za tento typ (AsType).
Note
PAC CLI příkazy pac power-fx nepodporují IsType.
Description
AsType Pomocí IsType funkcí lze převést odkazy na záznamy (například polymorfní vyhledávání v Dataverse) a dynamické hodnoty na zadané hodnoty, které lze použít přímo.
Record References
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.
| Lookup field | Může odkazovat na |
|---|---|
| Owner | Uživatelé nebo Týmy |
| Customer | Obchodní vztahy nebo Kontakty |
| Regarding | 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, nemůžete při psaní vzorce zjistit, která pole jsou k dispozici za běhu. Notace Record.Field není k dispozici. Tyto vzorce se musí přizpůsobit záznamům, na které aplikace při spuštění narazí.
Funkce IsType zkontroluje, jestli 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 konkrétní typ tabulky, označovaný také jako přetypování. Výsledek použijete, jako by se jedná o záznam tabulky a pro přístup ke všem polím tohoto záznamu použijte notaci Record.Field . Pokud odkaz není konkrétního typu, dojde k chybě.
Pomocí těchto funkcí nejprve zkontrolujte typ tabulky záznamu a pak s ním zacházíte 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 jenom v případě, že přistupujete k polím odkazu na záznam. Například použijete 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 ) } )
Pokud tyto funkce použijete v kontextu záznamu, například v ovládacím prvku Galerie nebo Formulář pro úpravy , budete možná potřebovat globální operátor nejednoznačnosti pro odkazování na typ tabulky. Tento vzorec například funguje pro galerii, která zobrazuje seznam kontaktů, ve kterých je název společnostivyhledáváním zákazníka :
If( IsType( ThisItem.'Company Name', Accounts ),
AsType( ThisItem.'Company Name', Accounts ).'Account Name',
AsType( ThisItem.'Company Name', Contacts ).'Full Name'
)
Pro obě funkce zadejte typ pomocí názvu zdroje dat připojeného k tabulce. Aby vzorec fungoval, přidejte do aplikace zdroj dat pro všechny typy, které chcete zkontrolovat nebo přetypovat. Můžete například přidat tabulku Users jako zdroj dat, pokud chcete použít IsType a AsType s vyhledáváním a záznamy vlastníka z této tabulky. Přidejte pouze zdroje dat, které používáte ve své aplikaci; Nemusíte přidávat všechny tabulky, na které by vyhledávání mohlo odkazovat.
Pokud je odkaz na záznam prázdný, IsType vrátí hodnotu FALSE a AsType vrátí prázdnou hodnotu. Všechna pole prázdného záznamu jsou také prázdná.
Dynamic values
Dynamická hodnota z webového rozhraní API nebo funkce [ParseJSON] musí být před použitím v Power Fx převedena na konkrétní typovou hodnotu. Tady jsou některé možnosti:
- Implicitně zadejte pole v okamžiku, kdy ho použijete. Například objekt se převede na číslo, pokud ho použijete s operátorem
+, pokud jej lze převést na číslo. Tato možnost může způsobit 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. Tato možnost je pro vzorce nejinvazivnější, protože každé pole musíte provést samostatně.
- Explicitně zadejte JSON s druhým argumentem funkce ParseJSON. Tato možnost je snadná a nevyžaduje dynamickou hodnotu.
- Explicitně zadejte dynamickou hodnotu pomocí AsType funkce. Před pokusem IsType o převod funkce můžete také zkontrolovat typ.
Syntax
AsType( Reference, TableType )
- OdkazNaZáznam – povinné. Odkaz na záznam, často vyhledávací pole, které odkazuje na záznam v některé z několika tabulek.
- TypTabulky - Požadovaný. Konkrétní tabulka, do které se má záznam přetypovat.
AsType( DynamicValue, TypeSpecification )
- DynamicValue – povinné. Dynamická hodnota z funkce ParseJSON nebo volání rozhraní API.
- SpecifikaceTypu – Povinné. Název typu nebo specifikace typu, kterou definujete pomocí funkce Typ.
IsType( Reference, TableType )
- 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, pro která se má testovat.
IsType( DynamicValue, TypeSpecification )
- DynamicValue – povinné. Dynamická hodnota z funkce ParseJSON nebo volání rozhraní API.
- SpecifikaceTypu – Povinné. Název typu nebo specifikace typu definovaná pomocí funkce Type.
Examples
Record References
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) >Prázdnou svislou galerii>.
Vyberte Připojit k datům a potom jako zdroj dat vyberte Kontakty.
Nastavte rozložení galerie na Název a podnadpis.
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 pole Název účtu z tabulky Klienti , pokud pole Název společnosti odkazuje na účet.
- "Kontakt: " a pole Celé jméno z tabulky Kontakty , pokud pole Název společnosti odkazuje na kontakt.
Výsledky se můžou lišit, protože ukázková data je možné upravit tak, aby zobrazovala více typů výsledků.
Dynamic values
Následující příklady ukazují jednoduchý záznam JSON interpretovaný různými způsoby ParseJSON a AsTypeIsType v Pac CLI Power Fx REPL.
V tomto prvním příkladu není pro ParseJSON zadána žádná informace o typu, takže vrátí dynamickou hodnotu.
>> Set( rec, ParseJSON( "{""a"":1}" ) )
rec: <Dynamic: 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 další alternativou, tento příklad explicitně převede záznam na typový záznam Power Fx pomocí AsType.
>> AsType( ParseJSON( "{""a"":1}" ), Type( {a: Number} ) )
{a:1}
Pokud si nejste jistí, tento příklad otestuje typ před převodem pomocí IsType funkce.
>> IsType( ParseJSON( "{""a"":1}" ), Type( {a: Number} ) )
true