Comprendre les références d’enregistrement et des recherches polymorphes dans les applications canevas

Lorsque vous avez rédigé un document de recherche à l’école, vous avez probablement fourni une liste de vos références à la fin. Vous n’avez pas inclus une copie du matériel de base que vous avez utilisé, mais plutôt un lien web, le titre et l’auteur du livre, ou d’autres informations afin que quelqu’un puisse retrouver la source d’origine. Vous avez mélangé différents types de sources dans une seule liste, des articles de journaux à côté d’enregistrements audio, chacun avec ses propres détails spécifiques pour une citation appropriée. Par exemple, les articles de Wikipédia incluent souvent un longue liste de références.

Dans les applications canevas, vous travaillez souvent avec des copies d’enregistrements téléchargés à partir de sources de données. Vous utilisez les fonctions LookUp et Filter et la propriété Selected du contrôle Galerie pour identifier l’enregistrement spécifique que vous souhaitez. Tous les enregistrements de Filtre ou alors Choisi sera du même type de table, vous pouvez donc utiliser des champs avec une notation simple Domaine. Ces copies contiennent souvent des informations de référence afin que vous puissiez utiliser la fonction Patch pour mettre à jour la source d’origine.

Les applications canevas prennent également en charge les références d’enregistrements. Tout comme une référence de document de recherche, une référence d’enregistrement se réfère à un enregistrement sans en inclure une copie complète. Une telle référence peut faire référence à un enregistrement dans n’importe quelle table. Tout comme les références de documents de recherche, vous pouvez mélanger des enregistrements de différentes tables dans une seule colonne.

De nombreuses opérations sur les références d’enregistrement sont identiques à l’utilisation des enregistrements. Vous pouvez comparer les références d’enregistrement entre elles et avec les enregistrements complets. Vous pouvez définir la valeur d’une référence d’enregistrement avec la fonction Patch comme vous le feriez pour une recherche avec un enregistrement complet.

Il existe une différence d’utilisation importante : vous ne pouvez pas accéder directement aux champs d’une référence d’enregistrement sans d’abord établir à quelle table elle fait référence. En effet, les applications canevas nécessitent que tous les types soient connus lorsque vous écrivez des formules. Parce que vous ne connaissez pas le type d’une référence d’enregistrement tant que l’application n’est pas en cours d’exécution, vous ne pouvez pas utiliser la notation simple .Field directement. Vous devez d’abord déterminer dynamiquement le type de table avec la fonction IsType puis utilisez .Domaine notation sur le résultat de la fonction AsType.

Type de tableau fait référence au schéma de chaque enregistrement dans une table. Chaque table possède un ensemble unique de champs avec des noms et des types de données différents. Chaque enregistrement de la table hérite de cette structure ; deux enregistrements ont le même type de table s’ils proviennent de la même table.

Notes

Vous pouvez choisir parmi de nombreux connecteurs différents pour vous connecter à différents types de sources de données pour les applications canevas. Cependant, lorsque vous travaillez avec des applications canevas à l’intérieur de Power Apps Studio, Colonnes dans Microsoft Dataverse sont appelés champs similaire à toutes les autres sources de données. Colonne n’est utilisé que pour faire référence à une colonne à l’intérieur Dataverse. Pour plus d’informations : Mises à jour de la terminologie Dataverse

Recherches polymorphes

Microsoft Dataverse prend en charge les relations entre les enregistrements. Chaque enregistrement dans la table Comptes a une colonne Premier contact de recherche à un enregistrement dans la table Contacts. La recherche ne peut se référer qu’à un enregistrement dans Contacts et ne peut pas faire référence à un enregistrement dans, disons, la table Équipes. Ce dernier détail est important car vous savez toujours quelles colonnes seront disponibles pour la recherche.

Dataverse prend également en charge les recherches polymorphes, qui peuvent faire référence à un enregistrement de n’importe quelle table d’un ensemble. Par exemple, la colonne Propriétaire peut faire référence à un enregistrement dans la table Utilisateurs ou la table Équipes. La même colonne de recherche dans différents enregistrements peut faire référence à des enregistrements dans différentes tables. Dans ce cas, vous ne savez pas toujours quelles colonnes seront disponibles.

