Freigeben über


Eine Schaltfläche auf der Befehlsleiste ist ausgeblendet, wenn sie in Power Apps sichtbar sein soll.

Gilt für: Power Apps
Ursprüngliche KB-Nummer: 4552163

Ermitteln, warum eine Schaltfläche ausgeblendet ist

Eine Schaltfläche kann aufgrund einer Aktivierungsregel oder Anzeigeregel für den Befehl ausgeblendet werden, der der Schaltfläche zugeordnet ist, die auf "false" ausgewertet wird. Möglicherweise verfügt der zugeordnete Befehl über eine Mscrm.HideOnModern Anzeigeregel, die die Schaltfläche in Unified Interface-Anwendungen ausblenden würde. Eine HideCustomAction könnte auch erstellt worden sein, die das Ausblenden der Schaltfläche erzwingen würde. Wenn der Benutzer offline ist, werden benutzerdefinierte Befehle und Standardbefehle ohne die Mscrm.IsEntityAvailableForUserInMocaOffline Aktivierungsregel nicht angezeigt.

Warnung

  • Jede Anzeigeregel des EntityPrivilegeRule-Typs mit einem PrivilegeType-Wert von einem der folgenden Werte (Create, Write, Delete, Assign, Share) wird als "false" ausgewertet, wenn die Entität die Option "Schreibgeschützt in Mobile" aktiviert hat, wodurch die Entität nur leseberechtigungen zulässt. Beispiele für einige der am häufigsten verwendeten Standardsystemregeln, die als falsch ausgewertet werden, wenn das Attribut "Schreibgeschützt in Mobile" für die Entität aktiviert ist, sind wie folgt, aber nicht nur auf diese Liste beschränkt (Mscrm.CreateSelectedEntityPermission, , Mscrm.CanSavePrimary, Mscrm.WritePrimaryEntityPermissionMscrm.CanWritePrimaryMscrm.WriteSelectedEntityPermissionMscrm.CanWriteSelected, , ). Mscrm.ShareSelectedEntityPermissionMscrm.SharePrimaryPermissionMscrm.CanDeletePrimaryMscrm.DeletePrimaryEntityPermissionMscrm.DeleteSelectedEntityPermissionMscrm.AssignSelectedEntityPermission Sie können die Entität bearbeiten und die Option "Schreibgeschützt in Mobile " deaktivieren, damit diese Regeln auf "true" ausgewertet werden können, vorausgesetzt, die von der Regel getesteten Berechtigungen werden auch dem Benutzer gewährt.
  • Entfernen Sie die Mscrm.HideOnModern Anzeigeregel nicht aus einem Befehl, um zu erzwingen, dass eine Schaltfläche in der Unified Interface angezeigt wird. Befehle mit der Mscrm.HideOnModern Anzeigeregel sind für die ältere Webclientschnittstelle vorgesehen und werden in der Unified Interface nicht unterstützt und funktionieren möglicherweise nicht ordnungsgemäß.
  1. Aktivieren Sie die Befehlsüberprüfung, und wählen Sie die zu prüfende Befehlsschaltfläche aus.

  2. Das folgende Beispiel zeigt, dass die Schaltfläche "Neu " auf der Rasterseite der Kontaktentität nicht sichtbar ist und durch ein Element mit der Bezeichnung "Neu" (ausgeblendet) dargestellt wird.

    Notiz

    Wenn Ihre Schaltfläche nicht aufgeführt ist, kann dies auf eine HideCustomAction-Anpassung zurückzuführen sein, die möglicherweise installiert wurde, oder der zugeordnete Befehl verfügt über eine Mscrm.HideOnModern Anzeigeregel. Zum Zeitpunkt des Schreibens dieses Handbuchs listet das Tool "Befehlsprüfung" keine Schaltflächen auf, die von einer HideCustomAction Oder Mscrm.HideOnModern Anzeigeregel ausgeblendet wurden. Wir arbeiten derzeit daran, diese Auflistung zu erweitern, um diese Informationen in ein zukünftiges Update einzuschließen.

    Screenshot der Schaltfläche

    Notiz

    Wenn die Schaltfläche weiterhin ausgeblendet ist, wenn alle Regeln als "True" ausgewertet werden, kann dies auf kontextabhängige Befehle in Rastern zurückzuführen sein. Wenn Datensätze in einem Raster ausgewählt werden, werden alle Schaltflächen ohne Element SelectionCountRule als nicht relevant für die ausgewählten Datensätze angesehen. Und sie sind ausgeblendet, auch wenn ihre Regelauswertung wahr ist. Beachten Sie, dass Flyouts nicht betroffen sind, da untergeordnete Flyouts möglicherweise weiterhin datensatzbasierte Befehle enthalten.

  3. Wählen Sie die Registerkarte "Befehlseigenschaften " aus, um die Details des Befehls für diese Schaltfläche anzuzeigen. Dadurch werden die aktivierten Regeln und Anzeigeregeln zusammen mit dem Ergebnis (True, False, Skipped) jeder Regelauswertung angezeigt. Im folgenden Beispiel wird der Befehl der Schaltfläche "Neu" (ausgeblendet) dargestellt, und es gibt eine aktivierte Regel mit dem Namen new.contact.EnableRule.EntityRule "False", daher wird die Schaltfläche Mscrm.NewRecordFromGrid ausgeblendet.

    Screenshot der Befehlseigenschaftendetails des Befehls für die Schaltfläche

  4. Erweitern Sie die Aktivierungsregel new.contact.EnableRule.EntityRule , indem Sie auf das Chevronsymbol klicken, um die Details der Regel anzuzeigen. Um zu verstehen, warum eine Regel als wahr oder falsch ausgewertet wird, erfordert ein wenig Verständnis des Regeltyps. Ausführliche Informationen zu den einzelnen Regeltypen finden Sie unter Definieren von Menüband-Aktivierungsregeln und Definieren von Menübandanzeigeregeln. Das folgende Beispiel zeigt, dass der Regeltyp "Entity" ist und der logische Entitätsname ein Konto ist. Da es sich bei der aktuellen Entität um einen Kontakt handelt, der nicht dem Konto entspricht, gibt diese Regel "False" zurück.

    Screenshot zeigt ein Beispiel zum Anzeigen der Details der Regel.

  5. Der Zum Beheben der Sichtbarkeit einer Schaltfläche erforderliche Ansatz hängt von den verschiedenen Anpassungen in Ihrem spezifischen Szenario ab. In Anbetracht unseres Beispiels:

    • Wenn diese Regel fälschlicherweise erstellt wurde, sodass die in der Regel deklarierte Entität kontaktiert, aber auf Konto festgelegt wurde, können Sie die Aktivierungsregel new.contact.EnableRule.EntityRule bearbeiten und Änderungen vornehmen, die die Auswertung der Regel auf "true" ermöglichen würden.
    • Wenn diese Regel unbeabsichtigt dem Befehl hinzugefügt wurde, können Sie den Mscrm.NewRecordFromGrid Befehl ändern und die new.contact.EnableRule.EntityRule Aktivierungsregel aus der Befehlsdefinition entfernen.
    • Wenn der Befehl eine Außerkraftsetzung einer von Microsoft veröffentlichten Definition ist, kann diese benutzerdefinierte Version des Befehls gelöscht werden, um die Standardfunktionalität wiederherzustellen.

