Partager via


Un bouton de la barre de commandes est masqué lorsqu’il doit être visible dans Power Apps

S’applique à : Power Apps
Numéro de base de connaissances d’origine : 4552163

Déterminer pourquoi un bouton est masqué

Un bouton peut être masqué en raison d’une règle d’activation ou d’une règle d’affichage sur la commande associée au bouton évaluant la valeur false. Il peut s’agir d’une règle d’affichage Mscrm.HideOnModern qui masque le bouton dans les applications d’interface unifiée. Un HideCustomAction peut également avoir été créé, ce qui forcerait le bouton à être masqué. Si l’utilisateur est hors connexion, les commandes personnalisées et les commandes par défaut sans la Mscrm.IsEntityAvailableForUserInMocaOffline règle d’activation ne seront pas affichées.

Avertissement

  • Toute règle d’affichage du type EntityPrivilegeRule avec une valeur PrivilegeType de l’une des valeurs suivantes (Create, Write, Delete, Assign, Share) prend la valeur false si l’entité a l’option Read-Only in Mobile activée, ce qui force l’entité à autoriser uniquement le privilège lecture. Exemples de certaines des règles système par défaut les plus courantes qui seront évaluées à false lorsque l’indicateur En lecture seule dans Mobile est activé sur l’entité, sont les suivants, mais non seulement à cette liste (Mscrm.CreateSelectedEntityPermission, Mscrm.CanSavePrimary, Mscrm.CanDeletePrimaryMscrm.WriteSelectedEntityPermissionMscrm.WritePrimaryEntityPermissionMscrm.CanWriteSelectedMscrm.CanWritePrimaryMscrm.DeleteSelectedEntityPermissionMscrm.AssignSelectedEntityPermissionMscrm.DeletePrimaryEntityPermission, ). Mscrm.ShareSelectedEntityPermissionMscrm.SharePrimaryPermission Vous pouvez modifier l’entité et décocher l’option Lecture seule dans Mobile pour autoriser ces règles à évaluer sur true, à condition que le privilège testé par la règle soit également accordé à l’utilisateur.
  • Ne supprimez pas la Mscrm.HideOnModern règle d’affichage d’une commande pour forcer l’affichage d’un bouton dans l’interface unifiée. Les commandes qui ont la Mscrm.HideOnModern règle d’affichage sont destinées à l’interface client web héritée et ne sont pas prises en charge dans l’interface unifiée et peuvent ne pas fonctionner correctement.
  1. Activez le vérificateur de commandes et sélectionnez le bouton de commande à inspecter.

  2. L’exemple suivant montre le bouton Nouveau dans la page de grille de l’entité contact qui n’est pas visible et est représenté par un élément étiqueté Nouveau (masqué).

    Note

    Si votre bouton n’est pas répertorié, cela peut être dû à une personnalisation HideCustomAction qui a peut-être été installée, ou la commande associée a une règle d’affichage Mscrm.HideOnModern . Au moment de l’écriture de ce guide, l’outil Vérificateur de commandes ne répertorie pas les boutons qui ont été masqués par une HideCustomAction règle ou Mscrm.HideOnModern une règle d’affichage. Nous travaillons actuellement à augmenter cette liste pour inclure ces informations dans une prochaine mise à jour.

    Capture d’écran montrant le bouton Nouveau dans la page de grille de l’entité de contact n’est pas visible et est représenté par un élément étiqueté Nouveau (masqué).

    Note

    Si le bouton est toujours masqué lorsque toutes les règles sont évaluées sur True, cela peut être dû à des commandes contextuelles sensibles dans les grilles. Lorsque les enregistrements sont sélectionnés sur une grille, tous les boutons sans SelectionCountRule élément sont considérés comme non pertinents pour les enregistrements sélectionnés. Et ils sont masqués même si leur évaluation de règle est True. Notez que les menus volants ne sont pas affectés, car les enfants de menu volant peuvent toujours avoir des commandes basées sur des enregistrements.

  3. Sélectionnez l’onglet Propriétés de la commande pour afficher les détails de la commande pour ce bouton. Cela affiche les règles d’activation et les règles d’affichage, ainsi que le résultat (True, False, Ignoré) de chaque évaluation de règle. L’exemple suivant montre la commande du bouton Nouveau (masqué) à afficher Mscrm.NewRecordFromGrid et une règle d’activation nommée new.contact.EnableRule.EntityRule a la valeur False. Par conséquent, le bouton est masqué.

    Capture d’écran montrant les détails des propriétés de commande du bouton Nouveau (masqué).

  4. Développez la new.contact.EnableRule.EntityRule règle d’activation, en sélectionnant sur l’icône de chevron pour afficher les détails de la règle. Pour comprendre pourquoi une règle prend la valeur True ou False, cela nécessite une petite compréhension du type de règle. Pour plus d’informations sur chaque type de règle, consultez Définir des règles d’activation du ruban et Définir des règles d’affichage du ruban. L’exemple suivant montre que le type de règle est Entity et que le nom logique de l’entité est le compte. Étant donné que l’entité actuelle est contact, ce qui n’est pas égal au compte, cette règle retourne False.

    Capture d’écran montrant un exemple pour afficher les détails de la règle.

  5. L’approche nécessaire pour corriger la visibilité d’un bouton dépend des différentes personnalisations de votre scénario spécifique. En tenant compte de notre exemple :

    • Si cette règle a été créée de manière erronée, de sorte que l’entité déclarée dans la règle était destinée à être contactée mais qu’elle était définie sur compte, vous pouvez modifier la new.contact.EnableRule.EntityRule règle d’activation et apporter des modifications qui permettraient à la règle d’évaluer la valeur true.
    • Si cette règle a été ajoutée involontairement à la commande, vous pouvez modifier la Mscrm.NewRecordFromGrid commande et supprimer la new.contact.EnableRule.EntityRule règle d’activation de la définition de commande.
    • Si la commande est un remplacement d’une définition publiée par Microsoft, cette version personnalisée de la commande peut être supprimée pour restaurer la fonctionnalité par défaut.

