Blog de GDE Internacional

Últimas noticias

Extensiones v2. Migración de C/AL a AL Studio Code. Parte II

25 de abril de 2018 | Miguel López

Si has llegado a este artículo directamente, será mejor que te leas el primero sobre migración de extensiones, aquí


Quedando los objetos de la siguiente manera:

 

Una vez los tenemos separados en la nueva sintaxis, procedemos a compararlos.

Compare-NAVApplicationObject -OriginalPath ‘C:\Users\GDE\Desktop\Original_NewSyntax\*.txt’ -ModifiedPath ‘C:\Users\GDE\Desktop\Modified_NewSyntax\*.txt’ -DeltaPath ‘C:\Users\GDE\Desktop\AppFiles_NewSyntax’ -NoCodeCompression -Force

Esto nos generara los ficheros “DELTA”:

En este caso sólo genero dos ficheros ya que las modificaciones que se realizaron fueron la creación de la Codeunit 50000 y un botón en la página 31 desde el cual se llamaba a la Codeunit.

Si abrimos la página 31, podremos observar la modificación realizada:

 

Ahora el siguiente cambio 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 ejecutar dicha herramienta nos creamos un archivo “.bat” en la carpeta donde se encuentra el archivo en este caso en la ruta: “C:\Program Files (x86)\Microsoft Dynamics NAV\110\RoleTailored Client”.

Y dentro del archivo escribimos el siguiente código:

txt2al –source=C:\Users\GDE\Desktop\AppFiles_NewSyntax –target= C:\Users\GDE\Desktop\AL –rename –extensionStartID 50100

 

Ejecutamos el fichero “.bat” y nos creara los ficheros AL:

Ahora para probarlos sólo tenemos que copiarlos en la ruta donde tengamos nuestra extensión. Abrimos Visual Studio Code y apreciamos que no nos da errores, por lo tanto, pulsaremos Ctrl+F5 para publicar nuestra extensión y probarla.

 

Aquí apreciamos que funciona correctamente:

 

Conclusiones

Como conclusión: hay que indicar que no es posible pasar todo el código C/AL a AL de esta manera. Por ejemplo, intenté pasar este mismo código pero que en vez de un botón fuese en el “OnOpenPage” y este fue el resultado del archivo “DELTA”:

Parecía que todo funcionaba bien pero cuando convertimos los archivos “DELTA” a archivos AL, nos apareció lo siguiente:

Una indicación que nos dice que no se puede insertar código en el “OnOpenPage”, esto es debido a que mediante extensiones no puedes modificar el código estándar de Microsoft. En este caso primero se ejecuta el código estándar y luego el código contenido en “pageextension”, es por ello por lo que se recomienda pasarlo a mano.

En el caso de las tablas los trigger que puedes poner son los siguientes:

Si decidimos usar “OnInsert” nos dará un error indicando que no es un trigger válido.

Si intentamos pasar código que contenga DotNet también será imposible, ya que DotNet no está disponible debido a problemas de seguridad al ejecutar código arbitrario .NET en servidores en la nube. Se está recomendando dejar de usar estas variables si se quiere pasar el código a extensiones.

Si decidimos pasar código que maneje ficheros también nos conducirá a error:

 

Queda mucho por descubrir. La mayoría de nosotros andamos picando piedra tratando de descubrir nuevas formas y fórmulas de adecuarnos a lo que viene. Y lo que viene ya está aquí. Si tenéis aportaciones que hacer o detectáis errores en mi exposición, estaré encantado de rectificar y aprender con vosotros.

¡GRACIAS A TODOS!

 

 

Los comentarios están cerrados.

FacebookPage 1Page 1Page 1