Les références d’enregistrement canevas ont été conçues pour travailler avec des recherches polymorphes dans Dataverse. Vous pouvez également utiliser des références d’enregistrement en dehors de ce contexte, ce qui explique la différence entre les deux concepts.

Dans la section suivante, vous commencerez à explorer ces concepts en travaillant avec la recherche Propriétaire.

Afficher les colonnes d’un propriétaire d’enregistrement

Chaque table de Dataverse comprend une colonne Propriétaire. Cette colonne ne peut pas être supprimée, vous ne pouvez pas en ajouter une autre et elle nécessite toujours une valeur.

Pour afficher cette colonne dans la table Compte :

  1. Connectez-vous à Power Apps.

  2. Dans la barre du volet de gauche, sélectionnez Données > Tables.

  3. Dans la liste des tableaux, sélectionnez Compte.

  4. Dans le coin supérieur droit, ouvrez la liste des filtres (qui est définie sur Défaut par défaut), puis sélectionnez Tout.

  5. Faites défiler jusqu’à ce que la colonne Propriétaire apparaît.

    Colonne Propriétaire dans le tableau Compte.

Cette colonne Propriétaire peut faire référence à un enregistrement dans la table Équipes ou Utilisateurs. Tous les enregistrements de ces tables ne sont pas autorisés à être Propriétaire ; vérifiez les rôles pris en charge si vous rencontrez un problème.

Ce graphique montre une simple galerie de Comptes, où la table Comptes a été ajoutée à l’application en tant que source de données :

Comptes affichés dans un contrôle Galerie.

Important

Tout au long de ce sujet, les graphiques montrent des noms et d’autres valeurs qui ne font pas partie des exemples de données fournis avec Dataverse. Les étapes montrent avec précision comment configurer les contrôles pour un résultat particulier, mais votre expérience variera en fonction des données de votre organisation.

Pour montrer le propriétaire de chaque compte dans la galerie, vous pourriez être tenté d’utiliser la formule ThisItem.Owner.Name. Cependant, le champ de nom dans la table Équipe est Nom de l’équipe, et le champ de nom dans la table Utilisateur est Nom et prénom. L’application ne peut pas savoir avec quel type de recherche vous travaillez jusqu’à ce que vous exécutiez l’application, et cela peut varier entre les enregistrements dans la table Comptes.

Vous avez besoin d’une formule qui peut s’adapter à cet écart. Vous devez également ajouter les sources de données pour les types de table qui Propriétaire pourrait être (dans ce cas, Utilisateurs et Équipes). Ajoutez ces trois sources de données à votre application :

Tables Comptes, Équipes et Utilisateurs dans le volet Données.

Avec ces sources de données en place, utilisez cette formule pour afficher le nom d’un utilisateur ou d’une équipe :

If( IsType( ThisItem.Owner, Teams ),
    "Team: " & AsType( ThisItem.Owner, Teams ).'Team Name',
    "User: " & AsType( ThisItem.Owner, Users ).'Full Name' )

Comptes affichés dans un contrôle Galerie avec le champ Propriétaire affiché.

Dans cette formule, la fonction IsType teste le champ Propriétaire contre la table Équipes. S’il s’agit de ce type de table, la fonction AsType le convertit en un enregistrement Équipe. À ce stade, vous pouvez accéder à tous les champs de la table Équipes, y compris Nom de l’équipe, en utilisant la notation .Domaine. Si IsType détermine que le Propriétaire n’est pas un enregistrement dans la table Équipes, ce champ doit être un enregistrement dans la table Utilisateurs parce que le champ Propriétaire est obligatoire (ne peut pas être Vide).

Pour utiliser n’importe quel champ d’une référence d’enregistrement, vous devez d’abord utiliser la fonction AsType pour le convertir en un type de table spécifique. Vous ne pouvez pas accéder aux champs directement depuis le champ Propriétaire car le système ne sait pas quel type de table vous souhaitez utiliser.

La fonction AsType renvoie une erreur si le champ Propriétaire ne correspond pas au type de table demandé, vous pouvez donc utiliser la fonction IfError pour simplifier cette formule. Tout d’abord, activez la fonction expérimentale Gestion des erreurs au niveau de la formule :

Activation expérimentale de la gestion des erreurs au niveau de la formule.

Remplacez ensuite la formule précédente par celle-ci :

IfError(
    "Team: " & AsType( ThisItem.Owner, Teams ).'Team Name',
    "User: " & AsType( ThisItem.Owner, Users ).'Full Name' )

Filtre basé sur un propriétaire

Félicitations, vous avez terminé l’aspect le plus difficile de travailler avec une référence d’enregistrement. D’autres cas d’utilisation sont plus simples car ils n’accèdent pas aux champs de l’enregistrement. À titre d’exemple, prenez le filtrage, que vous explorerez dans cette section.

Ajouter un contrôle Zone de liste modifiable au-dessus de la galerie et définissez ces propriétés du nouveau contrôle :

  • Items: Users
  • SelectMultiple : false

Ajout d’un contrôle de zone de liste déroulante au-dessus de la galerie avec la propriété Items définie sur Users.

Pour filtrer la galerie par un utilisateur spécifique sélectionné dans cette zone de liste déroulante, définissez la propriété Items sur cette formule :

Filter( Accounts, Owner = ComboBox1.Selected )

Galerie filtrée basée sur la valeur définie dans le contrôle de la zone de liste déroulante.

Important

Les instructions de cette rubrique sont précises si vous suivez exactement les étapes. Cependant, toute formule qui fait référence à un contrôle par son nom échoue si le contrôle a un nom différent. Si vous supprimez et ajoutez un contrôle du même type, le numéro à la fin du nom du contrôle change. Pour toute formule qui affiche une erreur, confirmez qu’elle contient les noms corrects de tous les contrôles.

Vous n’avez pas besoin d’utiliser IsType ou AsType car vous comparez des références d’enregistrement à d’autres références d’enregistrement ou à des enregistrements complets. L’application connaît le type de table de ComboBox1.Selected car il est dérivé de la table Utilisateurs. Les comptes dont le propriétaire est une équipe ne correspondent pas au critère de filtre.

Vous pouvez devenir un peu plus sophistiqué en prenant en charge le filtrage par un utilisateur ou une équipe.

  1. Faites de l’espace en haut de l’écran en redimensionnant la galerie et en déplaçant la zone de liste déroulante, insérez un contrôle Case d’options au-dessus de la galerie, puis définissez ces propriétés pour le nouveau contrôle :

    • Items : [ "All", "Users", "Teams" ]
    • Layout : Layout.Horizontal
  2. Pour le contrôle Zone de liste modifiable, définissez cette propriété (si la zone de liste déroulante disparaît, sélectionnez Utilisateurs dans le contrôle Case d’options) :

    • Visible : Radio1.Selected.Value = "Users"
  3. Copiez et collez le contrôle Zone de liste modifiable, déplacez la copie directement sur l’original, puis définissez ces propriétés pour la copie :

    • Items : Teams
    • Visible : Radio1.Selected.Value = "Teams"

    L’application n’affichera qu’une seule zone de liste déroulante à la fois, selon l’état du contrôle Case d’options. Parce qu’ils sont directement les uns au-dessus des autres, ils sembleront être le même contrôle qui change son contenu.

  4. Enfin, définissez la propriété Items du contrôle Galerie sur la formule suivante :

    Filter( Accounts,
        Radio1.Selected.Value = "All"
        Or (Radio1.Selected.Value = "Users" And Owner = ComboBox1.Selected)
        Or (Radio1.Selected.Value = "Teams" And Owner = ComboBox1_1.Selected)
    )
    

    Galerie filtrée montrant tous les enregistrements ou un utilisateur ou une équipe spécifique.

Avec ces modifications, vous pouvez afficher tous les enregistrements ou les filtrer en fonction d’un utilisateur ou d’une équipe :

Animation montrant différents résultats filtrés en fonction des contrôles Case d’options ou Zone de liste modifiable.