Options de réparation

Sélectionnez une option de réparation dans l’un des onglets ci-dessous. Le premier onglet est sélectionné par défaut.

Comment supprimer une commande

S’il existe une autre couche de solution qui contient une définition de travail de la commande, vous pouvez supprimer la définition pour restaurer la définition de travail inactive.

S’il s’agit de la seule couche et que vous n’avez plus besoin de la commande, vous pouvez la supprimer de votre solution si aucun autre bouton ne fait référence à la commande.

Pour supprimer une commande, nous devons déterminer la solution qui a installé la personnalisation :

  1. Sélectionnez le lien des couches de solution Afficher la définition de commande sous le nom de la commande pour afficher la ou les solutions qui ont installé une définition de la commande.

    Capture d’écran du lien des couches de solution De définition de commande Afficher sous un nom de commande.

  2. Le volet Couches de solution affiche la couche de chaque définition de composant du ruban qu’une solution particulière a installée. La couche située en haut de la liste est la définition actuelle utilisée par l’application, les autres couches sont inactives et ne sont pas utilisées par l’application pour le moment. Si la solution supérieure est désinstallée ou qu’une version mise à jour est installée qui supprime la définition, la couche suivante devient la définition active actuelle utilisée par l’application. Lorsqu’une couche de solution active non managée est présente, il s’agit toujours de la définition utilisée par l’application. Si aucune solution active n’est répertoriée, la solution répertoriée en haut de la liste est la définition utilisée par l’application. Toutes les solutions gérées personnalisées qui ne sont pas publiées par Microsoft sont également prioritaires sur les couches de solutions publiées par Microsoft.

    Le contexte d’entité indique l’objet sur lequel la personnalisation du ruban est activée, si « Toutes les entités » est répertoriée, la couche provient des extensions clientes du ruban d’application et non de l’entité, sinon le nom logique de l’entité est répertorié.

    Lorsqu’il existe deux couches ou plus, vous pouvez sélectionner deux lignes et sélectionner Comparer pour afficher une comparaison des définitions introduites par chaque solution.

    En sélectionnant Précédent , vous revenez à la fenêtre précédente du Vérificateur de commande.

    L’image suivante montre les couches de solution de la commande dans notre exemple, et indique qu’il existe une couche solution pour l’entité contact qu’il s’agit d’une personnalisation non managée, comme indiqué par la solution intitulée Active. Votre scénario réel peut différer, vous n’avez peut-être pas une couche de solution active , vous pouvez avoir une solution managée et le nom de cette solution sera répertorié ici.

    Capture d’écran montrant un exemple de la couche solution.

  3. Maintenant que nous avons examiné les couches de solution et identifié la solution qui a installé la personnalisation, nous devons corriger la définition dans la solution appropriée.

Sélectionnez l’une des options suivantes qui correspondent à votre scénario particulier :

La commande se trouve dans la solution Active non managée

Pour supprimer une commande dans la couche solution non managée Active , nous allons exporter une solution non managée contenant l’entité ou le ruban d’application et modifier le <RibbonDiffXml> nœud dans le fichier customizations.xml , puis importer une nouvelle version de cette solution dans laquelle cette commande a été supprimée pour supprimer le composant. Consultez Exporter, préparer la modification et importer le ruban.

La commande est spécifique à l’entité

