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, bei denen die zugeordnete Befehlsdefinition der Schaltfläche fälschlicherweise deklariert ist.
Warnung
Entfernen Sie die Mscrm.HideOnModern
Anzeigeregel nicht aus einem Befehl, um zu erzwingen, dass eine Schaltfläche in der einheitlichen Benutzeroberfläche angezeigt wird. Befehle, die über die Mscrm.HideOnModern
Anzeigeregel verfügen, sind für die Legacy-Webclientschnittstelle vorgesehen und werden in der einheitlichen Schnittstelle 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 keine Aktion ausführen oder eine Fehlermeldung anzeigen.
Wählen Sie eine der folgenden Optionen aus, die am besten zu Ihrer Situation passt, damit wir die beste Lösung bereitstellen können. Die erste Registerkarte ist standardmäßig ausgewählt.
Korrigieren einer Schaltfläche, die keine Aktion ausführt, wenn sie ausgewählt ist
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 Fehler bei der Befehlskonfiguration aufgeführt, die beim Deklarieren des JavaScriptFunction
Werts für die Aktion gemacht werden. Diese Fehler können dazu führen, dass eine Schaltfläche nicht funktioniert und so aussieht, als ob sie bei Auswahl nichts bewirkt.
- 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 mit einem falschen Typ deklariert oder weisen eine andere Reihenfolge auf als die, in der sie in der JavaScript-Funktionsdeklaration aufgeführt sind.
Weitere Hilfe zur Konfiguration 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 nicht das erwartete Verhalten 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.
Identifizieren 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 überprü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 den Link Projektmappenebenen anzeigen unter dem Befehlsnamen aus, um die Lösungen anzuzeigen, die eine Definition des Befehls installiert haben.Im Bereich Projektmappenebenen wird die Schichtung der einzelnen Menübandkomponentendefinitionen angezeigt, die eine bestimmte Lösung installiert hat. Die Ebene am Anfang der Liste ist die aktuelle Definition, die von der Anwendung verwendet wird. Die anderen Ebenen sind inaktiv und werden derzeit von der Anwendung nicht verwendet. Wenn die oberste Lösung deinstalliert oder eine aktualisierte Version installiert ist, 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 dies immer die Definition, die von der Anwendung verwendet wird. Wenn keine aktive Lösung aufgeführt ist, ist die am Anfang der Liste aufgeführte Lösung die Definition, die von der Anwendung verwendet wird. Alle benutzerdefinierten verwalteten Lösungen, die nicht von Microsoft veröffentlicht werden, haben ebenfalls 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, stammt die Ebene aus den Clienterweiterungen des Anwendungsmenübands und nicht 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 Fenster der Befehlsüberprüfung zurück.
Wenn es nur eine Lösungsebene gibt, fahren Sie mit Schritt 8 fort. Wählen Sie andernfalls die beiden obersten Lösungsebenen aus. (Wenn Sie über eine Ebene in der Aktiven Projektmappe verfügen, diese aber nicht oben aufgeführt ist, wählen Sie die Projektmappenebene Aktiv und dann die oberste Zeile aus.) Wählen Sie dann Vergleichen aus.
Der Vergleich der aktuellen aktiven Definition mit der vorherigen inaktiven Definition wird angezeigt und zeigt ggf. die Unterschiede an. Das folgende Beispiel zeigt, dass die nicht verwaltete Aktive Definition durch falsche Angabe des
FunctionName
Werts im Vergleich zur anderen inaktiven Definition auf der von Microsoft veröffentlichten Systemlösungsebene angepasst wurde. EsFunctionName
wird erwartet, dass der Wert istXrmCore.Commands.Delete.deletePrimaryRecord
, aber die benutzerdefinierte Definition hat deklariertFunctionName="deletePrimaryRecord"
. In diesem Fall geschieht nichts, wenn die Schaltfläche ausgewählt wird, da die Funktion nicht gefunden werden kann.Der zum Beheben der Aktionsfunktionalität einer Schaltfläche erforderliche Ansatz hängt von den verschiedenen Anpassungen in Ihrem spezifischen Szenario ab. Im Beispiel wurde der Befehl durch Angabe eines falschen
FunctionName
Werts angepasst. Sie können die benutzerdefinierte Version des Befehls ändern und denFunctionName
Wert korrigieren. Da es sich hierbei um eine benutzerdefinierte Außerkraftsetzung einer von Microsoft veröffentlichten Definition handelt und keine anderen beabsichtigten Änderungen vorgenommen werden, 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 Projektmappe.
Um einen Befehl auf der Projektmappenebene Aktiv 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 customizations.xml-Datei und importieren dann eine neue Version dieser Lösung, in der dieser Befehl entfernt wurde, um die Komponente zu löschen. Weitere Informationen finden Sie unter Exportieren, Vorbereiten der Bearbeitung und Importieren des Menübands.
Der Befehl ist entitätsspezifisch.
Basierend auf dem Beispielszenario haben Sie ermittelt, dass die Entität konto ist, der Befehl, der gelöscht werden muss, ist Mscrm.DeletePrimaryRecord
und in der Nicht verwalteten Projektmappenebene Aktiv von einem Herausgeber mit dem Namen DefaultPublisherCITTest deklariert wird.
Öffnen Sie Erweiterte Einstellungen.
Navigieren Sie zu Einstellungen>Projektmappen.
Wählen Sie Neu aus, um eine neue Projektmappe zu erstellen, und legen Sie Publisher auf den Wert fest, der in der Liste der Projektmappenebenen der Befehlsüberprüfung für den Befehl und die Aktive Projektmappenebene angezeigt wird. (Im Beispiel ist dies DefaultPublisherCITTest.)
Wählen Sie Entitäten>Vorhandene 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 Optionen Entitätsmetadaten einschließen und Alle Ressourcen hinzufügen deaktivieren, bevor Sie Fertig stellen auswählen.
Klicken Sie auf Speichern.
Wählen Sie Projektmappe exportieren aus, und exportieren Sie die nicht verwaltete Lösung.
Extrahieren Sie die .zip Datei.
Öffnen Sie die dateicustomizations.xml .
Suchen Sie den
<Entity>
untergeordneten 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 suchen.)Bearbeiten Sie den
<RibbonDiffXml>
Knoten, um den bestimmten<CommandDefinition>
Knoten zu entfernen, der über die ID des Befehls verfügt, 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 sich die ID befindetMscrm.DeletePrimaryRecord
.)Speichern Sie die customizations.xml Datei.
Stellen Sie die geändertecustomizations.xml-Datei in der Projektmappendatei .zip wieder her.
Importieren Sie die Projektmappendatei.
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, sind die Schritte wie folgt etwas anders:
- Öffnen Sie Erweiterte Einstellungen.
- Navigieren Sie zu Einstellungen>Projektmappen.
- Wählen Sie Neu aus, um eine neue Projektmappe zu erstellen, und legen Sie Publisher auf den Wert fest, der in der Liste der Projektmappenebenen der Befehlsüberprüfung für den Befehl und die Aktive Projektmappenebene angezeigt wird.
- Wählen Sie Clienterweiterungen>Menübandshinzufügen> aus.
- Klicken Sie auf Speichern.
- Wählen Sie Projektmappe exportieren aus, und exportieren Sie die nicht verwaltete Lösung.
- Extrahieren Sie die .zip Datei.
- Öffnen Sie die dateicustomizations.xml .
- Suchen Sie den Stammknoten
<RibbonDiffXml>
. - Suchen Sie den
<CommandDefinition>
Knoten. - Bearbeiten Sie ,
<RibbonDiffXml>
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 Projektmappe .zip-Datei wieder her.
- Importieren Sie die Projektmappendatei.
- Wählen Sie Alle Anpassungen veröffentlichen aus.
Der Befehl stammt aus einer benutzerdefinierten verwalteten Lösung, die von meinem Unternehmen erstellt wurde.
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 Ihrem separaten Entwicklungs-organization mit der nicht verwalteten Quellversion Ihrer benutzerdefinierten Lösung die oben aufgeführten Schritte für die Option Der Befehl befindet sich in der nicht verwalteten aktiven Lösung aus.
- Erhöhen Sie die Version Ihrer benutzerdefinierten Lösung.
- Exportieren Sie die Lösung als verwaltet.
- Importieren Sie in Ihrem separaten betroffenen organization diese neue Version Ihrer benutzerdefinierten verwalteten Lösung.
Der Befehl stammt aus einer benutzerdefinierten verwalteten Lösung, die mein Unternehmen nicht erstellt hat (von drittanbietern 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, für die die spezifische Befehlsdefinition entfernt wurde, und dann diese neue Lösung in Ihrem betroffenen organization installieren.
Option 2: Korrigieren der JavaScriptFunction-Deklaration des Befehls
Der Befehl befindet sich in der nicht verwalteten aktiven Projektmappe.
Um einen Befehl auf der Ebene Aktive nicht verwaltete Lösung zu beheben, exportieren Sie eine nicht verwaltete Lösung, die die Entität oder das Anwendungsmenüband enthält, bearbeiten den <RibbonDiffXml>
Knoten in der customizations.xml-Datei und importieren dann eine neue Version dieser Lösung, die die feste Befehlsdefinition enthält. Weitere Informationen finden Sie unter Exportieren, Vorbereiten der Bearbeitung und Importieren des Menübands.
Warnung
Entfernen Mscrm.HideOnModern
Sie keine Anzeigeregel aus einem Befehl, um zu erzwingen, dass eine Schaltfläche in der einheitlichen Benutzeroberfläche angezeigt wird. Befehle, die über die Mscrm.HideOnModern
Anzeigeregel verfügen, sind für die Legacy-Webclientschnittstelle vorgesehen und werden in der einheitlichen Schnittstelle nicht unterstützt und funktionieren möglicherweise nicht ordnungsgemäß.
Der Befehl ist entitätsspezifisch.
Basierend auf dem Beispielszenario haben Sie ermittelt, dass die Entität konto ist, der Befehl, der korrigiert werden muss, ist Mscrm.DeletePrimaryRecord
und in der Nicht verwalteten Projektmappenebene aktiv von einem Herausgeber mit dem Namen DefaultPublisherCITTest deklariert wird.
Öffnen Sie Erweiterte Einstellungen.
Navigieren Sie zu Einstellungen>Projektmappen.
Wählen Sie Neu aus, um eine neue Projektmappe zu erstellen, und legen Sie Publisher auf den Wert fest, der in der Liste der Projektmappenebenen der Befehlsüberprüfung für den Befehl und die Aktive Projektmappenebene angezeigt wird. (Im Beispiel ist dies DefaultPublisherCITTest.)
Wählen Sie Entitäten>Vorhandene 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 Optionen Entitätsmetadaten einschließen und Alle Ressourcen hinzufügen deaktivieren, bevor Sie Fertig stellen auswählen.
Klicken Sie auf Speichern.
Wählen Sie Projektmappe exportieren aus, und exportieren Sie die nicht verwaltete Lösung.
Extrahieren Sie die .zip Datei.
Öffnen Sie die dateicustomizations.xml .
Suchen Sie den
<Entity>
untergeordneten 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 suchen.)Bearbeiten Sie den
<RibbonDiffXml>
Knoten, und nehmen Sie die erforderlichen Änderungen an dem<CommandDefinition>
Knoten vor, damit 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 des<CommandDefinition>
KnotensJavaScriptFunction
ändern, indem Sie denFunctionName
Wert aufXrmCore.Commands.Delete.deletePrimaryRecord
festlegen.)Stellen Sie die geändertecustomizations.xml-Datei in der Projektmappendatei .zip wieder her.
Importieren Sie die Projektmappendatei.
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, sind die Schritte wie folgt etwas anders:
- Öffnen Sie Erweiterte Einstellungen.
- Navigieren Sie zu Einstellungen>Projektmappen.
- Wählen Sie Neu aus, um eine neue Projektmappe zu erstellen, und legen Sie Publisher auf den Wert fest, der in der Liste der Projektmappenebenen der Befehlsüberprüfung für den Befehl und die Aktive Projektmappenebene angezeigt wird.
- Wählen Sie Clienterweiterungen>Menübandshinzufügen> aus.
- Klicken Sie auf Speichern.
- Wählen Sie Projektmappe exportieren aus, und exportieren Sie die nicht verwaltete Lösung.
- Extrahieren Sie die .zip Datei.
- Öffnen Sie die dateicustomizations.xml .
- Suchen Sie den Stammknoten
<RibbonDiffXml>
. - Suchen Sie nach .
<CommandDefinition>
- Bearbeiten Sie den
<RibbonDiffXml>
Knoten, um die erforderlichen Änderungen an dem<CommandDefinition>
Knoten vorzunehmen, damit 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 Projektmappe .zip-Datei wieder her.
- Importieren Sie die Projektmappendatei.
- 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 Ihrem separaten Entwicklungs-organization mit der nicht verwalteten Quellversion Ihrer benutzerdefinierten Lösung die oben aufgeführten Schritte für die Option Der Befehl befindet sich in der nicht verwalteten aktiven Lösung aus.
- Erhöhen Sie die Version Ihrer benutzerdefinierten Lösung.
- Exportieren Sie die Lösung als verwaltet.
- Importieren Sie in Ihrem separaten betroffenen organization diese neue Version Ihrer benutzerdefinierten verwalteten Lösung.
Der Befehl stammt aus einer benutzerdefinierten verwalteten Lösung, die ich nicht erstellt habe oder die mein organization 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 feste Befehlsdefinition enthält, und diese neue Lösung in Ihrem betroffenen organization zu installieren.
Ich erhalte eine Skriptfehlermeldung: "Ungültige JavaScript-Aktionsbibliothek"](#tab/Fehler)
Beheben einer Schaltfläche, die einen Fehler anzeigt, wenn sie ausgewählt ist
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 der folgenden ähnelt:
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 des Befehls JavaScriptFunction
deklariert hat.
Aktivieren Sie die Befehlsüberprüfung, und wählen Sie die Zu überprüfende Befehlsschaltfläche aus.
Das folgende Beispiel zeigt, dass die Schaltfläche Neu auf der Formularseite der Kontoentität sichtbar ist und durch ein Element mit der Bezeichnung Neu dargestellt wird.
Wählen Sie die Registerkarte Befehlseigenschaften aus, um die Details des Befehls für diese Schaltfläche anzuzeigen. Dadurch werden die Actions - und JavaScriptFunction-Deklaration sowie alle Aktivierten oder Anzeigen der Regeln zusammen mit dem Ergebnis (True, False, Skipped) 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 mit
$webresource:
dem Präfix versehen sein. Das folgende Beispiel zeigt, dass die Library-Eigenschaft _/_static/common/scripts/RibbonActions.jsist. Dies ist kein Pfad zu einer gültigen JavaScript-Webressource. Überprüfen Sie als Nächstes die Lösungsebenen des Befehls, um den richtigen Wert zu identifizieren, um das Problem zu beheben.Wählen Sie den Link Projektmappenebenen anzeigen unter dem Befehlsnamen 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 am Anfang der Liste ist die aktuelle Definition, die von der Anwendung verwendet wird. Die anderen Ebenen sind inaktiv und werden derzeit von der Anwendung nicht verwendet. Wenn die oberste Lösung deinstalliert oder eine aktualisierte Version installiert ist, 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 dies immer die Definition, die von der Anwendung verwendet wird. Wenn keine aktive Lösung aufgeführt ist, ist die Lösung, die oben in der Liste aufgeführt ist, die definition, die von der Anwendung verwendet wird. Alle benutzerdefinierten verwalteten Lösungen, die nicht von Microsoft veröffentlicht werden, haben ebenfalls 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, stammt die Ebene aus den Clienterweiterungen des Anwendungsmenübands und nicht entitätsspezifisch. Andernfalls wird der logische Name der Entität aufgeführt.
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 Fenster der Befehlsüberprüfung zurück.
Die folgende Abbildung zeigt die Lösungsebenen für den Befehl im Beispiel und zeigt an, dass es zwei Lösungsebenen gibt, und eine ist eine nicht verwaltete Anpassung, die durch die Lösung mit dem Titel Aktiv gekennzeichnet ist, und die andere stammt aus der von Microsoft veröffentlichten Systemlösung. Ihr tatsächliches Szenario kann abweichen. Möglicherweise verfügen Sie nicht über eine aktive Lösungsebene, sie verfügen möglicherweise über eine verwaltete Lösung, und der Name dieser Lösung wird hier aufgeführt.
Wählen Sie die ersten beiden Zeilen aus, und wählen Sie Vergleichen aus, um einen Vergleich der definitionen anzuzeigen, die von jeder Lösung bereitgestellt werden. Wenn Sie nur über eine Lösungsebene verfügen, überspringen Sie diesen Schritt.
Der Vergleich zwischen Befehlsdefinitionen zeigt alle Unterschiede, die zwischen den beiden Ebenen bestehen können. Das folgende Beispiel zeigt deutlich, dass sich der Library-Wert unterscheidet. Der nicht verwaltete Eintrag aus der Aktiven Projektmappe ist auf einen falschen Pfad _/_static/common/scripts/RibbonActions.js festgelegt (Ihr spezifischer Pfad kann geringfügig 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 bestimmten 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 nun die Lösungsebenen überprüft und die Lösung ermittelt haben, mit der die Anpassung installiert wurde, müssen Sie die Definition in der entsprechenden Lösung korrigieren.
Wählen Sie eine der folgenden Optionen aus, die Ihrem jeweiligen Szenario entspricht:
Der Befehl befindet sich in der nicht verwalteten aktiven Projektmappe.
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 absichtlichen Änderungen, und ich möchte diese benutzerdefinierte Ebene entfernen.
Um einen Befehl auf der Projektmappenebene Aktiv zu löschen, exportieren Sie eine nicht verwaltete Lösung, die die Entität oder das Anwendungsmenüband enthält, bearbeiten den
<RibbonDiffXml>
Knoten in der customizations.xml-Datei und importieren dann eine neue Version dieser Lösung, in der dieser Befehl entfernt wurde, um die Komponente zu löschen. Weitere Informationen finden Sie unter Exportieren, Vorbereiten der Bearbeitung und Importieren des Menübands.Der Befehl ist entitätsspezifisch.
Basierend auf dem Beispielszenario haben Sie ermittelt, dass die Entität konto ist, der Befehl, der gelöscht werden muss, ist
Mscrm.NewRecordFromForm
und in der Nicht verwalteten Projektmappenebene Aktiv von einem Herausgeber mit dem Namen DefaultPublisherCITTest deklariert wird.Öffnen Sie Erweiterte Einstellungen.
Navigieren Sie zu Einstellungen>Projektmappen.
Wählen Sie Neu aus, um eine neue Projektmappe zu erstellen, und legen Sie Publisher auf den Wert fest, der in der Liste der Projektmappenebenen der Befehlsüberprüfung für den Befehl und die Aktive Projektmappenebene angezeigt wird. (Im Beispiel ist dies DefaultPublisherCITTest.)
Wählen Sie Entitäten>Vorhandene 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 Optionen Entitätsmetadaten einschließen und Alle Ressourcen hinzufügen deaktivieren, bevor Sie Fertig stellen auswählen.
Klicken Sie auf Speichern.
Wählen Sie Projektmappe exportieren aus, und exportieren Sie die nicht verwaltete Lösung.
Extrahieren Sie die .zip Datei.
Öffnen Sie die dateicustomizations.xml .
Suchen Sie den
<Entity>
untergeordneten Knoten des Entitätsknotens, den Sie bearbeiten möchten, und suchen Sie den untergeordneten<RibbonDiffXml>
Knoten.Suchen Sie den
<CommandDefinition>
Knoten (im Beispiel istMscrm.NewRecordFromForm
die<CommandDefinition>
ID von . Daher würden Sie den folgenden Knoten suchen.)Bearbeiten Sie den
<RibbonDiffXml>
Knoten, um den jeweiligen<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 sich die ID befindetMscrm.NewRecordFromForm
.)Speichern Sie die customizations.xml Datei.
Stellen Sie die geändertecustomizations.xml-Datei in der Projektmappendatei .zip wieder her.
Importieren Sie die Projektmappendatei.
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, sind die Schritte wie folgt etwas anders:
- Öffnen Sie Erweiterte Einstellungen.
- Navigieren Sie zu Einstellungen>Projektmappen.
- Wählen Sie Neu aus, um eine neue Projektmappe zu erstellen, und legen Sie Publisher auf den Wert fest, der in der Liste der Projektmappenebenen der Befehlsüberprüfung für den Befehl und die Aktive Projektmappenebene angezeigt wird.
- Wählen Sie Clienterweiterungen>Menübandshinzufügen> aus.
- Klicken Sie auf Speichern.
- Wählen Sie Projektmappe exportieren aus, und exportieren Sie die nicht verwaltete Lösung.
- Extrahieren Sie die .zip Datei.
- Öffnen Sie die dateicustomizations.xml .
- Suchen Sie den Stammknoten
<RibbonDiffXml>
. - Suchen Sie den
<CommandDefinition>
Knoten. - Bearbeiten Sie
<RibbonDiffXml>
, um den<CommandDefinition>
Knoten mit der übereinstimmenden ID des Befehls zu entfernen, 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 Projektmappe .zip-Datei wieder her.
- Importieren Sie die Projektmappendatei.
- Wählen Sie Alle Anpassungen veröffentlichen aus.
-
Der Befehl enthält zusätzliche Änderungen, die ich beibehalten möchte, und ich möchte diese Lösungsebene korrigieren.
Um einen Befehl auf der Projektmappenebene Aktiv zu beheben, exportieren Sie eine nicht verwaltete Lösung, die die Entität oder das Anwendungsmenüband enthält, bearbeiten Sie den
<RibbonDiffXml>
Knoten in der customizations.xml-Datei und importieren dann eine neue Version dieser Lösung, die die feste Befehlsdefinition enthält. Weitere Informationen finden Sie unter Exportieren, Vorbereiten der Bearbeitung und Importieren des Menübands.Warnung
Entfernen
Mscrm.HideOnModern
Sie keine Anzeigeregel aus einem Befehl, um zu erzwingen, dass eine Schaltfläche in der einheitlichen Benutzeroberfläche angezeigt wird. Befehle, die über dieMscrm.HideOnModern
Anzeigeregel verfügen, sind für die Legacy-Webclientschnittstelle vorgesehen und werden in der einheitlichen Schnittstelle nicht unterstützt und funktionieren möglicherweise nicht ordnungsgemäß.Der Befehl ist entitätsspezifisch.
Basierend auf dem Beispielszenario haben Sie ermittelt, dass die Entität konto ist, der Befehl, der korrigiert werden muss, ist
Mscrm.NewRecordFromForm
und in der Nicht verwalteten Projektmappenebene aktiv von einem Herausgeber mit dem Namen DefaultPublisherCITTest deklariert wird.Öffnen Sie Erweiterte Einstellungen.
Navigieren Sie zu Einstellungen>Projektmappen.
Wählen Sie Neu aus, um eine neue Projektmappe zu erstellen, und legen Sie Publisher auf den Wert fest, der in der Liste der Projektmappenebenen der Befehlsüberprüfung für den Befehl und die Aktive Projektmappenebene angezeigt wird. (Im Beispiel ist dies DefaultPublisherCITTest.)
Wählen Sie Entitäten>Vorhandene 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 Optionen Entitätsmetadaten einschließen und Alle Ressourcen hinzufügen deaktivieren, bevor Sie Fertig stellen auswählen.
Klicken Sie auf Speichern.
Wählen Sie Projektmappe exportieren aus, und exportieren Sie die nicht verwaltete Lösung.
Extrahieren Sie die .zip Datei.
Öffnen der customizations.xml-Datei
Suchen Sie den
<Entity>
untergeordneten 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 suchen.)Bearbeiten Sie
<RibbonDiffXml>
, um die erforderlichen Änderungen an dem<CommandDefinition>
Knoten vorzunehmen, damit 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 ändern, indem Sie festlegenLibrary="$webresoure:Main_system_library.js"
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ändertecustomizations.xml-Datei in der Projektmappendatei .zip wieder her.
Importieren Sie die Projektmappendatei.
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>Projektmappen.
- Wählen Sie Neu aus, um eine neue Projektmappe zu erstellen, und legen Sie Publisher auf den Wert fest, der in der Liste der Projektmappenebenen der Befehlsüberprüfung für den Befehl und die Aktive Projektmappenebene angezeigt wird.
- Wählen Sie Clienterweiterungen>Menübandshinzufügen> aus.
- Klicken Sie auf Speichern.
- Wählen Sie Projektmappe exportieren aus, und exportieren Sie die nicht verwaltete Lösung.
- Extrahieren Sie die .zip Datei.
- Öffnen Sie die dateicustomizations.xml .
- Suchen Sie den Stammknoten
<RibbonDiffXml>
. - Suchen Sie den
<CommandDefinition>
Knoten. - Bearbeiten Sie den
<RibbonDiffXml>
Knoten, um die erforderlichen Änderungen an dem<CommandDefinition>
Knoten vorzunehmen, damit 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 Projektmappe .zip-Datei wieder her.
- Importieren Sie die Projektmappendatei.
- 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 Ihrem separaten Entwicklungs-organization mit der nicht verwalteten Quellversion Ihrer benutzerdefinierten Lösung die oben aufgeführten Schritte für die Option Der Befehl befindet sich in der nicht verwalteten aktiven Lösung aus.
- Erhöhen Sie die Version Ihrer benutzerdefinierten Lösung.
- Exportieren Sie die Lösung als verwaltet.
- Importieren Sie in Ihrem separaten betroffenen organization diese neue Version Ihrer benutzerdefinierten verwalteten Lösung.
Der Befehl stammt aus einer benutzerdefinierten verwalteten Lösung, die ich nicht erstellt habe oder die mein organization nicht besitzt (von einem Drittanbieter oder ISV).
Um einen Befehl zu korrigieren, 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 diese neue Lösung dann in Ihrem betroffenen organization 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, muss möglicherweise eine neuere Version der Lösung installiert sein. 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.