Partager via


Fonctions AsType et IsType

S’applique à : Applications canevas Applications pilotées par modèle Power Pages Power Platform CLI

Vérifie si une référence d’enregistrement est un type de table spécifique (IsType) et traite la référence comme ce type (AsType).

Note

Les commandes PAC CLI pac power-fx ne prennent pas en charge IsType.

Description

Les fonctions AsType et IsType peuvent être utilisées pour convertir des références d’enregistrement (par exemple, des recherches polymorphes dans Dataverse) et des objets sans type en objets typés qui peuvent être utilisés directement.

Références d’enregistrement

Lisez Comprendre les références d’enregistrement et les recherches polymorphes pour une introduction plus large et plus de détails.

Un champ de recherche fait généralement référence aux enregistrements d’une table particulière. Le type de table étant bien établi, accédez aux champs de la recherche en utilisant une simple notation par points. Par exemple, First( Accounts ).’Primary Contact’.’Full Name’ passe de la table Comptes à l’enregistrement contact principal dans la table Contacts et extrait le champ Nom complet.

Microsoft Dataverse prend également en charge les champs de recherche polymorphes, qui peuvent faire référence à des enregistrements d’un ensemble de tables, comme dans ces exemples.

Champ de recherche Peut se référer à
Propriétaire Utilisateurs ou Équipes
Client Comptes ou Contacts
Concernant Comptes, Contacts, Articles de base de connaissances, etc.

Dans les formules d’application canevas, utilisez des références d’enregistrement pour travailler avec des recherches polymorphes. Étant donné qu’une référence d’enregistrement peut faire référence à différentes tables, il est difficile de savoir quels champs sont disponibles au moment de l’exécution lorsque vous écrivez une formule. La notation Champ.Enregistrement n’est pas disponible. Ces formules doivent s’adapter aux enregistrements que l’application rencontre lors de son exécution.

La fonction IsType teste si une référence d’enregistrement fait référence à un type de table spécifique. La fonction renvoie un TRUE ou FALSE booléen.

La fonction AsType traite une référence d’enregistrement comme un type de table spécifique, également appelé transtypage. Vous pouvez utiliser le résultat comme s’il s’agissait d’un enregistrement de la table et utiliser à nouveau la notation Record.Field pour accéder à tous les champs de cet enregistrement. Une erreur se produit si la référence n’est pas du type spécifique.

Utilisez ces fonctions ensemble pour tester d’abord le type de table d’un enregistrement, puis le traiter comme un enregistrement de ce type afin que les champs soient disponibles :

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

Ces fonctions ne sont nécessaires que si vous accédez aux champs d’une référence d’enregistrement. Par exemple, vous pouvez utiliser des références d’enregistrement dans la fonction Filter sans IsType ou AsType :

Filter( Accounts, Owner = First( Users ) )

De même, vous pouvez utiliser des références d’enregistrement avec la fonction Patch :

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

Lorsqu’il est utilisé dans un contexte d’enregistrement, comme dans un contrôle Galerie ou Modifier le formulaire, l’opérateur global de désambiguïsation sera peut-être nécessaire pour référencer le type de table. Par exemple, cette formule serait efficace pour une galerie qui affiche une liste de contacts où Nom de la compagnie est un une recherche Client :

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

Pour les deux fonctions, spécifiez le type via le nom de la source de données connectée à la table. Pour que la formule fonctionne, vous devez également ajouter un source de données à l’application pour tous les types que vous souhaitez tester ou caster. Par exemple, vous devez ajouter la table Utilisateurs en tant que source de données si vous souhaitez utiliser IsType et AsType avec une recherche Propriétaire et les enregistrements de cette table. Vous pouvez ajouter uniquement les sources de données que vous utilisez réellement dans votre application ; vous n’avez pas besoin d’ajouter toutes les tables auxquelles une recherche pourrait faire référence.

Si la référence d’enregistrement est Vide, IsType renvoie FALSE et AsType renvoie blank. Tous les champs d’un enregistrement vide sont également vides.

Objets sans type

Important