La formule est entièrement délégable. La partie qui compare les valeurs des cases d’option est une constante dans tous les enregistrements et est évaluée avant que le reste du filtre ne soit envoyé à Dataverse.

Si vous souhaitez filtrer sur le type de propriétaire, vous pouvez utiliser la fonction IsType, mais ce n’est pas encore délégable.

Filtrer par type de propriétaire en utilisant IsType.

Mettre à jour le propriétaire en utilisant Patch

Vous pouvez mettre à jour le champ Propriétaire de la même manière que toute autre recherche. Pour définir le propriétaire du compte actuellement sélectionné sur la première équipe :

Patch( Accounts, Gallery1.Selected, { Owner: First( Teams ) } )

Cette approche ne diffère pas d’une recherche normale car l’application connaît le type de First( Teams ). Si vous souhaitez plutôt le premier utilisateur, remplacez cette partie par First( Users ). La fonction Correctif sait que le champ Propriétaire peut être défini sur l’un de ces deux types de table.

Pour ajouter cette fonctionnalité à l’application :

  1. Dans le volet Vue arborescente, sélectionnez le contrôle Case d’options et les deux contrôles Zone de liste modifiable en même temps.

  2. Dans le menu des points de suspension, sélectionnez Copiez ces éléments.

    Copie de plusieurs contrôles à l’aide de l’arborescence.

  3. Sélectionnez Coller dans le même menu.

    Collage de plusieurs contrôles à l’aide de l’arborescence.

  4. Déplacez les contrôles copiés à droite de la galerie.

    Contrôles copiés déplacés à droite de la galerie.

  5. Sélectionnez le contrôle Case d’options copié, puis modifiez ces propriétés :

    • Items : [ "Users", "Teams" ]
    • Valeur par défaut : If( IsType( Gallery1.Selected.Owner, Users ), "Users", "Teams" )

    Suppression de l’option Tout du contrôle Case d’options.

  6. Dans le contrôle Case d’options, sélectionnez Utilisateurs de sorte que le contrôle Zone de liste modifiable qui répertorie les utilisateurs est visible.

  7. Sélectionnez le contrôle Zone de liste modifiable visible, puis définissez la propriété DefaultSelectedItems de cette formule :

    If( IsType( Gallery1.Selected.Owner, Users ),
        AsType( Gallery1.Selected.Owner, Users ),
        Blank()
    )
    

    Jeu de propriétés par défaut pour la zone de liste déroulante Utilisateurs.

  8. Dans le contrôle Case d’options, sélectionnez Équipes de sorte que le contrôle Zone de liste modifiable qui répertorie les équipes est visible.

  9. Sélectionnez le contrôle Case d’options pour retirer la sélection du contrôle Zone de liste modifiable désormais invisible pour les utilisateurs.

  10. Sélectionnez le contrôle Zone de liste modifiable visible pour les équipes, puis définissez sa propriété DefaultSelectedItems de cette formule :

    If( IsType( Gallery1.Selected.Owner, Teams ),
        AsType( Gallery1.Selected.Owner, Teams ),
        Blank()
    )
    

    Jeu de propriétés par défaut pour la zone de liste déroulante Équipes.

  11. Insérez un contrôle Bouton, déplacez-le sous le contrôle Zone de liste modifiable, puis définissez la propriété Text du bouton sur "Patch Owner".

  12. Définissez la propriété OnSelect du bouton sur la formule suivante :

    Patch( Accounts, Gallery1.Selected,
        { Owner: If( Radio1_1.Selected.Value = "Users",
                     ComboBox1_2.Selected,
                     ComboBox1_3.Selected ) } )
    

    Formule définie sur le contrôle Bouton.

Les contrôles Case d’options et Zone de liste modifiable copiés affichent le propriétaire du compte actuellement sélectionné dans la galerie. Avec les mêmes contrôles, vous pouvez définir le propriétaire du compte pour n’importe quelle équipe ou utilisateur en sélectionnant le bouton :

Animation montrant le patch du propriétaire avec un utilisateur ou une équipe.

