Lógica de Negocio en Tablas
Debido a la estructura técnica de la publicación de tablas a través de Anveo Pages, es necesario que toda la lógica de negocio se encuentre dentro de las tablas y codeunits – no en formularios/páginas. Desde el punto de vista conceptual, esto es más limpio desde el principio porque una tabla tiene que comprobar su consistencia estructural, porque codeunits están pensadas para trabajar con procesos de negocio y porque los formularios/páginas sólo representan entradas/salidas que involucran al usuario de la aplicación.
Como resultado, al publicar una tabla se debe comprobar si los cálculos o pruebas se encuentran en la contraparte – el formulario/página en Dynamics Client – que se van a desplazar a la tabla.
xRec y CurrFieldNo
xRec se utiliza en numerosas funciones de tabla dentro de Dynamics y representa el registro antes de una modificación. xRec puede utilizarse en un trigger OnValidate para probar si un campo ha cambiado realmente, por ejemplo en el trigger OnValidate para la tabla Customer.
Sin embargo, xRec sólo está disponible cuando se realiza una entrada a través de un formulario/página. El xRec que falta en el caso de funciones dentro de tablas y codeunits es una restricción planteada por Dynamics que no llama la atención cuando se utiliza Dynamics Client porque los datos se modifican únicamente a través de formularios y páginas allí, y esas páginas ofrecen xRec automáticamente. Sin el xRec, el código mostrado arriba no funcionará correctamente.
Anveo Client Suite proporciona la función GetxRec en la codeunit ACF Management para que Anveo Client Suite también establezca xRec y CurrFieldNo correctamente. En el núcleo de la aplicación Anveo Client Framework hay una plantilla para la función GetxRec y un código de ejemplo para la activación correcta. Proceda como se muestra a continuación para que el xRec y el CurrFieldNo estén disponibles para sus tablas:
- Cree en su tabla la función GetxRec con los siguientes parámetros:
- Añada a la función GetxRec el siguiente código:
ACFxRec.GETTABLE(xRec);
ACFManagement.GetxRec(ACFxRec,CurrFieldNo);
IF ACFxRec.NUMBER <> 0 THEN
ACFxRec.SETTABLE(xRec);
- Añada el siguiente código al principio de todos los desencadenantes de tabla que utilizan el xRec o el CurrFieldNo:
//+Anveo Client Suite Integration
GetxRec(xRec,CurrFieldNo);
//-Anveo Client Suite Integration
La ejecución del código es compatible con el cliente Classic, Role Tailored Client y el cliente Windows de Microsoft Dynamics NAV. Dado que el código se ejecuta en todos los clientes, no es necesaria una distinción de casos por separado. La llamada a esta función puede ser realizada por cada tabla del sistema con la misma frecuencia, sólo la primera llamada utilizando Anveo Client Suite devuelve xRec y CurrFieldNo.