Sdílet prostřednictvím


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é

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ří:

  1. 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.
  2. 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ě.
  3. Explicitně zadejte JSON s druhým argumentem funkce ParseJSON. Jedná se o snadnou možnost, která se vyhne potřebě netypovaného objektu.
  4. 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.

  1. Vytvořte prázdnou aplikaci plátna pro tablety.

  2. V levém podokně vyberte Data>Přidat data. A pak přidejte tabulky Účty a Kontakty.

    Prázdná aplikace se dvěma zdroji dat: obchodní vztahy a kontakty.

  3. V levém podokně vyberte + (Vložit) >Rozložení>Prázdná svislá galerie.

    Vložte ovládací prvek Galerie s rozložením Prázdná vertikální.

  4. Vyberte Připojit k datům a potom jako zdroj dat vyberte Kontakty.

  5. Nastavte rozložení galerie na Název a titulek.

    V podokně vlastností otevřete výběr rozvržení.

    Nastavte rozložení na Název a titulek.

  6. V podokně Data otevřete seznam Title1 a vyberte Celé jméno.

    Nastavte hodnotu názvu.

  7. Vyberte ovládací prvek popisku Subtitle1.

    Nastavte hodnotu titulku.

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

    Obrazovka je nyní kompletní a zobrazuje obchodní vztahy a kontakty promíchané v galerii.

    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