Afficher le propriétaire en utilisant un formulaire

Vous pouvez afficher un champ Propriétaire à l’intérieur d’un formulaire en ajoutant une carte personnalisée. À ce jour, vous ne pouvez pas modifier la valeur du champ avec un contrôle Form.

  1. Insérez un contrôle Modifier le formulaire, puis redimensionnez et déplacez-le dans le coin inférieur droit.

  2. Sur l’onglet Propriétés sur le côté droit de l’écran, ouvrez la liste Source de données, puis sélectionnez Comptes.

    Contrôle Form affichant des champs supplémentaires avec des valeurs vides.

  3. Définir la propriété Items du formulaire sur Gallery1.Selected.

    Contrôle Form affichant des champs supplémentaires remplis à partir de l’élément sélectionné dans la galerie.

  4. Sur l’onglet Propriétés sur le côté droit de l’écran, sélectionnez Modifier les champs.

  5. Dans le volet Champs, sélectionnez les points de suspension, puis sélectionnez Ajoutez une carte personnalisée.

    Commande pour ajouter une carte personnalisée.

    La nouvelle carte apparaît au bas du contrôle Form.

  6. Redimensionnez la carte au besoin pour afficher tout le texte.

    Carte personnalisée insérée, vierge.

  7. Insérez un contrôle Étiquette dans la carte personnalisée, puis définissez la propriété Text de la formule que vous avez utilisée dans la galerie :

    If( IsType( ThisItem.Owner, Teams ),
        "Team: " & AsType( ThisItem.Owner, Teams ).'Team Name',
        "User: " & AsType( ThisItem.Owner, Users ).'Full Name' )
    

    Carte personnalisée affichant le champ Propriétaire dans un contrôle d’étiquette.

Pour chaque sélection dans la galerie, d’autres champs du compte, y compris le propriétaire de l’enregistrement, apparaissent dans le formulaire. Si vous changez le propriétaire en utilisant le bouton Patch, le contrôle Form affiche également cette modification.

Animation montrant le contrôle Form répondant aux modifications de la galerie.

Afficher les colonnes d’un client

Dans Dataverse, la colonne Client de recherche est une autre recherche polymorphe très similaire à Propriétaire.

Propriétaire est limité à un par table, mais les tables peuvent inclure zéro, un ou plusieurs colonne de recherche Client. La table système Contacts comprend la colonne Nom de la compagnie, qui est une colonne de recherche Client.

Tableau des contacts affichant la colonne Nom de l’entreprise en tant que type de données Client qui n’est pas obligatoire.

Vous pouvez en ajouter d’autres colonnes de recherche Client dans une table en sélectionnant le type de données Client pour une nouvelle colonne.

Type de données client de la liste des types de données lors de la création d’une colonne.

Un champ de recherche Client peut faire référence à un enregistrement dans la table Comptes ou Contacts. Vous utiliserez les fonctions IsType et AsType avec ces tables, c’est donc le bon moment pour les ajouter en tant que sources de données (vous pouvez laisser Équipes et Utilisateurs en place).

Tables Comptes, Équipes, Utilisateurs et Contacts dans le volet Données.

Le traitement des champs Client et Propriétaire est tellement similaire que vous pouvez littéralement copier l’application (Fichier > Enregistrer sous, puis spécifiez un nom différent) et effectuez ces remplacements simples :

Emplacement Exemple Propriétaire Exemple Client
Tout au long Propriétaire « Nom du client »
Tout au long Utilisateurs Comptes
Tout au long Équipes Contacts
Propriété Items de la galerie Comptes Contacts
Propriété Items du formulaire Comptes Contacts
Le premier argument de Patch
dans la propriété OnSelect du bouton
Comptes Contacts
Filtrer les propriétés Items de la case d’option [ "All", "Users", "Teams" ] [ "All", "Accounts", "Contacts" ]
Corriger les propriétés Items de la case d’option [ "Users", "Teams" ] [ "Accounts", "Contacts" ]
Propriété Visible du Zone de liste modifiable « Utilisateurs » et « Équipes » « Comptes » et « Contacts »