Un objet sans type d’une API web ou de la [fonction ParseJSON] doit être converti en objet typé pour pouvoir être utilisé dans Power Fx. Les options pour ce faire sont les suivantes :

  1. Tapez implicitement le champ à l’endroit où il est utilisé. Par exemple, un objet est converti en nombre s’il est utilisé avec l’opérateur + , s’il peut être converti en nombre. Cette option peut avoir des conversions inattendues et ne peut pas convertir les enregistrements et les tables dans leur ensemble.
  2. Tapez explicitement chaque champ individuellement avec les valeurs Decimal, Text, DateTime, GUID et d’autres fonctions de constructeur de type. C’est le plus invasif pour vos formules car chaque champ doit être fait séparément.
  3. Tapez explicitement JSON avec le deuxième argument de la fonction ParseJSON . Il s’agit d’une option simple qui évite d’avoir besoin de l’objet sans type.
  4. Tapez explicitement un objet sans type à l’aide de la fonction AsType. Vous pouvez également tester le type avant de tenter la conversion avec la fonction IsType.

Syntaxe

AsType( RecordReference, TableType )

  • RecordReference - Obligatoire. Une référence d’enregistrement, souvent un champ de recherche qui peut faire référence à un enregistrement dans plusieurs tables.
  • TableType – Obligatoire. La table spécifique vers laquelle l’enregistrement doit être converti.

AsType( UntypedObject, TypeSpecification )

  • UntypedObject : obligatoire. Une référence d’enregistrement, souvent un champ de recherche qui peut faire référence à un enregistrement dans plusieurs tables.
  • TypeSpecification : obligatoire. Nom de type ou spécification de type défini avec la fonction Type.

IsType( RecordReference, TableType )

  • RecordReference - Obligatoire. Une référence d’enregistrement, souvent un champ de recherche qui peut faire référence à un enregistrement dans plusieurs tables.
  • TableType – Obligatoire. La table spécifique pour laquelle tester.

IsType( UntypedObject, TypeSpecification )

  • UntypedObject : obligatoire. Une référence d’enregistrement, souvent un champ de recherche qui peut faire référence à un enregistrement dans plusieurs tables.
  • TypeSpecification : obligatoire. Nom de type ou spécification de type défini avec la fonction Type.

Examples

Références d’enregistrement

Comprendre les références d’enregistrement et les recherches polymorphes contient de nombreux exemples.

  1. Créez une application canevas vierge pour les tablettes.

  2. Dans le volet gauche, sélectionnez Données>Ajouter des données. Et puis, ajoutez les tables Comptes et Contacts.

    Application vierge avec deux sources de données : comptes et contacts.

  3. Dans le volet de gauche, sélectionnez + (Insérer) >Disposition>Galerie verticale vierge.

    Insérez un contrôle Gallery avec une disposition verticale vierge.

  4. Sélectionner Se connecter aux données, puis sélectionnez Contacts comme source de données.

  5. Définissez la disposition de la propriété sur Titre et sous-titre.

    Ouvrez le sélecteur de disposition dans le volet des propriétés.

    Définissez la disposition sur Titre et sous-titre.

  6. Dans le volet Données, ouvrez la liste Title1, puis cliquez sur Nom complet.

    Définir la valeur du titre.

  7. Sélectionnez le contrôle d’étiquette Subtitle1.

    Définir la valeur du sous-titre.

  8. Définissez la propriété Text de Subtitle1 sur la formule suivante :

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

    L’écran est maintenant complet montrant les comptes et les contacts mélangés dans la galerie.

    Le sous-titre dans la galerie affiche ces valeurs :

    • « -- » si Nom de la société est vide.
    • « Compte : » puis le champ Nom du compte du tableau Comptes si le champ Nom de la compagnie fait référence à un compte.
    • « Contact : » puis le champ Nom complet du tableau Contacts si le champ Nom de la compagnie fait référence à un contact.

    Vos résultats peuvent différer, car les exemples de données ont peut-être été modifiés pour afficher davantage de types de résultats.

Objets sans type

Les exemples suivants montrent un enregistrement JSON simple interprété de différentes manières par ParseJSON, AsType et IsType dans Pac CLI Power Fx REPL.

Dans ce premier exemple, aucune information de type n’est fournie à ParseJSON, il renvoie donc un objet sans type.

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

Le champ est implicitement converti en nombre lorsqu’il est utilisé dans un contexte numérique.

>> 1 + rec.a
2

Comme alternative, cet exemple convertit explicitement l’enregistrement en enregistrement Power Fx typé avec le deuxième argument de ParseJSON.

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

Et une autre alternative, cet exemple convertit explicitement l’enregistrement en enregistrement Power Fx typé à l’aide de AsType.

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

Enfin, si nous n’étions pas sûrs, cet exemple teste le type avant de le convertir avec la fonction IsType.

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