Las extensiones V2 surgen en Microsoft Dynamics NAV 2018 para solucionar el problema con las personalizaciones o facilitarlas a la hora de migrar a dicha versión. Hay dos cambios fundamentales a la hora de programar. El primero es que contamos con un nuevo entorno de desarrollo llamado Visual Studio Code, que nos sonará si hemos trasteado con desarrollos para la nueva versión Dynamics 365 Business Central. El otro cambio importante se basa en que las personalizaciones no van en el código estándar original, sino que se escriben en extensiones que se integran con el código de los objetos de NAV en ejecución manejado con eventos.
Ahora que sabemos un poco por donde nos estamos moviendo, vamos a centrarnos en una forma “automática” para la conversión de código de “C/AL” al nuevo “AL” (Extensiones v2).
Pasos a seguir
Para ello necesitamos la base de datos con el código modificado y una base de datos limpia con el código estándar, ya que para crear el nuevo código tenemos que saber las modificaciones que tenemos en nuestro proyecto.
Lo primero que tenemos que hacer es exportar los objetos tanto de la BBDD que contiene el código modificado como de la BBDD estándar. Para ello crearemos las carpetas sobre las que vamos a trabajar:
- ORIGINALES: Contiene los objetos de la BBDD original.
- MOFIDICADOS: Contiene los objetos de la BBDD modificada.
- DELTA: Contendrá los cambios entre las dos BBDD (DELTAS).
- TARGET: Contendrá el nuevo código pasado ya a AL.
Para exportar los objetos tendremos que abrir “Dynamics NAV 2018 Development Shell” y ejecutar la siguiente instrucción:
- Para los objetos originales:
Export-NAVApplicationObject -DatabaseServer ‘Servidor\NAVDEMO’ -DatabaseName ‘Demo Database NAV (11-0)’ -Path
‘C:\Users\Usuario\Desktop\CHRONUS\ORIGINALES.txt’ –ExportToNewSyntax | Out-Null - Para los objetos modificados:
Export-NAVApplicationObject -DatabaseServer ‘Servidor\NAVDEMO’ -DatabaseName ‘Demo Database NAV (11-0)’ -Path
‘C:\Users\Usuario\Desktop\CHRONUS\MODIFICADOS.txt’ –ExportToNewSyntax | Out-Null
Una vez ejecutada estas instrucciones tendremos todos los objetos de las dos BBDD en dos ficheros: ORIGINALES.txt y MODIFICADO.txt. Es muy importante que se exporten en con la instrucción “-ExportToNewSyntax” ya que esta contiene cambios en la fecha y en la hora, así como en la declaración de variables.
Todavía tenemos un paso intermedio ya que tenemos todos los objetos en un único fichero de texto y tenemos que dividirlos en objetos individuales. Para ello:
- Para los objetos originales:
Split-NAVApplicationObjectFile -Source
‘C:\Users\Usuario\Desktop\CHRONUS\ORIGINALES.txt’ -Destination
‘C:\Users\Usuario\Desktop\CHRONUS\ORIGINALES’ –PreserveFormatting -Force - Para los objetos modificados:
Split-NAVApplicationObjectFile -Source
‘C:\Users\Usuario\Desktop\CHRONUS\MODIFICADOS.txt’ –Destination ‘C:\Users\Usuario\Desktop\CHRONUS\MODIFICADOS’ –PreserveFormatting -Force
Ahora, sí podemos ponernos a comparar los objetos para generar los ficheros “DELTA”. Para ello ejecutamos el siguiente comando:
Compare-NAVApplicationObject -OriginalPath
‘C:\Users\Usuario\Desktop\CHRONUS\ORIGINALES\*.txt’ –ModifiedPath
‘C:\Users\Usuario\Desktop\CHRONUS\MODIFICADOS\*.txt’ –DeltaPath ‘C:\Users\Usuario\Desktop\CHRONUS\DELTA’ –ExportToNewSyntax -NoCodeCompression -Force
El resultado será el siguiente:
Ahora el siguiente paso a seguir es pasar los archivos “DELTA” a código AL. Para ello Microsoft nos proporciona una herramienta que se encuentra en la carpeta donde se instala Microsoft Dynamics NAV con el nombre de Txt2Al.exe:
Para ejecutarla abrimos una ventana de comandos posicionados en esa carpeta y escribimos el siguiente comando:
xt2al.exe –source=»C:\Users\Usuario\Desktop\CHRONUS\DELTA» —
target=»C:\Users\Usuario\Desktop\CHRONUS\TARGET» –rename —extensionStartID 50100
Con ello el programa nos genera los ficheros AL:
A tener en cuenta:
- No podemos agregar código en el “OnOpenPage” de las páginas, ya que primero se ejecuta el código estándar y luego el contenido de la extensión.
- Si intentamos pasar código que contenga “DotNet” también será imposible por el momento, debido a los problemas de seguridad con el código .NET en los servidores en la nube.
- Nos podemos encontrar algún problema con el manejo de ficheros, donde también nos llevaremos más de un error.
Ernesto Martín
Dynamics
[contact-form][contact-field label=»Nombre» type=»name» required=»true» /][contact-field label=»Correo electrónico» type=»email» required=»true» /][contact-field label=»Web» type=»url» /][contact-field label=»Mensaje» type=»textarea» /][/contact-form]