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

S’applique à : Power Apps
Numéro de la 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’affichage sur la commande associée au bouton qui a la valeur false. Il se peut que la commande associée ait une règle d’affichage Mscrm.HideOnModern qui masque le bouton dans les applications Unified Interface. Un Objet HideCustomAction aurait également pu être créé pour forcer le masquage du bouton. 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 s’affichent pas.

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’option Lecture seule dans mobile est activée pour l’entité, ce qui force l’entité à autoriser uniquement le privilège Lecture . Voici quelques-unes des règles système par défaut les plus courantes qui donnent la valeur false lorsque l’indicateur Lecture seule dans Mobile est activé sur l’entité, mais sans s’y limiter uniquement à cette liste (Mscrm.CreateSelectedEntityPermission, Mscrm.CanDeletePrimaryMscrm.WritePrimaryEntityPermissionMscrm.CanSavePrimaryMscrm.WriteSelectedEntityPermissionMscrm.CanWritePrimaryMscrm.DeletePrimaryEntityPermissionMscrm.CanWriteSelected, , Mscrm.DeleteSelectedEntityPermission, , Mscrm.AssignSelectedEntityPermission, , ). Mscrm.ShareSelectedEntityPermissionMscrm.SharePrimaryPermission Vous pouvez modifier l’entité et décocher l’option Lecture seule dans mobile pour permettre à ces règles de prendre la valeur 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 que le bouton Nouveau de la page de grille de l’entité de contact n’est pas visible et est représenté par un élément intitulé Nouveau (masqué).

    Remarque

    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 la rédaction 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 d’affichage ou Mscrm.HideOnModern . Nous travaillons actuellement à compléter cette liste afin d’inclure ces informations dans une prochaine mise à jour.

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

    Remarque

    Si le bouton est toujours masqué lorsque toutes les règles ont la valeur True, cela peut être dû à des commandes contextuelles dans les grilles. Lorsque des 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 que la commande du bouton Nouveau (masqué) doit être Mscrm.NewRecordFromGrid et qu’il existe une règle d’activation nommée new.contact.EnableRule.EntityRule qui a la valeur False. Par conséquent, le bouton sera masqué.

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

  4. Développez la new.contact.EnableRule.EntityRule règle d’activation en sélectionnant l’icône en forme de chevron pour afficher les détails de la règle. Pour comprendre pourquoi une règle prend la valeur True ou False, vous devez comprendre un peu le 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 account. É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. Compte tenu de notre exemple :

    • Si cette règle a été créée par erreur, de sorte que l’entité déclarée dans la règle était destinée à être contact , mais qu’elle a été 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 de prendre la valeur true.
    • Si cette règle a été ajoutée à la commande par inadvertion, vous pouvez modifier la Mscrm.NewRecordFromGrid commande et supprimer la new.contact.EnableRule.EntityRule règle enable 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 opérationnelle 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 quelle solution a installé la personnalisation :

  1. Sélectionnez le lien Afficher les couches de solution de 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 Afficher les couches de solution de définition de commande sous un nom de commande.

  2. Le volet Couches de solution affiche la superposition de chaque définition de composant du ruban qu’une solution particulière a installée. La couche 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 si une version mise à jour est installée et 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 sur mesure 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 se trouve la personnalisation du ruban, si « Toutes les entités » est répertorié, la couche provient des extensions clientes du ruban d’application et n’est pas spécifique à l’entité, sinon le nom logique de l’entité est répertorié.

    Lorsqu’il existe au moins deux couches, vous pouvez sélectionner deux lignes et sélectionner Comparer pour afficher une comparaison des définitions apportées par chaque solution.

    Si vous sélectionnez Précédent , vous revenez à la fenêtre Vérificateur de commandes précédente.

    L’image suivante montre les couches de solution pour 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 de couche 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 correspond à 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 de l’application, modifier le <RibbonDiffXml> nœud dans le fichier customizations.xml , puis importer une nouvelle version de cette solution où cette commande a été supprimée afin de supprimer le composant. Consultez Exporter, préparer la modification et importer le ruban.

La commande est spécifique à l’entité

Sur la base de notre exemple de scénario, nous avons identifié que l’entité est contact et que la commande qui doit être supprimée est et elle 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 affiché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 existant.

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

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

  7. Sélectionnez 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. Localisez le <Entity> nœud enfant du nœud d’entité que vous souhaitez modifier et localisez son nœud enfant <RibbonDiffXml> .

  12. Recherchez le <CommandDefinition> nœud. (Dans notre exemple, l’ID du <CommandDefinition> nœud est Mscrm.NewRecordFromGrid, nous localisons donc 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 les autres <CommandDefinition> nœuds qui peuvent être présents. (D’après notre exemple, nous supprimerions le <CommandDefinition> nœud dans lequel l’ID est Mscrm.NewRecordFromGrid.)

    Capture d’écran de la suppression du nœud CommandDefinition.

  14. Enregistrez le fichier customizations.xml .

  15. Rajoutez le fichier customizations.xml modifié au fichier .zip solution.

  16. Importez le fichier solution.

  17. Sélectionnez Publier toutes les personnalisations.

La commande se trouve dans le ruban 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 de l’application, les étapes seront 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 affiché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 desrubans d’application existants>.
  5. Sélectionnez 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 les autres <CommandDefinitions> nœuds qui peuvent être présents.
  12. Enregistrez le fichier customizations.xml .
  13. Rajoutez le fichier customizations.xml modifié au fichier .zip de solution compressé.
  14. Importez le fichier solution.
  15. Sélectionnez Publier toutes les personnalisations.
La commande provient d’une solution managée personnalisée que mon entreprise 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 organization de développement distinct qui a la version source non managée de votre solution personnalisée, effectuez les étapes répertoriées ci-dessus pour l’option La commande se trouve dans la 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 organization affectée distincte, importez cette nouvelle version de votre solution gérée personnalisée.
La commande provient d’une solution gérée sur mesure que mon entreprise n’a pas créée (à partir d’un éditeur de logiciels indépendant/tiers)

Pour supprimer une commande installée par une solution managée personnalisée créée par un éditeur de logiciels indépendant/tiers, 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 organization affectée.