Reparaturoptionen

Wählen Sie eine Reparaturoption aus einer der folgenden Registerkarten aus. Die erste Registerkarte ist standardmäßig ausgewählt.

So löschen Sie einen Befehl

Wenn eine andere Lösungsebene vorhanden ist, die eine funktionierende Definition des Befehls enthält, können Sie die Definition löschen, um die inaktive Arbeitsdefinition wiederherzustellen.

Wenn dies die einzige Ebene ist und Sie den Befehl nicht mehr benötigen, können Sie ihn aus Ihrer Lösung entfernen, wenn keine andere Schaltfläche auf den Befehl verweist.

Um einen Befehl zu löschen, müssen wir ermitteln, welche Lösung die Anpassung installiert hat:

  1. Wählen Sie unter dem Befehlsnamen den Link "Ansichtsbefehlsdefinitionslösungsebenen " aus, um die Lösung(en) anzuzeigen, die eine Definition des Befehls installiert haben.

    Screenshot des Links

  2. Im Bereich "Lösungsebenen" wird die Schichtung jeder Menübandkomponentendefinition angezeigt, die eine bestimmte Lösung installiert hat. Die Ebene oben in der Liste ist die aktuelle Definition, die von der Anwendung verwendet wird, die anderen Ebenen sind inaktiv und werden derzeit nicht von der Anwendung verwendet. Wenn die oberste Lösung deinstalliert wird oder eine aktualisierte Version installiert wird, die die Definition entfernt, wird die nächste Ebene zur aktuellen aktiven Definition, die von der Anwendung verwendet wird. Wenn eine nicht verwaltete aktive Lösungsebene vorhanden ist, ist sie immer die Definition, die die Anwendung verwendet. Wenn keine aktive Lösung aufgeführt ist, wird die oben in der Liste aufgeführte Lösung die von der Anwendung verwendete Definition sein. Alle benutzerdefinierten verwalteten Lösungen, die von Microsoft nicht veröffentlicht werden, haben auch Vorrang vor den von Microsoft veröffentlichten Lösungsebenen.

    Der Entitätskontext gibt an, dass das Objekt, auf dem das Menüband angepasst wird, aktiviert ist, wenn "Alle Entitäten" aufgeführt ist, die Ebene aus den Clienterweiterungen des Anwendungsmenübands stammt und nicht entitätsspezifisch ist, andernfalls wird der logische Name der Entität aufgelistet.

    Wenn zwei oder mehr Ebenen vorhanden sind, können Sie zwei Zeilen auswählen und "Vergleichen" auswählen, um einen Vergleich der definitionen anzuzeigen, die von jeder Lösung bereitgestellt werden.

    Wenn Sie "Zurück" auswählen, kehren Sie zum vorherigen Befehlsdetektivfenster zurück.

    Die folgende Abbildung zeigt die Lösungsebenen für den Befehl in unserem Beispiel und gibt an, dass es eine Lösungsebene für die Kontaktentität gibt, dass es sich um eine nicht verwaltete Anpassung handelt, die von der Lösung mit dem Titel "Aktiv" gekennzeichnet ist. Ihr tatsächliches Szenario kann unterschiedlich sein, Möglicherweise verfügen Sie nicht über eine aktive Lösungsebene, Sie haben möglicherweise eine verwaltete Lösung, und der Name dieser Lösung wird hier aufgeführt.

    Screenshot zeigt ein Beispiel für die Lösungsebene.

  3. Nachdem wir nun die Lösungsebenen überprüft und die Lösung identifiziert haben, die die Anpassung installiert hat, müssen wir die Definition in der entsprechenden Lösung korrigieren.

