lunes, 23 de abril de 2018

D365FO | Extensibilidad en tablas estándar (Eventos y Delegados)

Las extensiones de tabla proporcionan una forma de agregar campos a una tabla sin over-layering. Para agregar un campo a una tabla como una extensión, siga estos pasos:

- Localice la tabla SalesTable en el Explorador de Aplicaciones.
- Haz clic derecho y elige crear extensión.



- Recordando que todos los nombres de elementos deben ser globalmente únicos, cambie el nombre de la nueva extensión. Para nuestro caso SalesTable.HAExtension.
- Abra la extensión de la tabla y agregue el nuevo campo.



- Cree la clase de manejo de eventos. Para nuestro caso SalesTable_Extension.

 [ExtensionOf(tablestr(SalesTable))]  
 final class SalesTable_Extension  
 {  
   
 }  

- En el nodo Eventos de la tabla extendida SalesTable.HAExtension, haz clic derecho sobre el evento OnInserting; luego Copiar metodo de manejo de evento.


- Pegue el método en la clase de manejo de eventos creada, de la siguiente manera.

 [ExtensionOf(tablestr(SalesTable))]  
 final class SalesTable_Extension  
 {  
   /// <summary>  
   ///  
   /// </summary>  
   /// <param name="sender"></param>  
   /// <param name="e"></param>  
   [DataEventHandler(tableStr(SalesTable), DataEventType::Inserting)]  
   public static void SalesTable_onInserting(Common sender, DataEventArgs e)  
   {  
   
   }  
   
 }  

- Agregue dentro del evento el proceso que desee ejecutar, de la siguiente manera.

 [ExtensionOf(tablestr(SalesTable))]  
 final class SalesTable_Extension  
 {  
   /// <summary>  
   ///  
   /// </summary>  
   /// <param name="sender"></param>  
   /// <param name="e"></param>  
   [DataEventHandler(tableStr(SalesTable), DataEventType::Inserting)]  
   public static void SalesTable_onInserting(Common sender, DataEventArgs e)  
   {  
     SalesTable   salesTable = sender as SalesTable;  
   
     salesTable.HAName = salesTable.SalesName;  
     info(strFmt("Orden de venta %1 procesada",salesTable.SalesId));  
   }  
   
 }  

- Para nuestro ejemplo, el proceso se ejecutará cada vez que se cree una nueva Orden de venta.


- Adicionalmente, se almacenará el dato asignado en el nuevo campo.