martes, 1 de diciembre de 2015

Eventos en Navision 2016

En la versión 2016 de Navision se ha añadido una funcionalidad nueva para capturar eventos de tablas desde objetos tipo Codeunit al dispararse los diferentes triggers(INSERT, MODIFY, RENAME, VALIDATE). Con esto se consigue que el código estandar no tenga que ser modificado teniendo la posibildad de sacar nuestras modificaciones de codigo a una codeunit y ejecutar este codigo antes o despues de el que ya existe en el trigger de la tabla o del campo de la tabla que lanza el evento.


Ejemplos:
1 Llamar a una función cuando se ejecute una acción en la tabla Item
1-1           En una Codeunit nos creamos una función “DespuesModifyItem"


1-2           En las propiedades pulsamos sobre "event" y seleccionamos "Suscriber" 

1-3            En el campo "EventPublischerObject" seleccionamos la tabla "Item"  

 1-4           Ahora es cuando le decimos cuando queremos que llame a esta función, lo haremos en el campo “EventFunction”. Aquí nos propondra varias opciones:


SI por ejemplo queremos que despues de modificar un registro llame a esta función seleccionaremos “OnAfterModifyEvent”



Si lo que queremos en, llamar a esta función cuando se valide un campo, seleccionaremos la opción de:
    

 ó





En este caso, nos aparecerá un nuevo campo en el que le tendremos que indicar sobre  que campo, queremos que actue, es decir, cuando se ejecute el validate de que campo, queremos que llame Navision a esta función. Pro ejemplo : “No.”


Por lo tanto, cuando desde la tabla Item, se ejecute alguna de las acciones configuradas en estas funciones, que Navision las llamara y ejecutara el código que hay en ellas.

Por ejemplo cuando se lance el OnModify queremos que se controle la descripción, que no esté vacia hariamos los siguiente. Una función con las propiedades:

Funcion "DespuesModifyItem"



Es interesante también documentar de alguna manera en el trigger que lanza el evento si hay un codigo asociado al mismo ya sea antes o despues del que existe en el trigger.