Wählen Sie eine der folgenden Optionen aus, die Ihrem jeweiligen Szenario entsprechen:

Der Befehl befindet sich in der nicht verwalteten aktiven Lösung.

Um einen Befehl in der aktiven nicht verwalteten Lösungsebene zu löschen, exportieren wir eine nicht verwaltete Lösung, die die Entität oder das Anwendungsmenüband enthält, und bearbeiten den <RibbonDiffXml> Knoten in der datei customizations.xml, und importieren Sie dann eine neue Version dieser Lösung, in der dieser Befehl entfernt wurde, um die Komponente zu löschen. Informationen finden Sie unter "Exportieren", "Vorbereiten der Bearbeitung" und "Importieren des Menübands".

Der Befehl ist entitätsspezifisch.

Basierend auf unserem Beispielszenario haben wir festgestellt, dass die Entität Kontakt ist, und der Befehl, der gelöscht werden muss, ist Mscrm.NewRecordFromGrid und in der aktiven nicht verwalteten Lösungsebene von einem Herausgeber namens DefaultPublisherCITTest deklariert wird.

  1. Öffnen Sie erweiterte Einstellungen.

  2. Navigieren Sie zu Einstellungen>Lösungen.

  3. Wählen Sie "Neu" aus, um eine neue Lösung zu erstellen, legen Sie Publisher auf den Wert fest, der in den Lösungsebenen der Befehlsprüfung für den Befehl und die Aktive Lösungsebene angezeigt wird. (In unserem Beispiel ist diesDefaultPublisherCITTest)

  4. Wählen Sie "Entitäten>hinzufügen" aus.

  5. Wählen Sie die Entität aus, für die Ihr Befehl definiert ist (In unserem Beispiel ist dies Kontakt), und wählen Sie "OK" aus.

  6. Deaktivieren Sie die Option Entitätsmetadaten einschließen und alle Ressourcenoptionen hinzufügen, bevor Sie "Fertig stellen" auswählen.

  7. Wählen Sie Speichern.

  8. Wählen Sie "Lösung exportieren" aus, und exportieren Sie die nicht verwaltete Lösung.

  9. Extrahieren Sie die ZIP-Datei.

  10. Öffnen Sie die datei customizations.xml .

  11. Suchen Sie das <Entity> untergeordnete Knoten des Entitätsknotens, den Sie bearbeiten möchten, und suchen Sie den untergeordneten <RibbonDiffXml> Knoten.

  12. Suchen Sie den <CommandDefinition> Knoten. (In unserem Beispiel lautet Mscrm.NewRecordFromGriddie ID des <CommandDefinition> Knotens, sodass wir den folgenden Knoten finden würden)

    Der Screenshot zeigt den Speicherort des CommandDefinition-Knotens.

  13. Bearbeiten Sie den <RibbonDiffXml> Knoten, und entfernen Sie den spezifischen <CommandDefinition> Knoten mit der ID des Befehls, den Sie löschen möchten. Stellen Sie sicher, dass Sie nicht unbeabsichtigt andere <CommandDefinition> Knoten löschen, die möglicherweise vorhanden sind. (Basierend auf unserem Beispiel würden wir den <CommandDefinition> Knoten löschen, in dem die ID angegeben ist Mscrm.NewRecordFromGrid.)

    Screenshot zum Löschen des CommandDefinition-Knotens.

  14. Speichern Sie die customizations.xml Datei.

  15. Fügen Sie die geänderte customizations.xml Datei wieder zur Lösung .zip Datei hinzu.

  16. Die Lösungsdatei importieren.

  17. Wählen Sie Alle Anpassungen veröffentlichen aus.

