Fonctions AsType et IsType

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

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

Note

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

Description

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, vous pouvez accéder 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, vous ne savez pas quels champs seront disponibles 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, parfois 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'
)

Vous n’avez besoin de ces fonctions 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 ) } )

S’il est utilisé dans un contexte d’enregistrement, comme dans un contrôle Gallery ou Edit form, vous devrez peut-être utiliser l’opérateur global de désambiguïsation 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, vous spécifiez le type via le nom du source de données connecté à 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 blank seront blank.

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.

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.

Exemple

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 de ceux de ce sujet car il utilise des exemples de données qui ont été modifiés pour afficher des types de résultats supplémentaires.