En Dynamics NAV no existe ninguna herramienta para control de versiones del código, la forma de llevar este control es exportando los objetos en una carpeta y cada vez un programador tenga que desarrollar algo nuevo o realizar alguna modificación sobre los objetos tendrá que utilizar el version list, la fecha y hora de modificación que se muestra en el Object Designer.

Además, hay que utilizar una herramienta de comparación de archivos como podría ser FobView, o WinMerge para archivos .txt, pero esto es poco operativo.

Si queremos tener un mejor control de las versiones de nuestro código podemos implementar Git que es un sistema de control de versiones gratuito y de código abierto diseñado para manejar todo, desde proyectos pequeños hasta muy grandes, con velocidad y eficiencia.

Si queremos dar un paso más y centralizar el repositorio de proyectos en un sitio seguro podemos implementar plataformas como GitLab o GitHub pero esto lo dejamos para otro post ahora nos centraremos en Git.

Integración de Git con Dynamics NAV

Con Git se puede controlar el código de cada uno de los programadores que intervienen en un proyecto, lo único que necesitamos son los objetos en formato .txt, los cuales se pueden exportar desde el Object Designer.

Se debe crear un Workspace para almacenar los objetos y controlarlos con Git, estos objetos se tienen que exportar de forma manual o mediante un script que exporte los objetos de NAV al Workspace de Git sin necesidad de intervención manual.

Primero debemos descargar Git e instalarlo, aquí os dejo un enlace a un manual de Git que está genial.

Creación del repositorio principal (Master)

En el PC crearemos el directorio workspace donde van a estar todos los proyectos y desde el Object Designer exportaremos los objetos a este directorio. La exportación de objetos debe realizarse en un único fichero.txt.

Exportando objetos desde Object Designer

Por ejemplo, primero desde el object designer seleccionamos los objetos y los exportamos en formato .txt

Seleccionamos la extensión .txt al guardarlos en el directorio workspace.

Esperamos a que se exporten los objetos.

Exportando objetos mediante la consola Development Shell

Desde la consola de desarrollador (el Development Shell de NAV) con el comando Export-NAVApplicationObject podremos exportar los objetos y con el comando Split-NAVApplicationObjectFile podremos dividir todos los objetos contenidos en este único fichero.txt.

El comando es el siguiente:

Export-NAVApplicationObject -DatabaseName "NombreDataBase" -DatabaseServer "NombreServidor" -ExportTxtSkipUnlicensed -Path "c:\Workspace\OBJETOS.txt"

Al ejecutar el comando anterior se mostrará en tu workspace un archivo.txt que tendrá todos los objetos, pero habrá que separarlos.

Separando los objetos

Para separar los objetos usamos el comando Split-NAVApplicationObjectFile, nos pedirá el archivo objetos.txt que exportamos previamente.

Esperamos unos segundos a que termine el proceso.

En nuestro workspace tendremos los objetos separados con la siguiente nomenclatura:

TAB, PAG, COD, QUE, MEN, REP y XML seguido del número del objeto.

Nota: Los objetos en formato .fob hay que exportarlos aparte, si queremos guardarlos.

Una vez tenemos todos los objetos separados en de nuestro workspace controlado por Git, es cuando podemos hacer un primer commit y a partir de dicho commit cualquier cambio que se realice en un objeto, o si se crea un objeto nuevo haremos un commit y de esta forma podremos tener controlado el historial de cambios en los desarrollos.

Resumiendo habrá que realizar los siguientes pasos:

  • Modificar/Crear objeto desde el Object Designer.
  • Exportar los objetos modificados en formato.txt.
  • Separar los objetos.
  • Comparar los objetos exportados con los objetos del repositorio para ver diferencias.
  • Sustituir los objetos del repositorio por los objetos exportados.
  • Realizar un commit para actualizar el repositorio.

Luego se podría crear el repositorio en un sistema como GitLab o Github para tener una mejor gestión de los desarrollos.

En otro post hablaré de GitLab y como lo uso para el control de cambios.

Por geekdevit

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.