En este post te voy a enseñar los pasos mínimos para agregar lógica con Ribbon Workbench (RWB) y ocultar/mostrar un botón estándar en Dynamics 365 CRM.
Caso de estudio:
Supongamos que como desarrolladores nos piden ocultar el botón de “Desactivar” cuenta si el campo “Contacto principal” contiene datos. Este es un ejemplo trivial y quizás carezca de sentido. Pero para los efectos de lo que quiero mostrar alcanza.
- Crear una solución y agregar la tabla account con su metadata. Si nunca utilizaste RWB, acá te dejo un post anterior donde explico como usarlo por primera vez.
- Creamos la lógica en JavaScript de lo que queremos hacer. En este caso devolver un true si la cuenta no tiene dato de contacto principal y false en caso contrario. Recordar que necesitamos, de algún modo, el contexto donde esa función es invocada. Este contexto es el que nos va a permitir acceder al atributo dentro del formulario.
Aquí va la función: - Crear un webresource del tipo JavaScript, dentro del mismo agregar la función creada en el paso anterior y que vamos a invocar dentro de la “Enable Rule” en RWB

var primaryContact = PrimaryControl.getAttribute("primarycontactid");
if (primaryContact !== null) {
var primaryContactValue = primaryContact.getValue();
return primaryContactValue !== null;
} else {
return true;
}
Como el cambio lo haremos sobre el contexto del formulario cuando abrimos un registro, debemos editar el ribbon relacionado a “Form” tal como se muestra en la imagen.

- Botón: Objeto por el cual el usuario hará interacción.
- Comando: Acción o lógica que ejecutará dicho botón al ser presionado.
- Las “Display rules” y “Enable rules” pueden ser opcionales. Y es la lógica por la cual el botón se mostrará en la interfaz y se habilitará su uso según el contexto. Las display rules son reglas que se ejecutan del lado del servidor y las Enable rules se ejecutan del lado del cliente.

A continuación configurar lo siguiente:
Add Step: “Custom Rule”. Dentro de la Custom Rule colocar el nombre de la función JS que tiene la lógica, en nuestro ejemplo se llama “ShowButton”. Luego referenciar el webresource donde se encuentra nuestro código. Si buscas por nombre del recurso y haces click sobre la lupa, buscará en todo el sistema dicho recurso.
Por último, agregar un parámetro. En nuestro caso un “CRM Parameter” y como valor, seleccionar “PrimaryControl”. Este parámetro es el registro que contendrá el contexto en el cual queremos invocar esta lógica. Es como el formContext.
En caso de algún error grave, RWB alertará y no dejará publicar.
Una vez que termina el proceso, refrescar la pantalla de D365 CRM y probamos:
- Cuenta con contacto principal (debería ocultarse el botón Desactivar)
- Cuenta sin contacto principal (deberíamos poder ver el botón Desactivar)







Comentarios
Publicar un comentario