Der Befehl befindet sich im Anwendungsmenüband (gilt für "Alle Entitäten")

Wenn der Befehl nicht entitätsspezifisch ist, sondern auf "Alle Entitäten" anwendbar ist, die im Anwendungsmenüband deklariert sind, unterscheiden sich die Schritte geringfügig wie folgt:

  1. Öffnen Sie erweiterte Einstellungen.
  2. Navigieren Sie zu Einstellungen>Lösungen.
  3. Wählen Sie "Neu" aus, um eine neue Lösung zu erstellen, legen Sie Publisher auf den Wert fest, der in den Lösungsebenen der Befehlsprüfung für den Befehl und die Aktive Lösungsebene angezeigt wird.
  4. Wählen Sie "Clienterweiterungen>" aus, um vorhandene>Anwendungsmenübänder hinzuzufügen.
  5. Wählen Sie Speichern.
  6. Wählen Sie "Lösung exportieren" aus, und exportieren Sie die nicht verwaltete Lösung.
  7. Extrahieren Sie die ZIP-Datei.
  8. Öffnen Sie die datei customizations.xml .
  9. Suchen Sie den Stammknoten <RibbonDiffXml> .
  10. Suchen Sie den <CommandDefinition> Knoten.
  11. Bearbeiten Sie den <RibbonDiffXml> Knoten, und entfernen Sie den <CommandDefinition> Knoten mit der ID des Befehls, den Sie löschen möchten. Stellen Sie sicher, dass Sie nicht unbeabsichtigt andere <CommandDefinitions> Knoten löschen, die möglicherweise vorhanden sind.
  12. Speichern Sie die customizations.xml Datei.
  13. Fügen Sie die geänderte customizations.xml Datei wieder zur komprimierten Lösung .zip Datei hinzu.
  14. Die Lösungsdatei importieren.
  15. Wählen Sie Alle Anpassungen veröffentlichen aus.
Der Befehl stammt aus einer benutzerdefinierten verwalteten Lösung, die mein Unternehmen erstellt hat

Führen Sie die folgenden Schritte aus, um einen Befehl zu löschen, der von einer von Ihnen erstellten benutzerdefinierten verwalteten Lösung installiert wurde:

  1. Führen Sie in Ihrer separaten Entwicklungsorganisation mit der nicht verwalteten Quellversion Ihrer benutzerdefinierten Lösung die oben aufgeführten Schritte für den Befehl in der Option "Nicht verwaltete aktive Lösung " aus.
  2. Erhöhen Sie die Version Ihrer benutzerdefinierten Lösung.
  3. Exportieren Sie die Lösung als verwaltet.
  4. Importieren Sie in Ihrer separaten betroffenen Organisation diese neue Version Ihrer benutzerdefinierten verwalteten Lösung.
Der Befehl stammt aus einer benutzerdefinierten verwalteten Lösung, die mein Unternehmen nicht erstellt hat (von Drittanbieter/ISV)

Um einen Befehl zu löschen, der von einer benutzerdefinierten verwalteten Lösung installiert wurde, die von einem Drittanbieter/ISV erstellt wurde, müssen Sie sich an den Autor der Lösung wenden und eine neue Version der Lösung anfordern, die die spezifische Befehlsdefinition entfernt hat, und dann diese neue Lösung in Ihrer betroffenen Organisation installieren.