Eine Schaltfläche auf der Befehlsleiste funktioniert in Power Apps nicht ordnungsgemäß.
Gilt für: Power Apps
Ursprüngliche KB-Nummer: 4552163
Ermitteln, warum eine Schaltfläche nicht ordnungsgemäß funktioniert
Mehrere Faktoren können dazu führen, dass eine Schaltflächenaktion fehlschlägt. Dazu gehören ungültige Menübandanpassungen, in denen die zugehörige Befehlsdefinition der Schaltfläche falsch deklariert ist.
Warnung
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. Daher funktionieren sie möglicherweise nicht ordnungsgemäß.
Wenn ein Befehl nicht ordnungsgemäß deklariert ist, kann das Auswählen einer Schaltfläche entweder nichts tun oder eine Fehlermeldung anzeigen.
Wählen Sie eine der folgenden Optionen aus, die Ihrer Situation am besten entsprechen, damit wir die beste Lösung bereitstellen können. Die erste Registerkarte ist standardmäßig ausgewählt.
Beheben einer Schaltfläche, die beim Auswählen nichts bewirkt
Wenn eine Schaltfläche ausgewählt ist und nichts auftritt, wird dies in der Regel durch eine falsche Konfiguration des Befehls verursacht, der der Schaltfläche zugeordnet ist.
Im Folgenden sind typische Befehlskonfigurationsfehler aufgeführt, die beim Deklarieren des JavaScriptFunction
Werts für die Aktion vorgenommen werden. Diese Fehler können dazu führen, dass eine Schaltfläche fehlfunktioniert und scheinbar nichts tut, wenn sie ausgewählt wird.
- Ungültiger Funktionsname: Der Name der JavaScript-Funktion stimmt nicht mit einem gültigen Funktionsnamen in der JavaScript-Webressource überein, die der Library-Eigenschaft zugewiesen ist.
- Ungültige Bibliothek: Dieser Pfad verweist nicht auf eine gültige JavaScript-Webressource oder hat kein Präfix.
$webresource:
- Fehlende Parameter: Die JavaScript-Funktion erwartet bestimmte Parameter, und die Befehlsdefinition deklariert sie nicht.
- Falscher Parametertyp oder falsche Reihenfolge: Die Parameter werden mithilfe eines falschen Typs deklariert oder sind in einer anderen Reihenfolge als der Parameter, in dem sie in der JavaScript-Funktionsdeklaration aufgeführt sind.
Weitere Konfigurationshilfen finden Sie unter "Definieren von Menübandaktionen ".
Wenn diese Konfigurationen korrekt sind, kann ein JavaScript-Codefehler die Ursache sein. Wenn die benutzerdefinierte JavaScript-Funktion falsch codiert ist und das erwartete Verhalten nicht aufruft, funktioniert die Schaltfläche nicht wie erwartet. Wenn Sie einen der aufgeführten Konfigurationsfehler finden, beheben Sie die Befehlsdefinition, um das Problem zu beheben. Andernfalls müssen Sie möglicherweise den JavaScript-Funktionscode debuggen und korrigieren, damit die Schaltfläche ordnungsgemäß funktioniert.
Ermitteln Sie, was der Schaltflächenbefehl ist und welche Lösung die ungültige Definition installiert hat.
Aktivieren Sie die Befehlsüberprüfung, und wählen Sie die zu prüfende Befehlsschaltfläche aus.
Wählen Sie die Registerkarte "Befehlseigenschaften " aus, um die Details des Befehls für diese Schaltfläche anzuzeigen.
Auf der Registerkarte "Befehlseigenschaften " werden die Aktionen und die entsprechende
JavaScriptFunction
Konfiguration angezeigt. Wählen Sie unter dem Befehlsnamen den Link "Ansicht-Befehlsdefinitionslösungsebenen " aus, um die Lösungen anzuzeigen, die eine Definition des Befehls installiert haben.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 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 Definition sein, die von der Anwendung verwendet wird. Alle benutzerdefinierten verwalteten Lösungen, die nicht von Microsoft veröffentlicht werden, haben auch Vorrang vor von Microsoft veröffentlichten Lösungsebenen.
Der Entitätskontext gibt das Objekt an, auf dem sich die Menübandanpassung befindet. Wenn "Alle Entitäten" aufgeführt ist, befindet sich die Ebene aus den Clienterweiterungen des Anwendungsmenübands und nicht auf entitätsspezifisch. 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.
Wenn nur eine Lösungsebene vorhanden ist, fahren Sie mit Schritt 8 fort. Wählen Sie andernfalls die beiden obersten Lösungsebenen aus. (Wenn Sie über eine Ebene in der aktiven Lösung verfügen, sie aber nicht oben aufgeführt ist, wählen Sie die Aktive Lösungsschicht und dann die oberste Zeile aus.) Wählen Sie dann "Vergleichen" aus.
Der Vergleich der aktuellen aktiven Definition und der vorherigen inaktiven Definition wird angezeigt und zeigt ggf. die Unterschiede an. Das folgende Beispiel zeigt, dass die nicht verwaltete Active-Definition angepasst wurde, indem der
FunctionName
Wert falsch angegeben wurde, verglichen mit der anderen inaktiven Definition in der Microsoft-veröffentlichten Systemlösungsebene. DerFunctionName
Wert wird erwartetXrmCore.Commands.Delete.deletePrimaryRecord
, aber die benutzerdefinierte Definition wurde deklariertFunctionName="deletePrimaryRecord"
. In diesem Fall tritt nichts auf, wenn die Schaltfläche ausgewählt wird, da die Funktion nicht gefunden werden kann.Der Ansatz, der zum Beheben der Aktionsfunktionalität einer Schaltfläche erforderlich ist, hängt von den verschiedenen Anpassungen in Ihrem jeweiligen Szenario ab. In Anbetracht des Beispiels wurde der Befehl durch Angeben eines falschen
FunctionName
Werts angepasst. Sie können die benutzerdefinierte Version des Befehls ändern und denFunctionName
Wert korrigieren. Da es sich um eine benutzerdefinierte Außerkraftsetzung einer von Microsoft veröffentlichten Definition handelt und es keine anderen beabsichtigten Änderungen gibt, empfehlen wir, diese benutzerdefinierte Version des Befehls zu löschen, um die Standardfunktionalität wiederherzustellen.
Wählen Sie eine der folgenden Reparaturoptionen aus.
Option 1: Löschen des Befehls mit der falschen JavaScriptFunction-Deklaration
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 Sie 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 dem Beispielszenario haben Sie festgestellt, dass die Entität Konto ist, der Befehl, der gelöscht Mscrm.DeletePrimaryRecord
werden muss, und in der aktiven nicht verwalteten Lösungsebene von einem Herausgeber mit dem Namen DefaultPublisherCITTest deklariert wird.
Öffnen Sie erweiterte Einstellungen.
Navigieren Sie zu Einstellungen>Lösungen.
Wählen Sie "Neu" aus, um eine neue Lösung zu erstellen, und 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. (Im Beispiel ist diesDefaultPublisherCITTest.)
Wählen Sie "Entitäten>hinzufügen" aus.
Wählen Sie die Entität aus, für die Ihr Befehl definiert ist (im Beispiel ist dies "Konto"), und wählen Sie dann "OK" aus.
Stellen Sie sicher, dass Sie die Entitätsmetadaten einschließen und alle Ressourcenoptionen hinzufügen, bevor Sie "Fertig stellen" auswählen.
Wählen Sie Speichern.
Wählen Sie "Lösung exportieren" aus, und exportieren Sie die nicht verwaltete Lösung.
Extrahieren Sie die ZIP-Datei.
Öffnen Sie die datei customizations.xml .
Suchen Sie das
<Entity>
untergeordnete Knoten des Entitätsknotens, den Sie bearbeiten möchten, und suchen Sie den untergeordneten<RibbonDiffXml>
Knoten.Suchen Sie den
<CommandDefinition>
Knoten. (Im Beispiel lautetMscrm.DeletePrimaryRecord
die ID des<CommandDefinition>
Knotens . Daher würden Sie den folgenden Knoten finden.)Bearbeiten Sie den
<RibbonDiffXml>
Knoten, um den spezifischen<CommandDefinition>
Knoten zu entfernen, der die ID des Befehls enthält, den Sie löschen möchten. Stellen Sie sicher, dass Sie nicht versehentlich andere<CommandDefinition>
Knoten löschen, die möglicherweise vorhanden sind. (Basierend auf dem Beispiel würden Sie den<CommandDefinition>
Knoten löschen, in dem die ID lautetMscrm.DeletePrimaryRecord
.)Speichern Sie die customizations.xml Datei.
Stellen Sie die geänderte customizations.xml Datei in der Lösung .zip Datei wieder her.
Die Lösungsdatei importieren.
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 stattdessen auf "Alle Entitäten" anwendbar ist, die im Anwendungsmenüband deklariert sind, unterscheiden sich die Schritte geringfügig, wie folgt:
- Öffnen Sie erweiterte Einstellungen.
- Navigieren Sie zu Einstellungen>Lösungen.
- Wählen Sie "Neu" aus, um eine neue Lösung zu erstellen, und 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.
- Wählen Sie "Clienterweiterungen>" aus, um vorhandene>Anwendungsmenübänder hinzuzufügen.
- Wählen Sie Speichern.
- Wählen Sie "Lösung exportieren" aus, und exportieren Sie die nicht verwaltete Lösung.
- Extrahieren Sie die ZIP-Datei.
- Öffnen Sie die datei customizations.xml .
- Suchen Sie den Stammknoten
<RibbonDiffXml>
. - Suchen Sie den
<CommandDefinition>
Knoten. - 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 versehentlich andere<CommandDefinition>
Knoten löschen, die möglicherweise vorhanden sind. - Speichern Sie die customizations.xml Datei.
- Stellen Sie die geänderte customizations.xml Datei in der komprimierten Lösung .zip Datei wieder her.
- Die Lösungsdatei importieren.
- 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:
- 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.
- Erhöhen Sie die Version Ihrer benutzerdefinierten Lösung.
- Exportieren Sie die Lösung als verwaltet.
- 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 (aus drittem Teil oder ISV).
Um einen Befehl zu löschen, der von einer benutzerdefinierten verwalteten Lösung installiert wurde, die von einem Drittanbieter oder ISV erstellt wurde, müssen Sie sich an den Autor der Lösung wenden, um eine neue Version der Lösung anzufordern, die die spezifische Befehlsdefinition entfernt hat, und dann diese neue Lösung in Ihrer betroffenen Organisation installieren.
Option 2: Beheben der JavaScriptFunction-Befehlsdeklaration
Der Befehl befindet sich in der nicht verwalteten aktiven Lösung.
Um einen Befehl in der aktiven nicht verwalteten Lösungsebene zu beheben, exportieren Sie eine nicht verwaltete Lösung, die die Entität oder das Menüband "Anwendung" enthält, bearbeiten Sie den <RibbonDiffXml>
Knoten in der datei customizations.xml, und importieren Sie dann eine neue Version dieser Lösung, die die feste Befehlsdefinition enthält. Informationen finden Sie unter "Exportieren", "Vorbereiten der Bearbeitung" und "Importieren des Menübands".
Warnung
Entfernen Mscrm.HideOnModern
Sie keine Anzeigeregel von 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äß.
Der Befehl ist entitätsspezifisch.
Basierend auf dem Beispielszenario haben Sie festgestellt, dass die Entität Konto ist, der Befehl, der korrigiert Mscrm.DeletePrimaryRecord
werden muss, und es wird in der aktiven nicht verwalteten Lösungsebene von einem Herausgeber mit dem Namen DefaultPublisherCITTest deklariert.
Öffnen Sie erweiterte Einstellungen.
Navigieren Sie zu Einstellungen>Lösungen.
Wählen Sie "Neu" aus, um eine neue Lösung zu erstellen, und 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. (Im Beispiel ist diesDefaultPublisherCITTest.)
Wählen Sie "Entitäten>hinzufügen" aus.
Wählen Sie die Entität aus, für die Ihr Befehl definiert ist (im Beispiel ist das Konto), und wählen Sie dann OK aus.
Stellen Sie sicher, dass Sie die Entitätsmetadaten einschließen und alle Ressourcenoptionen hinzufügen, bevor Sie "Fertig stellen" auswählen.
Wählen Sie Speichern.
Wählen Sie "Lösung exportieren" aus, und exportieren Sie die nicht verwaltete Lösung.
Extrahieren Sie die ZIP-Datei.
Öffnen Sie die datei customizations.xml .
Suchen Sie das
<Entity>
untergeordnete Knoten des Entitätsknotens, den Sie bearbeiten möchten, und suchen Sie den untergeordneten<RibbonDiffXml>
Knoten.Suchen Sie den
<CommandDefinition>
Knoten. (Im Beispiel lautetMscrm.DeletePrimaryRecord
die ID des<CommandDefinition>
Knotens . Daher würden Sie den folgenden Knoten finden.)Bearbeiten Sie den
<RibbonDiffXml>
Knoten, und nehmen Sie die erforderlichen Änderungen am<CommandDefinition>
Knoten vor, mit denen der Befehl unter den richtigen Umständen ordnungsgemäß funktioniert, um den Befehl zu beheben. Weitere Informationen zum Deklarieren von Befehlen finden Sie unter Definieren von Menübandbefehlen und Definieren von Menübandaktionen. (Basierend auf dem Beispiel würden Sie die<CommandDefinition>
KnotenJavaScriptFunction
ändern, indem Sie denFunctionName
Wert aufXrmCore.Commands.Delete.deletePrimaryRecord
.)Stellen Sie die geänderte customizations.xml Datei in der Lösung .zip Datei wieder her.
Die Lösungsdatei importieren.
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 stattdessen auf "Alle Entitäten" anwendbar ist, die im Anwendungsmenüband deklariert sind, unterscheiden sich die Schritte geringfügig, wie folgt:
- Öffnen Sie erweiterte Einstellungen.
- Navigieren Sie zu Einstellungen>Lösungen.
- Wählen Sie "Neu" aus, um eine neue Lösung zu erstellen, und 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.
- Wählen Sie "Clienterweiterungen>" aus, um vorhandene>Anwendungsmenübänder hinzuzufügen.
- Wählen Sie Speichern.
- Wählen Sie "Lösung exportieren" aus, und exportieren Sie die nicht verwaltete Lösung.
- Extrahieren Sie die ZIP-Datei.
- Öffnen Sie die datei customizations.xml .
- Suchen Sie den Stammknoten
<RibbonDiffXml>
. - Suchen Sie die
<CommandDefinition>
. - Bearbeiten Sie den
<RibbonDiffXml>
Knoten, um die erforderlichen Änderungen am<CommandDefinition>
Knoten vorzunehmen, mit denen der Befehl unter den richtigen Umständen ordnungsgemäß funktioniert, um den Befehl zu beheben. Weitere Informationen zum Deklarieren von Befehlen finden Sie unter Definieren von Menübandbefehlen und Definieren von Menübandaktionen. - Speichern Sie die customizations.xml Datei.
- Stellen Sie die geänderte customizations.xml Datei in der komprimierten Lösung .zip Datei wieder her.
- Die Lösungsdatei importieren.
- Wählen Sie Alle Anpassungen veröffentlichen aus.
Der Befehl stammt aus einer benutzerdefinierten verwalteten Lösung, die ich erstellt habe.
Führen Sie die folgenden Schritte aus, um einen Befehl zu beheben, der von einer von Ihnen erstellten benutzerdefinierten verwalteten Lösung installiert wurde:
- 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.
- Erhöhen Sie die Version Ihrer benutzerdefinierten Lösung.
- Exportieren Sie die Lösung als verwaltet.
- 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 ich nicht erstellt habe oder die meine Organisation nicht besitzt (von einem Drittanbieter/ISV).
Um einen Befehl zu beheben, der von einer benutzerdefinierten verwalteten Lösung installiert wurde, die von einem Drittanbieter oder ISV erstellt wurde, müssen Sie sich an den Autor der Lösung wenden, um eine neue Version der Lösung anzufordern, die die Definition eines festen Befehls enthält, und diese neue Lösung in Ihrer betroffenen Organisation zu installieren.
Ich erhalte eine Skriptfehlermeldung: "Ungültige JavaScript-Aktionsbibliothek"](#tab/Fehler)
Beheben einer Schaltfläche, die beim Auswählen einen Fehler anzeigt
Wenn eine Menüband-Befehlsleistenschaltfläche ausgewählt ist und ein Fehler auftritt, wird der Fehler in der Regel durch falsche Menübandbefehlsanpassungen verursacht.
Beheben des Skriptfehlers "Ungültige JavaScript-Aktionsbibliothek"
Möglicherweise erhalten Sie eine Skriptfehlermeldung, die etwa wie folgt aussieht:
Ungültige JavaScript-Aktionsbibliothek: [Skriptname] ist keine Webressource und wird nicht unterstützt.
Dies wird durch eine ungültige Menübandbefehlsanpassung verursacht, die eine falsche Bibliothek für den Befehl JavaScriptFunction
deklariert hat.
Aktivieren Sie die Befehlsüberprüfung, und wählen Sie die zu prüfende Befehlsschaltfläche aus.
Das folgende Beispiel zeigt die Schaltfläche "Neu " auf der Formularseite der Kontoentität und wird durch ein Element mit der Bezeichnung "Neu" dargestellt.
Wählen Sie die Registerkarte "Befehlseigenschaften " aus, um die Details des Befehls für diese Schaltfläche anzuzeigen. Dadurch werden die Aktionen- und JavaScriptFunction-Deklaration sowie alle Aktivierungs- oder Anzeigeregeln zusammen mit dem Ergebnis (True, False, Übersprungen) jeder Regelauswertung angezeigt.
Erweitern Sie JavaScriptFunction, indem Sie das Symbol "Chevron" auswählen, um die Details der Funktionsdeklaration anzuzeigen. Die Library-Eigenschaft muss eine JavaScript-Webressource sein und dem Präfix vorangestellt
$webresource:
sein. Das folgende Beispiel zeigt, dass die Library-Eigenschaft _/_static/common/scripts/RibbonActions.js ist. Dies ist kein Pfad zu einer gültigen JavaScript-Webressource. Als Nächstes sollten Sie die Lösungsebenen des Befehls überprüfen, um zu versuchen, den richtigen Wert zu identifizieren, um das Problem zu beheben.Wählen Sie unter dem Befehlsnamen den Link "Ansicht-Befehlsdefinitionslösungsebenen " aus, um die Lösungen anzuzeigen, die eine Definition des Befehls installiert haben.
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 nicht von Microsoft veröffentlicht werden, haben auch Vorrang vor 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 im Beispiel und gibt an, dass es zwei Lösungsebenen gibt, und eine ist eine nicht verwaltete Anpassung, die von der Lösung mit dem Titel "Active" gekennzeichnet ist und die andere aus der von Microsoft veröffentlichten Systemlösung stammt. Ihr tatsächliches Szenario kann sich unterscheiden, 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.
Wählen Sie die obersten beiden Zeilen aus, und wählen Sie "Vergleichen" aus, um einen Vergleich der definitionen anzuzeigen, die von den einzelnen Lösungen bereitgestellt werden. Wenn Sie nur über eine Lösungsebene verfügen, überspringen Sie diesen Schritt.
Der Vergleich zwischen Befehlsdefinitionen zeigt alle Unterschiede an, die zwischen den beiden Ebenen bestehen können. Das folgende Beispiel zeigt eindeutig, dass sich der Bibliothekswert unterscheidet. Der nicht verwaltete Eintrag aus der aktiven Lösung ist auf einen falschen Pfad _/_static/common/scripts/RibbonActions.js festgelegt (Ihr bestimmter Pfad kann leicht abweichen), und die Standarddefinition von Microsoft hat die Bibliothek auf
$webresoure:Main_system_library.js
festgelegt. Dies ist ein unterstützter Pfad für diesen bestimmten Befehl (dieser Wert kann je nach Ihrem jeweiligen Befehl unterschiedlich sein). Der einzige unterstützte Pfad ist ein Pfad, der mit$webresource:
dem Namen einer gültigen JavaScript-Webressource beginnt und endet.Nachdem Sie die Lösungsebenen überprüft und die Lösung ermittelt haben, die die Anpassung installiert hat, müssen Sie die Definition in der entsprechenden Lösung beheben.
Wählen Sie eine der folgenden Optionen aus, die Ihrem jeweiligen Szenario entsprechen:
Der Befehl befindet sich in der nicht verwalteten aktiven Lösung.
Der Ansatz zum Beheben des Befehls hängt davon ab, ob Ihre Definition die einzige ist oder ob andere inaktive Definitionen vorhanden sind und ob die Änderungen beabsichtigt wurden.
Wählen Sie die Option aus, die Ihr Szenario widerspiegelt:
Der Befehl hat keine beabsichtigten Änderungen, und ich möchte diese benutzerdefinierte Ebene entfernen.
Um einen Befehl in der aktiven nicht verwalteten Lösungsebene zu löschen, exportieren Sie eine nicht verwaltete Lösung, die die Entität oder das Anwendungsmenüband enthält, bearbeiten Sie 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 dem Beispielszenario haben Sie festgestellt, dass die Entität Konto ist, der Befehl, der gelöscht
Mscrm.NewRecordFromForm
werden muss, und in der aktiven nicht verwalteten Lösungsebene von einem Herausgeber mit dem Namen DefaultPublisherCITTest deklariert wird.Öffnen Sie erweiterte Einstellungen.
Navigieren Sie zu Einstellungen>Lösungen.
Wählen Sie "Neu" aus, um eine neue Lösung zu erstellen, und 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. (Im Beispiel ist diesDefaultPublisherCITTest.)
Wählen Sie "Entitäten>hinzufügen" aus.
Wählen Sie die Entität aus, für die Ihr Befehl definiert ist. (Im Beispiel ist dies konto), und wählen Sie dann "OK" aus.
Stellen Sie sicher, dass Sie die Entitätsmetadaten einschließen und alle Ressourcenoptionen hinzufügen, bevor Sie "Fertig stellen" auswählen.
Wählen Sie Speichern.
Wählen Sie "Lösung exportieren" aus, und exportieren Sie die nicht verwaltete Lösung.
Extrahieren Sie die ZIP-Datei.
Öffnen Sie die datei customizations.xml .
Suchen Sie das
<Entity>
untergeordnete Knoten des Entitätsknotens, den Sie bearbeiten möchten, und suchen Sie den untergeordneten<RibbonDiffXml>
Knoten.Suchen Sie den
<CommandDefinition>
Knoten (im Beispiel ist die ID der KennungMscrm.NewRecordFromForm
<CommandDefinition>
. Daher würden Sie den folgenden Knoten finden.)Bearbeiten Sie den
<RibbonDiffXml>
Knoten, um den spezifischen<CommandDefinition>
Knoten zu entfernen. Stellen Sie sicher, dass Sie nicht versehentlich andere<CommandDefinition>
Knoten löschen, die möglicherweise vorhanden sind. (Basierend auf dem Beispiel würden Sie den<CommandDefinition>
Knoten löschen, in dem die ID lautetMscrm.NewRecordFromForm
.)Speichern Sie die customizations.xml Datei.
Stellen Sie die geänderte customizations.xml Datei in der Lösung .zip Datei wieder her.
Die Lösungsdatei importieren.
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 stattdessen auf "Alle Entitäten" anwendbar ist, die im Anwendungsmenüband deklariert sind, unterscheiden sich die Schritte geringfügig, wie folgt:
- Öffnen Sie erweiterte Einstellungen.
- Navigieren Sie zu Einstellungen>Lösungen.
- Wählen Sie "Neu" aus, um eine neue Lösung zu erstellen, und 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.
- Wählen Sie "Clienterweiterungen>" aus, um vorhandene>Anwendungsmenübänder hinzuzufügen.
- Wählen Sie Speichern.
- Wählen Sie "Lösung exportieren" aus, und exportieren Sie die nicht verwaltete Lösung.
- Extrahieren Sie die ZIP-Datei.
- Öffnen Sie die datei customizations.xml .
- Suchen Sie den Stammknoten
<RibbonDiffXml>
. - Suchen Sie den
<CommandDefinition>
Knoten. - Bearbeiten Sie
<RibbonDiffXml>
, um den<CommandDefinition>
Knoten zu entfernen, der die entsprechende ID des Befehls enthält, den Sie löschen möchten. Stellen Sie sicher, dass Sie nicht versehentlich andere<CommandDefinition>
Knoten löschen, die möglicherweise vorhanden sind. - Speichern Sie die customizations.xml Datei.
- Stellen Sie die geänderte customizations.xml Datei in der komprimierten Lösung .zip Datei wieder her.
- Die Lösungsdatei importieren.
- Wählen Sie Alle Anpassungen veröffentlichen aus.
Der Befehl verfügt über zusätzliche Änderungen, die ich beibehalten möchte, und ich möchte diese Lösungsschicht beheben.
Um einen Befehl in der aktiven nicht verwalteten Lösungsebene zu beheben, exportieren Sie 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, die die feste Befehlsdefinition enthält. Informationen finden Sie unter "Exportieren", "Vorbereiten der Bearbeitung" und "Importieren des Menübands".Warnung
Entfernen
Mscrm.HideOnModern
Sie keine Anzeigeregel von einem Befehl, um zu erzwingen, dass eine Schaltfläche in der Unified Interface angezeigt wird. Befehle mit derMscrm.HideOnModern
Anzeigeregel sind für die ältere Webclientschnittstelle vorgesehen und werden in der Unified Interface nicht unterstützt und funktionieren möglicherweise nicht ordnungsgemäß.Der Befehl ist entitätsspezifisch.
Basierend auf dem Beispielszenario haben Sie festgestellt, dass die Entität Konto ist, der Befehl, der korrigiert
Mscrm.NewRecordFromForm
werden muss, und es wird in der aktiven nicht verwalteten Lösungsebene von einem Herausgeber mit dem Namen DefaultPublisherCITTest deklariert.Öffnen Sie erweiterte Einstellungen.
Navigieren Sie zu Einstellungen>Lösungen.
Wählen Sie "Neu" aus, um eine neue Lösung zu erstellen, und 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. (Im Beispiel ist diesDefaultPublisherCITTest.)
Wählen Sie "Entitäten>hinzufügen" aus.
Wählen Sie die Entität aus, für die Ihr Befehl definiert ist (im Beispiel ist das Konto), und wählen Sie dann OK aus.
Stellen Sie sicher, dass Sie die Entitätsmetadaten einschließen und alle Ressourcenoptionen hinzufügen, bevor Sie "Fertig stellen" auswählen.
Wählen Sie Speichern.
Wählen Sie "Lösung exportieren" aus, und exportieren Sie die nicht verwaltete Lösung.
Extrahieren Sie die ZIP-Datei.
Öffnen der customizations.xml-Datei
Suchen Sie das
<Entity>
untergeordnete Knoten des Entitätsknotens, den Sie bearbeiten möchten, und suchen Sie den untergeordneten<RibbonDiffXml>
Knoten.Suchen Sie den
<CommandDefinition>
Knoten. (Im Beispiel lautetMscrm.NewRecordFromForm
die ID des<CommandDefinition>
Knotens . Daher würden Sie den folgenden Knoten finden.)Bearbeiten Sie
<RibbonDiffXml>
, um die erforderlichen Änderungen am<CommandDefinition>
Knoten vorzunehmen, mit denen der Befehl unter den richtigen Umständen ordnungsgemäß funktioniert, um den Befehl zu beheben. Weitere Informationen zum Deklarieren von Befehlen finden Sie unter Definieren von Menübandbefehlen und Definieren von Menübandaktionen. (Basierend auf dem Beispiel würden Sie den<CommandDefinition>
Knoten durch FestlegenLibrary="$webresoure:Main_system_library.js"
ändern und dann sicherstellen, dass derFunctionName
Wert übereinstimmt. Im Beispiel wäreFunctionName="XrmCore.Commands.Open.openNewRecord"
dies .)Speichern Sie die customizations.xml Datei.
Stellen Sie die geänderte customizations.xml Datei in der Lösung .zip Datei wieder her.
Die Lösungsdatei importieren.
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:
- Öffnen Sie erweiterte Einstellungen.
- Navigieren Sie zu Einstellungen>Lösungen.
- Wählen Sie "Neu" aus, um eine neue Lösung zu erstellen, und 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.
- Wählen Sie "Clienterweiterungen>" aus, um vorhandene>Anwendungsmenübänder hinzuzufügen.
- Wählen Sie Speichern.
- Wählen Sie "Lösung exportieren" aus, und exportieren Sie die nicht verwaltete Lösung.
- Extrahieren Sie die ZIP-Datei.
- Öffnen Sie die datei customizations.xml .
- Suchen Sie den Stammknoten
<RibbonDiffXml>
. - Suchen Sie den
<CommandDefinition>
Knoten. - Bearbeiten Sie den
<RibbonDiffXml>
Knoten, um die erforderlichen Änderungen am<CommandDefinition>
Knoten vorzunehmen, mit denen der Befehl unter den richtigen Umständen ordnungsgemäß funktioniert, um den Befehl zu beheben. Weitere Informationen zum Deklarieren von Befehlen finden Sie unter Definieren von Menübandbefehlen und Definieren von Menübandaktionen. - Speichern Sie die customizations.xml Datei.
- Stellen Sie die geänderte customizations.xml Datei in der komprimierten Lösung .zip Datei wieder her.
- Die Lösungsdatei importieren.
- Wählen Sie Alle Anpassungen veröffentlichen aus.
Der Befehl stammt aus einer benutzerdefinierten verwalteten Lösung, die ich erstellt habe.
Führen Sie die folgenden Schritte aus, um einen Befehl zu beheben, der von einer von Ihnen erstellten benutzerdefinierten verwalteten Lösung installiert wurde:
- 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.
- Erhöhen Sie die Version Ihrer benutzerdefinierten Lösung.
- Exportieren Sie die Lösung als verwaltet.
- 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 ich nicht erstellt habe oder die meine Organisation nicht besitzt (von einem Drittanbieter oder ISV).
Um einen Befehl zu beheben, der von einer benutzerdefinierten verwalteten Lösung installiert wurde, die von einem Drittanbieter oder ISV erstellt wurde, müssen Sie sich an den Autor der Lösung wenden, um eine neue Version der Lösung anzufordern, die die feste Befehlsdefinition enthält, und dann diese neue Lösung in Ihrer betroffenen Organisation installieren.
Der Befehl befindet sich in einer von Microsoft veröffentlichten verwalteten Lösung.
Um einen Befehl zu beheben, der von einer von Microsoft veröffentlichten verwalteten Lösung installiert wurde, müssen Sie möglicherweise eine neuere Version der Lösung installieren. Dies geschieht in der Regel während eines Releaseupdates. Es ist möglich, dass Sie einen Fehler identifiziert haben, der noch behoben werden muss. Wenden Sie sich an den Kundensupport, um Unterstützung zu erhalten.