Definieren von Menüband-Aktivierungsregeln
Anmerkung
In diesem Thema geht es um klassische Befehle.
Es gibt eine neue Möglichkeit, Befehle zu definieren. Siehe Moderne Befehlsübersicht (Vorschauversion)
Beim Konfigurieren von Menüband-Elementen können Sie bestimmte Regeln definieren, um zu steuern, wann die Menüband-Elemente aktiviert werden. Das <EnableRule>
-Element wird wie folgt verwendet:
- Verwenden Sie das
/RuleDefinitions/EnableRules/EnableRule
-Element, um Regeln zu definieren, die steuern, wann das Menübandelement aktiviert werden soll. - Verwenden Sie das
/CommandDefinitions/CommandDefinition/EnableRules/EnableRule
-Element, um spezifische Aktivierungsregeln einer Befehlsdefinition zuzuordnen.
Was bedeutet "aktiviert"?
Mithilfe der Befehlsleiste werden Befehle ein- oder ausgeblendet. Mit dem Menüband sind deaktivierte Befehle zwar sichtbar, reagieren jedoch nicht auf Ereignisse.
Steuern, wann Menübandelemente aktiviert werden
Aktivierungsregeln sind dazu gedacht, wiederverwendet zu werden. Durch die Definition von Aktivierungsregeln mit Regeldefinitionen können Sie dieselbe Aktivierungsregel für viele Befehlsdefinitionen verwenden. Wenn mehrere Aktivierungsregeln für eine Befehlsdefinition definiert sind, müssen alle Aktivierungsregeln als "true" ausgewertet werden, damit das Menübandelement aktiviert wird.
Alle aktivierten Regeln bieten einen optionalen Parameter, um anzugeben, ob der Standardwert der Regel true oder false ist, und einen optionalen InvertResult
-Parameter, der ermöglicht, dass ein negatives Ergebnis zurückgegeben wird, wenn das getestete Element true zurückgibt.
Das /RuleDefinitions/EnableRules/EnableRule
-Element unterstützt die folgenden Regeltypen:
Befehls-Clienttyp-Regel
Verwendet das <CommandClientTypeRule>
-Element. Gibt eine Regel an, die den Typ der verwendeten Darstellung erkennt.
Die Type
-Werte entsprechen dem Folgenden:
Wert | Präsentation |
---|---|
Modern |
Die Befehlsleiste wird mit Dynamics 365 for tablets dargestellt. |
Refresh |
Die Befehlsleiste wird mithilfe der aktualisierten Benutzeroberfläche angezeigt. |
Legacy |
Das Menüband wird in Formularen für Tabellen, die nicht aktualisiert wurden, oder in einer Listenansicht in Dynamics 365 for Outlook angezeigt. |
Crm-Clienttyp-Regel
Verwendet das <CrmClientTypeRule>
-Element, um die Definition von Regeln abhängig vom Typ des verwendeten Clients zu erlauben. Die Typoptionen lauten wie folgt:
Web
Outlook
Crm-Offlinezugriff-Zugriffsstatusregel
Verwendet das <CrmOfflineAccessStateRule>
-Element. Verwenden Sie diese Kriterien, um ein Menübandelement abhängig davon zu aktivieren, ob Dynamics 365 for Microsoft Office Outlook mit Offlinezugriff derzeit im Offlinemodus ist.
Crm Outlook-Clienttyp-Regel
Verwendet das <CrmOutlookClientTypeRule>
-Element. Verwenden Sie diese Regel, wenn Sie eine Schaltfläche nur für rinrn spezifischen Dynamics 365 for Outlook-Typ anzeigen möchten. Die Typoptionen lauten wie folgt:
CrmForOutlook
CrmForOutlookOfflineAccess
Benutzerdefinierte Regel
Verwendet das <CustomRule>
-Element. Verwenden Sie diese Art von Regel, um eine Funktion in einer JavaScript-Webressource aufzurufen, die eine Zusage (Einheitliche Oberfläche) oder Boolean (Einheitliche Oberfläche und Web Client) zurückgibt.
function EnableRule()
{
const value = Xrm.Page.getAttribute("column1").getValue();
return value === "Active";
}
Anmerkung
Benutzerdefinierte Regeln, die nicht schnell einen Wert zurückgeben, können sich auf die Leistung des Menübands auswirken. Wenn Sie eine Logik ausführen müssen, deren Ausführung einige Zeit in Anspruch nehmen kann (z. B. eine Netzwerkanforderung), verwenden Sie die folgende Strategie, um Ihre benutzerdefinierte Regel asynchron zu machen.
Einheitliche Oberfläche-Regeln unterstützen die Rückgabe eines Promises und nicht boolesch für die asynchrone Regelauswertung. Wenn das Versprechen nicht innerhalb von 10 Sekunden aufgelöst wird, löst die Regel mit einem falschen Wert auf.
Anmerkung
Versprechungsbasierte Regeln funktionieren nur auf der Einheitliche Oberfläche, sodass sie nicht verwendet werden können, wenn der klassische Web Client weiterhin verwendet wird.
// Old synchronous style
/*
function EnableRule() {
const request = new XMLHttpRequest();
request.open('GET', '/bar/foo', false);
request.send(null);
return request.status === 200 && request.responseText === "true";
}
*/
// New asynchronous style
function EnableRule() {
const request = new XMLHttpRequest();
request.open('GET', '/bar/foo');
return new Promise(function(resolve, reject) {
request.onload = function (e) {
if (request.readyState === 4) {
if (request.status === 200) {
resolve(request.responseText === "true");
} else {
reject(request.statusText);
}
}
};
request.onerror = function (e) {
reject(request.statusText);
};
request.send(null);
});
}
Entitätsregel
Verwendet das <EntityRule>
-Element. EntityRule
lässt die Evaluierung der aktuellen Tabelle zu. Dies ist hilfreich, wenn Sie benutzerdefinierte Aktionen definieren, die für die Tabellenvorlage gelten, statt für bestimmte Tabellen. Beispielsweise möchten Sie möglicherweise ein Menübandelement für alle Tabellen hinzufügen, mit Ausnahme von einigen bestimmter Tabellen. Es ist einfacher, die benutzerdefinierte Aktion für die Tabellenvorlage zu definieren, die für alle Tabellen gilt, und dann eine EntityRule
zu verwenden, die die Tabellen herausfiltert, die ausgeschlossen werden sollen.
Die EntityRule
enthält auch ein optionales Kontextparameter, um anzugeben, ob die Tabelle im Formular oder in einer Liste angezeigt wird (HomePageGrid). Das optionale AppliesTo
-Parameter kann auf PrimaryEntity
oder SelectedEntity
festgelegt werden, um zu unterscheiden, ob die Tabelle in einem Unterraster angezeigt wird.
Formularstatusregel
Verwendet das <FormStateRule>
-Element. Verwenden Sie die FormState
-Regel, um den aktuellen Formulartyp zu bestimmen, in dem ein Datensatz angezeigt wird. Die Statusoptionen lauten wie folgt:
Create
Existing
ReadOnly
Disabled
BulkEdit
Oder-Regel
Verwendet das <OrRule>
-Element. Mit der OrRule
-Regel können Sie den standardmäßigen UND-Vergleich für mehrere Aktivierungsregeltypen überschreiben. Verwenden Sie das OrRule
-Element, um mehrere mögliche gültige Kombinationen zu definieren, die zu überprüfen sind.
Outlook-Element-Nachverfolgungsregel
Verwendet das <OutlookItemTrackingRule>
-Element. Verwenden Sie den TrackedInCrm
Parameter für dieses Element, um festzulegen, ob der Datensatz in Power Apps verfolgt wird.
Outlook-Versionsregel
Verwendet das <OutlookVersionRule>
-Element. Verwenden Sie dies, um ein Menübandelement für eine bestimmte Version von Office Outlook wie folgt anzuzeigen:
2003
2007
2010
Seitenregel
Verwendet das <PageRule>
-Element. Diese Art von Regel überprüft, ob die URL der Seite angezeigt wird. Sie gibt "true" zurück, wenn die Address
übereinstimmt.
Datensatzberechtigungsregel
Verwendet das <RecordPrivilegeRule>
-Element. Verwenden Sie diese Regel, um zu bestimmen, ob der aktuelle Benutzer über Rechte für einen bestimmten Datensatz verfügt. Diese Rechte unterscheiden sich von einem Tabellenrecht, da sie Rechte beinhalten können, die von einem anderen Benutzer erworben wurden, der den Datensatz gemeinsam mit dem aktuellen Benutzer verwendet.
Auswahlzählungsregel
Verwendet das <SelectionCountRule>
-Element. Verwenden Sie diese Art von Regel mit einem für eine Liste angezeigten Menüband, um eine Schaltfläche zu aktivieren, wenn bestimmte Höchst- und Mindestzahlen von Datensätzen in dem Raster ausgewählt werden. Zum Beispiel: Wenn Ihre Schaltfläche Datensätze zusammenführt, sollten Sie sicherstellen, dass mindestens zwei Datensätze ausgewählt werden, bevor das Menübandsteuerelement aktiviert wird.
Wertregel
Verwendet das <ValueRule>
-Element. Verwenden Sie diese Regel, um den Wert eine bestimmte Spalte im Datensatz zu suchen, der im Formular angezeigt wird. Sie müssen für die Prüfung das Field
und den Value
angeben.
Anmerkung
Auf einem Formular erfordert ein ValueRule
, dass die angegebene Spalte Teil des Formulars ist, damit es funktioniert. In einem Raster oder Unterraster muss die Spalte eine der Rasterspalten sein.
Regel „Anzeigen bei Schnellaktion“
Verwendet das <EnableRule>
-Element. Verwenden Sie diese Regel, um den Befehl nur als Schnellaktion erscheinen zu lassen.
<CommandDefinition Id="new.contact.Command.Call">
<EnableRules>
<EnableRule Id="Mscrm.SelectionCountExactlyOne" />
<EnableRule Id="Mscrm.ShowOnQuickAction" />
</EnableRules>
<DisplayRules />
<Actions>
<JavaScriptFunction FunctionName=" simplealert" />
</Actions>
</CommandDefinition>
Regel „Bei Raster und Schnellaktion anzeigen“
Verwendet das <EnableRule>
-Element. Verwenden Sie diese Regel, um den Befehl auf der Homepage im Raster und als Schnellaktion erscheinen zu lassen.
<CommandDefinition Id="new.contact.Command.Call">
<EnableRules>
<EnableRule Id="Mscrm.SelectionCountExactlyOne" />
<EnableRule Id="Mscrm.ShowOnGridAndQuickAction" />
</EnableRules>
<DisplayRules />
<Actions>
<JavaScriptFunction FunctionName=" simplealert" />
</Actions>
</CommandDefinition>
“Auf Raster anzeigen“ Regel
Verwendet das <EnableRule>
-Element. Verwenden Sie diese Regel, damit der Befehl für die Schnellaktion nur auf dem Homepage-Raster erscheint. Mit anderen Worten: Sie können diesen Befehl verwenden, um eine vorhandene Schnellaktion auszublenden.
<CommandDefinition Id="new.contact.Command.Call">
<EnableRules>
<EnableRule Id="Mscrm.SelectionCountExactlyOne" />
<EnableRule Id="Mscrm.ShowOnGrid" />
</EnableRules>
<DisplayRules />
<Actions>
<JavaScriptFunction FunctionName=" simplealert" />
</Actions>
</CommandDefinition>
Siehe auch
Passen Sie Befehle und das Menüband an
Menübandbefehle definieren
Definieren von Menüband-Anzeigeregeln