En fonction de notre exemple de scénario, nous avons identifié l’entité comme contact et la commande à supprimer est Mscrm.NewRecordFromGrid déclarée dans la couche de solution non managée Active à partir d’un éditeur nommé DefaultPublisherCITTest.

  1. Ouvrez Paramètres avancés.

  2. Accédez à Paramètres>Solutions.

  3. Sélectionnez Nouveau pour créer une solution, définissez Publisher sur la valeur indiquée dans la liste des couches de solution du vérificateur de commandes pour la commande et la couche solution active. (Dans notre exemple, il s’agit de DefaultPublisherCITTest)

  4. Sélectionnez Entités>Ajouter un existant.

  5. Sélectionnez l’entité sur laquelle votre commande est définie (dans notre exemple, il s’agit d’un contact) et sélectionnez OK.

  6. Veillez à décocher les métadonnées d’entité Include et à ajouter toutes les options de ressources avant de sélectionner Terminer.

  7. Cliquez sur Enregistrer.

  8. Sélectionnez Exporter la solution et exportez la solution non managée.

  9. Extrayez le fichier .zip.

  10. Ouvrez le fichier customizations.xml .

  11. Recherchez l’enfant <Entity> du nœud d’entité que vous souhaitez modifier et localiser son nœud enfant <RibbonDiffXml> .

  12. Recherchez le <CommandDefinition> nœud. (Dans notre exemple, l’ID du <CommandDefinition> nœud est Mscrm.NewRecordFromGrid, nous allons donc localiser le nœud suivant)

    Capture d’écran montrant l’emplacement du nœud CommandDefinition.

  13. Modifiez le <RibbonDiffXml> nœud et supprimez le nœud spécifique <CommandDefinition> qui a l’ID de la commande que vous souhaitez supprimer. Veillez à ne pas supprimer involontairement d’autres <CommandDefinition> nœuds qui peuvent être présents. (En fonction de notre exemple, nous allons supprimer le <CommandDefinition> nœud dans lequel l’ID est Mscrm.NewRecordFromGrid.)

    Capture d’écran pour supprimer le nœud CommandDefinition.

  14. Enregistrez le fichier customizations.xml .

  15. Ajoutez le fichier customizations.xml modifié à la solution .zip fichier.

  16. Importer le fichier de solution.

  17. Sélectionnez Publier toutes les personnalisations.

La commande se trouve dans le ruban d’application (s’applique à « Toutes les entités »)

Si la commande n’est pas spécifique à l’entité, elle s’applique plutôt à « Toutes les entités » déclarées dans le ruban d’application, les étapes sont légèrement différentes comme suit :

  1. Ouvrez Paramètres avancés.
  2. Accédez à Paramètres>Solutions.
  3. Sélectionnez Nouveau pour créer une solution, définissez Publisher sur la valeur indiquée dans la liste des couches de solution du vérificateur de commandes pour la commande et la couche solution active.
  4. Sélectionnez Extensions>clientes Ajouter des rubans d’application existants.>
  5. Cliquez sur Enregistrer.
  6. Sélectionnez Exporter la solution et exportez la solution non managée.
  7. Extrayez le fichier .zip.
  8. Ouvrez le fichier customizations.xml .
  9. Recherchez le nœud racine <RibbonDiffXml> .
  10. Recherchez le <CommandDefinition> nœud.
  11. Modifiez le <RibbonDiffXml> nœud et supprimez le <CommandDefinition> nœud qui a l’ID de la commande que vous souhaitez supprimer. Veillez à ne pas supprimer involontairement d’autres <CommandDefinitions> nœuds qui peuvent être présents.
  12. Enregistrez le fichier customizations.xml .
  13. Ajoutez le fichier customizations.xml modifié à la solution compressée .zip fichier.
  14. Importer le fichier de solution.
  15. Sélectionnez Publier toutes les personnalisations.
La commande provient d’une solution gérée personnalisée que ma société a créée

Pour supprimer une commande installée par une solution gérée personnalisée que vous avez créée, procédez comme suit :

  1. Dans votre organisation de développement distincte qui a la version source non managée de votre solution personnalisée, effectuez les étapes répertoriées ci-dessus pour la commande dans l’option de solution Active non managée.
  2. Incrémentez la version de votre solution personnalisée.
  3. Exporter la solution en tant que solution gérée.
  4. Dans votre organisation affectée distincte, importez cette nouvelle version de votre solution managée personnalisée.
La commande provient d’une solution managée personnalisée que ma société n’a pas créée (à partir de tiers/ISV)

Pour supprimer une commande installée par une solution gérée personnalisée créée par un éditeur de logiciels tiers/éditeur de logiciels indépendants, vous devez contacter l’auteur de la solution et demander une nouvelle version de la solution qui a supprimé la définition de commande spécifique, puis installer cette nouvelle solution dans votre organisation concernée.