Mostrando entradas con la etiqueta debug code in visual studio. Mostrar todas las entradas
Mostrando entradas con la etiqueta debug code in visual studio. Mostrar todas las entradas

jueves, 31 de agosto de 2017

Depurar un informe Report Data Provider en AX2012 R3

En una entrada antigua del blog, hablábamos sobre como depurar código desde Visual Studio en AX2012 (que podéis ver aquí). Este proceso es válido para cualquier código que se ejecute en CIL (Common Intermediate Language), pero debemos tener en cuenta algunas consideraciones para depurar las clases RDP (usadas para desarrollar informes).
El principal inconveniente radica en que los informes RDP se basan en tablas temporales o en memoria, haciendo que no se puedan depurar directamente.
Vamos a ver cómo podemos solucionar este inconveniente y depurar nuestro informe RDP.
Primero debemos asegurarnos de tener permisos para depurar en el servidor actual, por lo que nuestro usuario debe ser miembro del grupo Microsoft Dynamics AX Debugging Users. Y revisar todo lo explicado en mi anterior post.
En la clase que ejecuta el RDP debemos cambiar:
//class TestReportDP extends SRSReportDataProviderBase
class TestReportDP extends SrsReportDataProviderPreProcess
Con esto conseguimos que el informe procese primero los datos, y por último muestre el informe por pantalla. Así podremos acceder a los datos con el depurador.
Debemos asegurarnos también que el método processReport() contenga la siguiente llamada:
Tabla_Temporal.setConnection(this.parmUserConnection());
Por último, tenemos modificar las propiedades de la tabla temporal:
  • CreatedBy = Yes
  • CreatedTransactionId = Yes
  • TableType = Regular
Con estos cambios, ya podemos depurar el código de la clase que procesa los datos del informe.

jueves, 15 de enero de 2015

Depurar código desde Visual Studio en AX2012

A partir de la versión 6 de AX (AX2012) la mayor parte del código se ejecuta en el entorno de CIL y no puede depurarse desde el depurador de Microsoft Dynamics AX en X++. Igual os habréis sorprendido al introducir un punto de interrupción en x++ y después ver que no se ejecuta el depurador aun estando seguros de que la ejecución pasa por ese punto. Esto significa que el código se está ejecutando en CIL y necesitamos depurarlo con Visual Studio.

Vamos a ver el proceso que debemos realizar (siempre en un entorno de tes/desarrollo):