En algunas ocasiones, nos encontramos con la necesidad de poder ejecutar ficheros externos desde Axapta, ya se un fichero .exe o de cualquier otra extensión.
Desde la introducción de Dynamics Ax 2009, la ejecución de estos ficheros desde el servidor, ha sido modificada para agregar políticas de seguridad, a todo aquello que ejecutemos en procesos Batch, por lo cual si queremos ejecutar un fichero desde el servidor, tendremos que utilizar el siguiente método:
Donde _process, es el nombre del ejecutable que queremos ejecutar, como por ejemplo ‘Notepad.exe’.
Muchas veces nos encontramos, que al crear una tabla nueva, y utilizar está, cuando intentamos relacionarla con tablas del sistema, no nos aparece la referencia con otra tablas.
Para solucionar este problema, tenemos que actualizar la referencias cruzadas de Axapta, que son las encargadas de mostranos estas relaciones, para ello tenemos que ejecutar el siguiente Job desde el AOT:
Si deseamos poder borrar una tabla mediante X++, como si utilizamos la sentencia de SQL Delete From, podemos utilizar el método DeleteTable() de la clase Global.
Al realizar el borrado mediante este método, no se ejecutan los siguientes putntos:
1- El código existente en los métodos Delete de la tabla que deseemos borrar.
2- Las DeleteActions asociadas a la tabla
3- Borra la cache existente de la tabla
De esta manera podemos optimizar el borrado de toda una tabla via X++, sin tener que recurrir a sentencias SQL, ya que no siempre podemos tener acceso al gestor de Base de datos.
Para depurar código X++ en los WorkFlow de Dynamics Ax 2009, primero de todo debemos habilitarlo para el entorno de desarrollo. Ya que la ejecución de código X++ en los WorkFlows se realiza usando la clase RunAsPermission y la depuración de código no está permitida en la sessión de usuario RunAsPermission, por este motivo debemos desactivar esta carácteristica para poder depurarlos.
Pasos para configurar la depuración de WorkFlows
1. Abrimos el AOT de la aplicación, expandimos el nodo Macros, buscamos la macro WorkFlow, y la editamos.
2. El el editor de código, bajamos hasta la parte final de todo, y buscamos la siguiente línea #define.WorkflowRunAsDebug(false) y la modificamos por la siguiente #define.WorkflowRunAsDebug(true). Esto desabilita las opciones de la clase RunAsPermission y la ejecución del código X++ de los Workflows, se ejecutará en la sesión de usuario. Debemos modificar la cuenta de ejecución de WorkFlows, por la de un usuario que tenga permisos de administrador.
3. Guardamos los cambios, y cerramos el editor de código.
4. En el AOT, expandimos el nodo de Classes, y seleccionamos la clase SysWorkFlowHelper y la editamos.
5. Compilamos la clase, y ya tenemos activada la depuración de workFlows
Nota
Después de depurar los WorkFlows, recuerde en volver a desactivar el modo de depuración, y volver a compilar la clase SysWorkflowHelper