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 los elementos de la cinta de opciones, se pueden definir las reglas para supervisar cuando se habilitan los elementos de la cinta de opciones. El elemento <EnableRule> se usa de la siguiente manera:

  • Use el elemento /RuleDefinitions/EnableRules/EnableRule para definir las reglas que controlan cuándo debe habilitarse el elemento de la cinta de opciones.

  • 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. En la cinta de opciones, los comandos deshabilitados están visibles pero no responden a eventos.

Controlar cuando 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 más de una regla de habilitación está definida 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 Enable proporcionan un parámetro opcional para especificar si el valor predeterminado de la regla es true o false, y un parámetro InvertResult opcional para habilitar la devolución de un resultado negativo cuando el elemento que se está probando 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:

Value Presentación
Modern La barra de comandos se muestra mediante Dynamics 365 para tabletas.
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 elemento <CrmClientTypeRule> para permitir la definición de reglas en función del tipo de cliente utilizado. Las opciones de tipo son las siguientes:

  • Web

  • Outlook

Regla de estado de acceso sin conexión 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 para Microsoft Office Outlook con Offline Access está actualmente sin conexión.

Regla de tipo de cliente 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 al rendimiento de la cinta de opciones. Si tiene que realizar lógica que puede tardar algún tiempo en completarse (por ejemplo, una solicitud de red), use la siguiente estrategia para crear su regla personalizada asincrónica.

La reglas de la interfaz unificada admiten que se devuelva una promesa más que un valor booleano para la evaluación de reglas asincrónica. Si la promesa no se resuelve en 10 segundos, la regla se resolverá con un valor false.

Nota

Las reglas basadas en promesas solo funcionarán en la interfaz unificada, por lo que no se pueden usar si se sigue utilizando el típico cliente web.

// 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 permite la evaluación de la tabla actual. Esto resulta útil al definir acciones personalizadas que se aplican a la plantilla de la tabla en lugar de a las tablas específicas. Por ejemplo, es posible que desee agregar un elemento de la cinta de opciones en todas las tablas excepto en algunas tablas específicas. Es más fácil definir la acción personalizada de la plantilla de la tabla que se aplica a todas las tablas y después usar una regla EntityRule para filtrar aquellas que se deben excluir.

Las reglas EntityRule también incluyen un parámetro de contexto opcional para especificar si se muestra la tabla 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 esto para habilitar un elemento de la cinta de opciones de una versión determinada de Office Outlook, de la siguiente manera:

  • 2003

  • 2007

  • 2010

Regla de página

Usa el elemento <PageRule>. Este tipo de regla compruebe 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 el botón combina los registros, debe asegurarse de que al menos dos registros están seleccionados antes de habilitar el control de la cinta de opciones.

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

Personalizar comandos y la cinta de opciones
Definir comandos de la cinta de opciones
Defina las reglas de la visualización de la cinta de opciones

Nota

¿Puede indicarnos sus preferencias de idioma de documentación? Realice una breve encuesta. (tenga en cuenta que esta encuesta está en inglés)

La encuesta durará unos siete minutos. No se recopilan datos personales (declaración de privacidad).