Lenguaje AL – Sintaxis para la creación de tablas

septiembre 25, 2017
Categoría: Tutorial

Dynamics NAV 2018 nos trae importantes novedades en cuanto al entorno de desarrollo.

Aunque durante algunas versiones se va a mantener la posibilidad de seguir desarrollando desde el entorno C/SIDE, tenemos que empezar a acostumbrarnos a desarrollar extensiones usando el entorno de desarrollo Visual Studio Code (en adelante VSCode).

AL es el lenguage de programación que usaremos en VSCode, muy parecido al C/AL al que estamos acostumbrados.

Sin embargo va a haber pequeños cambios en la sintaxis.

Voy a publicar una serie de artículos en el blog, que puedan servir de referencia.

Vamos a empezar por la creación de tablas. Veremos cómo crear campos (todos los tipos), así como todas sus propiedades.

Lenguaje AL: Cómo crear tablas

Para crear una tabla necesitas tener instalado el entorno y crear un proyecto. Pues ver cómo en este artículo.

El entorno de desarrollo VSCode se basa en ficheros. Cuando creamos un nuevo proyecto, no estamos haciendo más que crear una carpeta nueva en un directorio.

Para crear un nuevo objeto (en este caso una tabla), tenemos que crear un fichero con la extensión .al dentro de la carpeta del proyecto.

Lo puedes hacer siguiendo éstos pasos:

  1. Sitúate sobre el explorador de archivos y haz clic en el botón derecho.
    Después selecciona Nuevo Archivo.
  2. Tienes que darle un nombre al fichero, y tiene que terminar con la extensión .al. En el ejemplo le vamos a llamar NuevaTabla_1.al
  3. En el área de trabajo se abre el nuevo fichero, que actualmente está vacío.
  4. Escribe el texto ttable. Se trata de un snippet que creará la estructura básica de una tabla.
  5. En id tienes que asignarle un identificar único al objeto. Puede ser un número en el rango del 50.000 al 99.999, o en el rango 70.000.000 a 74.999.999.
    En el ejemplo, le vamos a asignar el id 70 millones.
  6. En MyTable tienes que darle un nombre único al objeto. Es una buena práctica asignarle el mismo nombre que el del fichero .al que hemos creado.
    El código quedaría de la siguiente forma:
  7. Los campos se definen dentro del área fields { }. El snippet nos ha creado un primer campo de tipo Integer, con identificador 1 y nombre MyField.- Vamos a mantener el identidicador 1
    – Vamos a darle el nombre Entry No.
    –  Vamos a mantener el tipo como Integer,

    field(1;"Entry No.";Integer)  {  }
  8. En el área de Problemas de Visual Studio Code, el sistema nos va mostrando en tiempo real todos los errores que se va encontrando.
    Ahora mismo muestra el siguiente mensaje:VSCode nos advierte que tenemos definida una clave primaria, cuyo campo no existe.
    Es es así porque justamente le acabamos de cambiar el nombre al campo, por lo que también tendremos que ajustar la definición de la clave.
  9. Las claves se definen dentro del área keys {}. Vamos a indicar que la clave primaria de esta tabla es el campo “Entry No”.
     keys  {    key(PK;"Entry No.")    {      Clustered = true;    }  }

Hasta aquí hemos creado una tabla de Dynamics NAV 2018, con un único campo, que además es clave primaria.

En el siguiente artículo puedes ver la sintaxis que tenemos que usar para crear campos de cualquier tipo de datos.

Salut!
Laura Nicolàs

Comentarios

  • no funciona, parece que el código esta incompleto

    Gracias

    • Hola John,

      Que es lo que no te funciona? Qué error te sale?

      Ojo con la numeración. Cuando publiqué este artículo se podía usar numeración 70.000.000.
      Después cambió y ahora te dejan crear objetos en el rango 50.000 hasta 99.999, como se havía en C/SIDE.

      Salut!
      Laura Nicolàs

      • Hola Laura,

        Gracias por responder. efectivamente el tema si es de los rangos, pero aun me queda duda sobre si esto aplica tanto para la versión local como para la que esta en nube.No se si me puedas enviar un link donde pueda mirar esta información, por supuesto estamos hablando de Business Central, ya he logrado alterar un campo y también publique un hello word.

  • Hola John,

    En este artículo colgado en el docs, tienes información sobre los rangos: https://docs.microsoft.com/en-us/dynamics365/business-central/dev-itpro/developer/devenv-object-ranges

    Una vez tienes claro qué rango vas a usar, lo tienes que indidar en el fichero App.json.

    Si tienes más dudas, te recomiendo que uses el foro, ya que se pueden publicar imagenes, recibes notificaciones cuando hay respuestas, y en general es más fácil comunicarse.

    Salut!
    Laura Nicolàs

    • Hola Laura,

      Mil gracias por tu ayuda, he logrado avanzar bastante pero tengo un inconveniente todavía, ya que si he logrado publicar campos sobre un ambiente de producción y en el Sandbox extendiendo la tabla Customer y Productos alterando objetos existentes pero lo que no he logrado es crear una tabla desde cero con su PageList y PageCard correspondiente y no encuentro La razón, Aparentemente tengo la sintaxis correcta pero cuando la publico en Sandbox no la encuentro, y he utilizado los rangos correctos y se ha cambiando en el fichero App.jason.
      Tendré en cuenta lo del foro

      Gracias

      • John,

        En el cloud, para que puedas ver las páginas y campos que creas, tienes que informar la propiedad ApplicationArea en todos sitios.
        La tienes informada? Si no, ese es el motivo por el que no encuentras tus modificaciones.

        Salut!
        Laura Nicolàs