Par exemple, la nouvelle galerie devrait avoir cette propriété Items :

Filter( Contacts,
    Radio1.Selected.Value = "All"
    Or (Radio1.Selected.Value = "Accounts" And 'Company Name' = ComboBox1.Selected)
    Or (Radio1.Selected.Value = "Contacts" And 'Company Name' = ComboBox1_1.Selected)
)

Application client dérivée de l’application propriétaire avec des modifications simples appliquées.

Deux différences importantes entre Client et Propriétaire nécessitent une mise à jour des formules à l’intérieur de la galerie et du formulaire :

  1. Relations Un-à-plusieurs entre Comptes et Contacts sont prioritaires lorsque vous faites référence à ces types de tables par leur nom. Au lieu de Comptes, utilisez [@Accounts]  ; au lieu de Contacts, utilisez [@Contacts]. En utilisant l’opérateur global de désambiguïsation, vous vous assurez que vous faites référence au type de table dans IsType et AsType. Ce problème existe uniquement dans le contexte d’enregistrement de la galerie et des contrôles de formulaire.

  2. Le champ Propriétaire doit avoir une valeur, mais les champs Client peuvent être vides. Pour afficher le résultat correct sans nom de type, testez ce cas avec la fonction IsBlank et affichez une chaîne de texte vide à la place.

Ces deux modifications sont dans la même formule, qui apparaît dans la carte personnalisée dans le formulaire, ainsi que dans la propriété Text du contrôle d’étiquette de la galerie :

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

Mettre à jour la propriété Text du contrôle d’étiquette de sous-titre dans la galerie.

Avec ces modifications, vous pouvez afficher et modifier le champ Nom de la compagnie dans la table Contacts.

Animation qui montre comment la sélection d’un contact modifie les autres contrôles et le formulaire.

Comprendre les colonnes de recherche

La colonne de recherche Concernant diffère un peu de celles que vous avez déjà travaillées dans ce sujet. Vous commencerez par appliquer les modèles décrits par ce sujet plus tôt, puis vous apprendrez d’autres astuces.

Vous pouvez commencer simplement par la table Télécopies. Ce tableau a une colonne de recherche polymorphe Concernant, qui peut faire référence à Comptes, Contacts, et d’autres tableaux. Vous pouvez prendre l’application pour Clients et le modifier pour Télécopies.

Emplacement Exemple Client Exemple Télécopies
Tout au long « Nom du client » Concernant
Propriété Items de la galerie Contacts Télécopies
Propriété Items du formulaire Contacts Télécopies
Le premier argument de Patch
dans la propriété OnSelect du bouton
Contacts Télécopies

Encore une fois, vous devrez ajouter un source de données : cette fois pour Télécopies. Sous l’onglet Affichage, sélectionnez Sources de données :

Volet Données affichant les tables Comptes, Équipes, Utilisateurs, Contacts et Télécopies.

Une différence importante pour Concernant c’est qu’il ne se limite pas à Comptes et Contacts. En fait, la liste des tables est extensible avec des tables personnalisées. La plupart de l’application peut s’adapter à ce point sans modification, mais vous devez mettre à jour la formule de l’étiquette dans la galerie et le formulaire :

If( IsBlank( ThisItem.Regarding ), "",
    IsType( ThisItem.Regarding, Accounts ),
        "Account: " & AsType( ThisItem.Regarding, Accounts ).'Account Name',
    IsType( ThisItem.Regarding, Contacts ),
        "Contacts: " & AsType( ThisItem.Regarding, Contacts ).'Full Name',
    ""
)

Propriété Text mise à jour pour le contrôle des sous-titres pour les recherches Concernant.

Après avoir apporté ces modifications, vous travaillez avec la recherche Concernant comme vous avez fait les recherches Propriétaire et Client.

Animation qui montre comment la sélection d’un élément de la galerie modifie les autres contrôles et le formulaire.

Présentation des relations Concernant

Concernant diffère de Propriétaire et de Client parce que le premier implique une relation plusieurs-à-une. Par définition, une relation inversée une à plusieurs vous permet d’écrire First( Accounts ).Faxes.

Revenons en arrière et regardons les définitions des tables. Dans Dataverse, des tables tels que Télécopies, Tâches, Courriels, Remarques, Appels téléphoniques, Lettres, et Discussions sont désignés comme Activités. Vous pouvez également créer vos propres tables d’activité personnalisées. Lorsque vous affichez ou créez un tableau d’activités, ses paramètres apparaissent sous Plus de paramètres.

Paramétrage de la table d’activité lors de la création d’une table.

D’autres tables peuvent être associées à une table d’activité si elles sont activées en tant que tâche d’activité dans les paramètres de la table. Comptes, Contacts, et de nombreuses autres tables standard sont ainsi désignées (encore une fois, sous Plus de paramètres).

Paramétrage de la table de tâche lors de la création d’une table.

Toutes les tables d’activité et les tables d’activité-tâche ont une relation implicite. Si vous changez le filtre en Tous en haut de l’écran, sélectionnez la table Télécopies, puis sélectionnez l’onglet Relations, toutes les tables pouvant être la cible d’une recherche Concernant apparaissent.

Relations de la table Télécopies montrant les relations plusieurs-à-une Concernant.

Si vous affichez les relations de la table Comptes, toutes les tables qui peuvent être source d’un champ de recherche Concernant apparaît.

Relations de la table Compte montrant les relations plusieurs-à-une Concernant.

Qu’est-ce que tout ceci signifie ?

  • Lorsque vous écrivez des formules, vous devez tenir compte du fait que la liste des tables d’activités n’est pas figée et vous pouvez créer la vôtre. La formule doit gérer de manière appropriée une table d’activité à laquelle vous ne vous attendiez pas.
  • Les tâches et les activités ont une relation un-à-plusieurs. Vous pouvez facilement demander toutes les télécopies liées à un compte.

Pour explorer ce concept dans l’application :

  1. Ajouter un autre écran.

    Insérer un écran vierge.

  2. Insérez un contrôle Galerie, redimensionnez-le, puis déplacez-le vers la gauche de l’écran.

  3. Sur l’onglet Propriétés près du côté droit de l’écran, définissez la propriété Items de la galerie sur Comptes.

    Définir les éléments sur les comptes dans le volet de propriétés.

  4. Définissez la disposition de la galerie sur Titre, puis définissez le champ de titre sur Nom du compte.

    Définir Layout sur Titre pour le contreôle Galerie dans le volet des propriétés.

  5. Ajoutez une seconde galerie, redimensionnez-la, puis déplacez-la vers la droite de l’écran.

  6. Définissez la nouvelle propriété Items de la galerie sur Gallery2.Selected.Faxes.

    Cette étape renvoie la liste filtrée des télécopies pour un compte donné.

    Définissez la propriété Items de la galerie qui affiche les télécopies.

  7. Définissez la disposition de la galerie sur Titre et sous-titre, puis définissez le champ de titre pour afficher le champ Objet (qui peut être en minuscules objet).

    Définissez le titre sur le champ Objet.

Lorsque vous sélectionnez un élément dans la liste des comptes, la liste des télécopies affiche les télécopies pour ce compte uniquement.

Animation montrant la sélection dans la galerie des comptes conduisant la liste des télécopies.

Table des activités

Comme décrit dans la section précédente, vous pouvez afficher toutes les télécopies d’un compte. Cependant, vous pouvez également afficher toutes les activités d’un compte, y compris les télécopies, les e-mails, les appels téléphoniques et d’autres interactions.

Pour ce dernier scénario, vous utilisez la table Activité. Vous pouvez afficher ce tableau en activant Tous dans le coin supérieur droit pour supprimer le filtre de la liste des tableaux.

Liste des tableaux affichant le tableau Activité.

La table Activité est spécial. Chaque fois que vous ajoutez un enregistrement à la table Télécopies, le système crée également un enregistrement dans la table Activité avec les colonnes communes à toutes les tables d’activités. De ces colonnes, Sujet est l’un des plus intéressants.

