Definir las reglas de habilitación de la cinta de opciones

Nota

Este tema trata sobre comandos clásicos.

Hay una nueva forma de definir comandos. Consulte Información general de los comandos modernos (versión preliminar)

Al configurar elementos de la cinta de opciones, puede definir reglas específicas para controlar cuándo están habilitados los elementos de la cinta de opciones. Use el elemento <EnableRule> de la siguiente manera:

  • Use el /RuleDefinitions/EnableRules/EnableRule elemento para definir reglas que controlan cuando el elemento de la cinta de opciones está habilitado.
  • Use el elemento /CommandDefinitions/CommandDefinition/EnableRules/EnableRule para asociar reglas de habilitación específicas a una definición de comando.

¿Qué significa estar habilitado?

En la barra de comandos, los comandos deshabilitados están ocultos. Con la cinta de opciones, los comandos deshabilitados están visibles pero no responden a eventos.

Controlar cuándo los elementos de la cinta de opciones están habilitados

Las reglas de habilitación están pensadas para que puedan reutilizarse. Al definirlas con definiciones de reglas, se puede usar la misma regla de habilitación para muchas definiciones de comando. Cuando define más de una regla de habilitación para una definición de comando, todas las reglas de habilitación deben evaluarse como true para que el elemento de la cinta de opciones esté habilitado.

Todas las reglas de habilitación proporcionan un parámetro opcional para especificar si el valor predeterminado de la regla es true o false y un parámetro opcional InvertResult que permite devolver un resultado negativo cuando el elemento que se prueba devuelve true.

El elemento /RuleDefinitions/EnableRules/EnableRule admite los siguientes tipos de reglas:

Regla de tipo de cliente de comando

Usa el elemento <CommandClientTypeRule>. Especifica una regla que detecta el tipo de presentación que se usa.

Los valores Type corresponden a lo siguiente:

valor Presentación
Modern La barra de comandos se muestra mediante Dynamics 365 for tablets.
Refresh La barra de comandos se muestra mediante la interfaz de usuario actualizada.
Legacy La cinta de opciones se muestra en los formularios de tablas que no se actualizaron o en una vista de lista en Dynamics 365 for Outlook.

Regla de tipo de cliente CRM

Usa el <CrmClientTypeRule> elemento para definir reglas en función del tipo de cliente usado. Las opciones de tipo son las siguientes:

  • Web
  • Outlook

Regla del estado de acceso offline de CRM

Usa el elemento <CrmOfflineAccessStateRule>. Use este criterio para habilitar un elemento de la cinta de opciones en función de si Dynamics 365 for Microsoft Office Outlook con acceso sin conexión se encuentra actualmente sin conexión.

Regla de tipo de cliente de Outlook de CRM

Usa el elemento <CrmOutlookClientTypeRule>. Use esta regla si desea mostrar solo un botón para un tipo específico de Dynamics 365 for Outlook. Las opciones de tipo son las siguientes:

  • CrmForOutlook
  • CrmForOutlookOfflineAccess

Regla personalizada

Usa el elemento <CustomRule>. Use este tipo de regla para llamar a una función en un recurso web JavaScript que devuelva una promesa (interfaz unificada) o un valor booleano (interfaz unificada y cliente web).

function EnableRule()
{
    const value = Xrm.Page.getAttribute("column1").getValue();
    return value === "Active";
}

Nota

Las reglas personalizadas que no devuelven un valor rápidamente pueden afectar el rendimiento de la cinta. Si necesita realizar una lógica que tarde algún tiempo en completarse (por ejemplo, una solicitud de red), use la siguiente estrategia para que la regla personalizada sea asincrónica.

Las reglas de la interfaz unificada admiten devolver una promesa en lugar de un valor booleano para la evaluación de reglas asincrónicas. Si la promesa no se resuelve en 10 segundos, la regla se resuelve con un valor falso.

Nota

Las reglas basadas en promesas solo funcionan en la interfaz unificada, por lo que no se pueden usar si se sigue usando el cliente web clásico.

// 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);
   });
}

Regla de entidad

Usa el elemento <EntityRule>. EntityRule evalúa la tabla actual. Esta evaluación es útil cuando se definen acciones personalizadas que se aplican a la plantilla de tabla en lugar de tablas específicas. Por ejemplo, es posible que quiera agregar un elemento decorativo a todas las tablas, excepto algunas tablas específicas. Es más fácil definir la acción personalizada para la plantilla de tabla que se aplica a todas las tablas y, a continuación, usar un EntityRule para filtrar las que se deben excluir.

