13 enero 2012

Incluir un botón custom en el ribbon


Innovar Tecnologías ©

- El objetivo de este ejemplo es customizar el ribbon de la entidad "Cuentas", insertando nuestro propio botón con su código correspondiente



- Vamos a crear nuestra propia solución, le vamos a incluir la entidad Cuentas original, y la vamos a exportar para obtener el código y los metadatos de la entidad.
- Al exportar nuestra solución, obtendremos un fichero .zip con los siguientes archivos:




- Nuestro archivo de interés para incluir nuestras propias extensiones es customizations.xml

- El área de customización será el nodo Entities, el cual contendrá los metadatos de despliegue de todas las entidades incluidas en la solución

- Una vez localizada la entidad a customizar, lo siguiente es encontrar el área del xml en el que operar, en nuestro caso es el nodo

- Prestemos atención al contenido de este nodo:



Paso 1: Despliegue del botón custom


- El nodo en el que incluiremos nuestro botón custom es el nodo <CustomActions>

- Cuando lleguemos al nodo <CustomActions/> lo encontraremos en principio sin ningún child node de acciones custom, por lo que tendremos que implementar el código manualmente, para ello necesitamos conocer la siguiente información:

• Id: el id de la acción custom, un id único, una cadena de texto con un valor único en el xml, por ejemplo, para nuestro caso GT.account.Form.ExportData.CustomButton
• Location: esta información debemos buscarla para indicar con precisión qué tab albergará nuestro botón, en nuestro caso Mscrm.Form.account.MainTab.ExportData.Controls._children
• Sequence: esta información debemos buscarla para indicar con precisión en qué orden aparecerá nuestro botón dentro de la tab especificada mediante el atributo Location, en nuestro caso 2

- Esta información la podemos encontrar en el archivo del sdk accountRibbon.xml en el archivo del sdk con la siguiente ruta de acceso:

• […]\sdk\resources\exportedribbonxml\accountRibbon.xml

- Este archivo contiene la información de despliegue inicial del ribbon de la entidad account, y nos será útil durante el desarrollo de este ejemplo para conocer los valores exactos que asignaremos a los atributos Location y Sequence mencionados anteriormente

- Archivo accountRibbon.xml:



- La zona marcada se corresponde con el MainTab del formulario de la entidad account, con los controles de exportación de datos, en despliegue la siguiente zona:



- Conociendo esta información, el valor del atributo Location de nuestra custom action será el siguiente: Location="Mscrm.Form.account.MainTab.ExportData.Controls._children"

- Observe la inclusión del sufijo ._children a la localización de la tab en la que estamos incluyendo el botón, indicando que se trata de un objeto child más de la zona de la ribbon

- Ahora implementemos el child node del nodo CustomAction, <CommandUIDefinition>, el cual contendrá al child node <Button>, nodo específico de nuestra implementación



- Como podemos observar, el id del botón se corresponde con el id de la custom action que contiene a nuestro botón

- El atributo Command será explicado más adelante durante la implementación del código del botón


Paso 2: Implementación del código para el botón


- El área de interés de nuestro fichero customizations.xml, es ahora el nodo <CommandDefinitions>



- El punto de interés principal para la implementación del código del botón, es el nodo <JavaScript>, el cual contiene los siguientes atributos:
• Library: indicando el recurso web tipo .js subido previamente al servidor
• FunctionName: indicando la función de la librería que ejecutará el botón al ser pulsado
(la implementación de este fichero js es un ejemplo a un mayor número de funciones de mayor complejidad)

- Ahora guardaremos el archivo customizations.xml con los cambios realizados, y lo empacaremos de nuevo en nuestro fichero de solución .zip para su importación



- Publicamos las personalizaciones y comprobamos el resultado




_

Desde la comunidad de developers de Dynamics CRM, queremos agradecer sus contribuciones a los siguientes sitios web y blogs:

- Nishant Rana´s weblog

http://nishantrana.wordpress.com/2010/11/04/adding-my-first-custom-button-in-crm-2011/">

- Erik Pool Xrm Development

http://erikpool.blogspot.com/2011/10/understanding-crm-ribbon-xml-part-1.html

Desde Innovar Tecnologías esperamos que este documento les sea de ayuda en su desarrollo

Web de la empresa

No hay comentarios:

Publicar un comentario