Vous pouvez afficher toutes les activités en modifiant une seule ligne dans l’exemple précédent. Remplacer Gallery2.Selected.Faxes par Gallery2.Selected.Activities.

Modification de la propriété des éléments pour la deuxième galerie, passage des télécopies aux activités.

Les enregistrements proviennent de la table Activité, mais vous pouvez néanmoins utiliser la fonction IsType pour identifier de quel type d’activité il s’agit. Encore une fois, avant d’utiliser IsType avec un type de table, vous devez ajouter le source de données.

Volet de données affichant toutes les tables requises pour la fonction IsType.

En utilisant cette formule, vous pouvez afficher le type d’enregistrement dans un contrôle Étiquette dans la galerie :

If( IsType( ThisItem, Faxes] ), "Fax",
    IsType( ThisItem, 'Phone Calls' ), "Phone Call",
    IsType( ThisItem, 'Email Messages' ), "Email Message",
    IsType( ThisItem, Chats ), "Chat",
    "Unknown"
)

Définissez la propriété de texte sur une formule pour afficher des informations sur les télécopies, les appels téléphoniques et d’autres activités.

Vous pouvez aussi utiliser AsType pour accéder aux champs du type spécifique. Par exemple, cette formule détermine le type de chaque activité et, pour les appels téléphoniques, affiche le numéro de téléphone et la direction de l’appel à partir de la table Numéros de téléphone :

If( IsType( ThisItem, Faxes ), "Fax",
    IsType( ThisItem, 'Phone Calls' ),
       "Phone Call: " &
       AsType( ThisItem, 'Phone Calls' ).'Phone Number' &
       " (" & AsType( ThisItem, 'Phone Calls' ).Direction & ")",
    IsType( ThisItem, 'Email Messages' ), "Email Message",
    IsType( ThisItem, Chats ), "Chat",
    "Unknown"
)

Propriété de texte développée avec plus d’informations pour un appel téléphonique.

En conséquence, l’application affiche une liste complète des activités. Le champ Objet apparaît pour tous les types d’activités, que la formule en tienne compte ou non. Pour les types d’activités que vous connaissez, vous pouvez afficher leurs noms de type et des informations spécifiques à chaque type d’activité.

Écran terminé affichant des informations pour différents types d’activités.

Tableau des notes

Jusqu’à présent, tous les exemples Concernant ont été basés sur des activités, mais la table Remarques représente un autre cas.

Lorsque vous créez une table, vous pouvez activer les pièces jointes.

Activer les pièces jointes et les notes lors de la création d’un tableau.

Si vous cochez la case pour activer les pièces jointes, vous créerez une relation Concernant avec la table Remarques, comme le montre ce graphique pour la table Comptes :

Table Compte montrant la relation avec les Remarques via une relation une-à-plusieurs.

Autre que cette différence, vous utilisez la recherche Concernant de la même manière que vous utilisez les activités. Les tables qui sont activées pour les pièces jointes ont une relation un-à-plusieurs avec Remarques, comme dans cet exemple :

First( Accounts ).Notes

Notes

Au moment d’écrire ces lignes, la Recherche Concernant n’est pas disponible pour la table Remarques. Vous ne pouvez pas lire ou filtrer en fonction de la colonne Concernant, et vous ne pouvez pas définir la colonne en utilisant Correctif.

Cependant, la relation une-à-plusieurs Notes inverse est disponible, vous pouvez donc filtrer une liste de notes pour un enregistrement qui est activé pour les pièces jointes. Vous pouvez également utiliser la fonction Relate pour ajouter une note à la table Notes de l’enregistrement, mais la note doit être créée en premier, comme dans cet exemple :

Relate( ThisItem.Notes, Patch( Notes, Defaults( Notes ), { Title: "A new note" } ) )

Groupes d’activité

À ce jour, les applications canevas ne prennent pas en charge les fêtes d’activité.

Notes

Pouvez-vous nous indiquer vos préférences de langue pour la documentation ? Répondez à un court questionnaire. (veuillez noter que ce questionnaire est en anglais)

Le questionnaire vous prendra environ sept minutes. Aucune donnée personnelle n’est collectée (déclaration de confidentialité).