El EntityRule elemento también incluye un parámetro de contexto opcional para especificar si la tabla se muestra en el formulario o en una lista (HomePageGrid). El parámetro opcional AppliesTo se puede establecer en PrimaryEntity o en SelectedEntity para distinguir si se muestra la tabla en una subcuadrícula.

Regla de estado del formulario

Usa el elemento <FormStateRule>. Use la regla FormState para determinar el tipo actual de formulario que se muestra en un registro. Las opciones de estado son las siguientes:

  • Create
  • Existing
  • ReadOnly
  • Disabled
  • BulkEdit

Regla o

Usa el elemento <OrRule>. OrRule permite reemplazar el valor de comparación predeterminado AND para varios tipos de reglas de habilitación. Use el elemento OrRule para definir varias combinaciones posibles válidas para comprobar.

Regla de seguimiento de elementos de Outlook

Usa el elemento <OutlookItemTrackingRule>. Use el parámetro TrackedInCrm de este elemento para determinar si se realiza el seguimiento del registro en Power Apps.

Regla de la versión de Outlook

Usa el elemento <OutlookVersionRule>. Use esta regla para habilitar un elemento de la cinta de opciones para una versión específica de Office Outlook de la siguiente manera:

  • 2003
  • 2007
  • 2010

Regla de página

Usa el elemento <PageRule>. Este tipo de regla comprueba la dirección URL de la página que se muestra. Devuelve true si coincide con Address.

Regla de privilegios de registro

Usa el elemento <RecordPrivilegeRule>. Use esta regla para determinar si el usuario actual tiene privilegios en un registro específico. Estos privilegios difieren del privilegio de la tabla porque pueden incluir los privilegios obtenidos por otro usuario que comparte el registro con el usuario actual.

Regla de recuento de selección

Usa el elemento <SelectionCountRule>. Use este tipo de regla con una cinta de opciones para que aparezca una lista para habilitar un botón cuando se seleccionan los números de registros máximos y mínimos específicos en la cuadrícula. Por ejemplo, si su botón combina registros, debe asegurarse de que al menos dos registros estén seleccionados antes de activar el control de la cinta.

Regla de valor

Usa el elemento <ValueRule>. Use esta regla para comprobar el valor de una columna específica en el registro que se muestra en el formulario. Debe especificar Field y Value para comprobar.

Nota

En un formulario, un ValueRule requiere que la columna especificada sea parte del formulario para que funcione. En una cuadrícula o subcuadrícula, la columna debe ser una de las columnas de la cuadrícula.

Mostrar en la regla de acción rápida

Usa el elemento <EnableRule>. Utilice esta regla para que el comando aparezca solo como una acción rápida.

<CommandDefinition Id="new.contact.Command.Call">
  <EnableRules>
    <EnableRule Id="Mscrm.SelectionCountExactlyOne" />
    <EnableRule Id="Mscrm.ShowOnQuickAction" />
  </EnableRules>
  <DisplayRules />
  <Actions>
    <JavaScriptFunction FunctionName=" simplealert" />
  </Actions>
</CommandDefinition>

Mostrar en la cuadrícula de la regla de acción rápida

Usa el elemento <EnableRule>. Utilice esta regla para que el comando aparezca en la cuadrícula de la página de inicio y como acción rápida.

<CommandDefinition Id="new.contact.Command.Call">
  <EnableRules>
    <EnableRule Id="Mscrm.SelectionCountExactlyOne" />
    <EnableRule Id="Mscrm.ShowOnGridAndQuickAction" />
  </EnableRules>
  <DisplayRules />
  <Actions>
    <JavaScriptFunction FunctionName=" simplealert" />
  </Actions>
</CommandDefinition>

Mostrar en la regla de cuadrícula

Usa el elemento <EnableRule>. Utilice esta regla para que el comando de acción rápida aparezca solo en la cuadrícula de la página de inicio. En otras palabras, puede utilizar este comando para ocultar una acción rápida existente.

<CommandDefinition Id="new.contact.Command.Call">
  <EnableRules>
    <EnableRule Id="Mscrm.SelectionCountExactlyOne" />
    <EnableRule Id="Mscrm.ShowOnGrid" />
  </EnableRules>
  <DisplayRules />
  <Actions>
    <JavaScriptFunction FunctionName=" simplealert" />
  </Actions>
</CommandDefinition>

Consultar también

Personalización de comandos y la cinta de opciones
Definir comandos de la cinta de opciones
Defina reglas para la visualización de la cinta