Cómo generar Eventos en Microsoft Dynamics NAV

Sonia Orellana Tutoriales Leave a Comment

En la versión Microsoft Dynamics NAV 2016 vemos que han añadido una funcionalidad llamada Eventos y suscripciones. ¿Para qué sirve? Los Eventos nos permiten separar funcionalidad personalizada de la lógica de negocio de la aplicación original.

Podemos bajar el coste de las modificaciones de código. ¿Cómo? Los cambios en el código original de la aplicación pueden hacerse con un impacto mínimo en la aplicación NAV.

Los Eventos pueden utilizarse para diversos propósitos, tales como generar notificaciones cuando se produce cierto suceso o el estado de una entidad cambia, distribuyendo información e integrando con aplicaciones y sistemas externos, etc. Por ejemplo, en la base de datos de demostración, los Eventos se destinan ampliamente para el flujo de trabajo y la integración de CRM.

A través de Eventos, también se pueden crear funciones que se publican, así como suscribirse a ellos en otros objetos.

Microsoft ha incorporado una larga lista de funciones publicadas como parte de la aplicación estándar, que pueden ser suscritas en el código personalizado. Esto simplifica el mantenimiento y la actualización de los objetos, ya que las modificaciones se pueden hacer completamente separadas de los objetos estándar.

Esto quiere decir que podemos generar Eventos en objetos, para posteriormente poder usarlos según nuestra necesidad.

Os explico cómo funciona con un ejemplo:

Una empresa puede solicitar que no se permita la introducción del símbolo * en el nombre de los clientes, para evitar problemas al filtrar por este campo o al subir dichos datos a plataformas de Hacienda.

  • Anteriormente, tendríamos que modificar la tabla del cliente, añadiendo código en el trigger del onvalidate del campo Nombre cliente.

¿Por qué éste no es el método adecuado? Porque una modificación a un objeto base de NAV significa que la personalización debe llevarse a futuras versiones de NAV. Obviamente, esto aumentará el coste de la actualización por el tiempo necesario para realizar el merge (comparativa) de las personalizaciones en los nuevos objetos base. El objetivo es minimizar, si no eliminar, las personalizaciones a los objetos base de NAV.

  • Ahora, con Eventos lo haríamos de la siguiente manera:

1. Diseñamos una Codeunit 50000, ControlDatos y creamos una nueva función OnValidateName:

Cómo generar Eventos en Microsoft Dynamics NAV

2. Seleccionamos Propiedades en la nueva function, cambiamos el Evento a Suscriptor, introducimos tabla cliente (Customer) en EventPublisherObject, seleccionamos OnBeforeValidateEventen EventFunction, y seleccionamos el campo Name en OnValidateEventField:

Cómo generar Eventos en Microsoft Dynamics NAV

3. Finalmente, introducimos el código C/AL que validará el campo Nombre:

Cómo generar Eventos en Microsoft Dynamics NAV

4. Salvamos el objeto. Ahora, observamos que la Tabla 18 Customer no ha sido modificada:

Cómo generar Eventos en Microsoft Dynamics NAV

5. Comprobamos el funcionamiento del código desarrollado, abriendo el cliente de NAV e introduciendo el símbolo * en el campo Nombre de la ficha de cliente, obtenemos el error esperado:

Cómo generar Eventos en Microsoft Dynamics NAV

 

Con esto hemos comprobado cómo usar Eventos en objetos. Y lo más importante, sin escribir ni una sola línea de código en el objeto origen. Podemos consumirlo y crear toda la funcionalidad adicional que necesitemos.

De esta forma conseguiremos que las migraciones sean mucho más sencillas, puesto que el objeto estándar no se ha tocado. Además, si quisiéramos que la aplicación funcionase de forma estándar, solo deberíamos borrar el objeto creado.

También es interesante saber que se pueden ver todas las suscripciones de Eventos desde el entorno de desarrollo, desde Herramientas -> Depurador -> Suscripciones de Eventos.

Espero que, si has leído este artículo, eres programador y todavía no utilizas los Eventos, te animes a utilizarlos, tal como voy a hacer yo a partir de ahora, ya que nos facilitará el trabajo, tanto ahora como en futuras migraciones.

Sonia Orellana
Técnico NAV

 

Si quieres ponerte en contacto con nosotros puedes usar este formulario o llamarnos al 902 500 358:

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *