Definieren von Menüband-Aktivierungsregeln

Hinweis

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:

Value Präsentation
Modern Die Befehlsleiste wird mithilfe von Dynamics 365 für 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 für 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";
}

Hinweis

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.

Hinweis

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 diesl, um ein Menübandelement für eine bestimmte Version von Office Outlook anzuzeigen wie folgt:

  • 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.

Hinweis

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

Befehle und das Menüband anpassen
Menübandbefehle definieren
Definieren von Menüband-Anzeigeregeln

Hinweis

Können Sie uns Ihre Präferenzen für die Dokumentationssprache mitteilen? Nehmen Sie an einer kurzen Umfrage teil. (Beachten Sie, dass diese Umfrage auf Englisch ist.)

Die Umfrage dauert etwa sieben Minuten. Es werden keine personenbezogenen Daten erhoben. (Datenschutzbestimmungen).