Hoy vamos a introducirnos en el mundo del desarrollo NAV (Navision). Para todos aquellos consultores que quieran bucear por las aguas técnicas de este gran ERP y desean empezar a conocer un poquito más de cómo es la cara no visible de este maravilloso software, ¡este es su sitio! Así que, si estás interesado, quédate un rato más conmigo porque esto de verdad que te va ayudar muchísimo. ¡Vamos a ello!
En primer lugar, antes de iniciar esta guía básica NAV, voy a explicarte de forma esquemática qué vas a ser capaz de realizar por ti mismo al finalizar este manual técnico en el entorno de desarrollo de Navision.
Como ya sabes, en Dynamics NAV existen varios perfiles de usuario, sin duda el perfil híbrido es el más buscado y valorado por las empresas. Por ello, te aconsejo que, si buscas tener un valor añadido, leas los diversos artículos de este blog, ya que te ayudarán mucho a mejorar tanto tu conocimiento como tu habilidad para desenvolverte en cualquier entorno de este ERP.
¿Cuáles van a ser los conceptos que vas a conocer y que harán que tu valor como consultor NAV aumente notoriamente?
- Uso del object designer (entorno de desarrollo de Dynamics NAV).
- Creación y Manipulación de objetos.
- Tablas:
- Conceptos:
- Campos
- Propiedades de campos
- Claves primarias (PK)
- Propiedades de tabla
- FieldGroups de tabla
- Conocimiento y uso de los campos especiales de una tabla
- Conceptos:
- Paginas:
- Conceptos:
- Propiedades de pagina
- Controles de pagina
- Acciones de pagina
- Conceptos:
- C/AL:
- Conceptos:
- Tipos de triggers
- Variables
- Sintaxis
- Sentencias y expresiones
- Asignación
- Sentencia
- Expresiones
- Operadores aritméticos
- Operadores Relacionales
- Condicionales
- Estructuras de repetición (Bucle)
- Conceptos:
Object designer
Traducida al español “diseñador de objetos” es la herramienta que todo programador NAV utiliza para crear, eliminar o modificar objetos para su uso a posterior. Debes saber que previamente a utilizar el entorno de desarrollo tenemos que tener claro cuál va a ser el objeto sobre el que vamos a trabajar, así que primero vamos a centrarnos en la composición de este entorno.
En la parte superior izquierda tenemos los tipos de objetos existentes actualmente en Dynamics NAV. Cada tipo de objeto se compone de un listado de objetos creados ya por defecto que en su totalidad harán que este ERP funcione y haga maravillas.
Como puedes ver, cada lista de objetos se compone de una serie de campos que registran información referente al objeto en cuestión. Para empezar, vamos a centrarnos en los campos ID, Name, VersionList, Date, Time, Compiled.
- Type: este campo indicara el tipo de objeto que estas tratando, ya sea tabla, pagina, report…
- Name: en este campo indicaremos el nombre del objeto.
- Version List: este campo es de vital importancia para realizar un seguimiento de todas las modificaciones que queramos incluir tanto en objetos nuevos como ya existentes. Por ejemplo, si queremos hacer una modificación de un objeto y que no se nos olvide, con añadir un tag sería suficiente para tener referencia a la modificación que se ha realizado en ese objeto. Esto es estupendo si queremos tener localizados todos objetos modificados para un desarrollo en concreto, pudiendo ubicarlos simplemente filtrando por el nombre ‘Lista de versión’.
- Date: este campo tipo fecha se actualizará conforme agreguemos modificaciones a un objeto, actualizando la fecha a la de la última modificación.
- Time: idéntico que el campo tipo fecha, pero en este caso actualizando la hora.
- Compiled: cuando guardamos una modificación o implementación tenemos la opción de compilar el objeto en cuestión. Una vez compilado, sabemos que todo lo referente a ese objeto no nos va a dar ningún error de carácter “te has dejado un punto”,”te faltan parámetros por pasar a una función”, “conversión de datos fallida”…
Por lo que respecta a la parte superior, vamos a centrarnos en tres de los Menús existentes: File, Edit y Window. Estos menús van a ser los que vas a utilizar en el tránsito de este tutorial.
Para buscar un objeto de forma fácil nos posicionamos encima del campo que queremos realizar la búsqueda, ‘Versión List’ en este caso, e introducimos valores relacionados con el resultado que queremos encontrar.
Es recomendable poner en el inicio y final de nuestra búsqueda el signo asterisco (*). De este modo, le estamos indicando que nos muestre el resultado de la búsqueda aún teniendo otros valores por delante o detrás de nuestra palabra.
Para filtrar un listado de objetos y que únicamente estos sean los que veamos en nuestra lista, vamos a posicionarnos encima del campo ‘A filtrar’ y pulsar “F7” realizando el mismo proceso que en la búsqueda, con la diferencia que ahora únicamente vamos a ver listados los objetos que contengan la palabra por la que vamos a filtrar.
Creación y Manipulación de objetos.
1. File
- New: crear un objeto nuevo.
- Design: accedemos a la parte de diseño de un objeto.
- Run: ejecutar un objeto.
- Import: con esta acción vamos a importar a nuestro entorno un objeto externo, ya puede ser una modificación, implementación o un BackUp.
- Export: esta acción nos va a servir para exportar un listado de objetos escogidos por ti para guardar una copia de seguridad del estado actual del objeto/s en cuestión.
2. Edit
Te recomiendo que aprendas los fastTAB, ya que a la larga te harán ganar un tiempo muy valioso.
3. Window
Este menú mostrara un listado de todos los objetos que tenemos abiertos. Asimismo, nos sirve como pestaña de navegación entre el Object Designer.
Tablas
Una tabla es una herramienta de organización de la información/datos existentes en el sistema. Una tabla está compuesta de propiedades y campos.
Existen varios tipos de campos y cada campo reúne una serie de propiedades:
Estos son los tipos de campos más usados en Dynamics NAV, que, para empezar en el mundillo técnico, son de vital importancia. Hay algunos más, pero estos son los que, sin duda, te ayudarán en el día a día del desarrollo técnico. Cada tipo de dato tiene unas características que lo distinguen del resto, permitiéndote escoger dependiendo del uso que quieras darle.
- Boolean: este tipo de dato indica valores True o False (Si o no).
- Code: este tipo de dato es una cadena de caracteres compuesta tanto por números como por letras. Puede contener hasta un máximo de 250 caracteres. Comúnmente utilizado para las Primary Key.
- Date: este tipo de dato alberga valores de tipo fecha.
- DateFormula: este tipo de dato contiene fórmulas de tipo fecha (30D, 0D, +1D, +1M).
- DateTime: este tipo de dato contiene una fecha y una hora.
- Decimal: admite valores tanto decimales como enteros.
- Duration: este tipo de campo sirve para calcular la diferencia de tiempo y fecha que hay entre dos valores.
- Integer: admite únicamente valores enteros.
- Option: este campo nos permite atribuirle varias opciones y mostrarlo a modo de dropdown list (lista desplegable).
- Text: esta variable admite cualquier carácter existente.
- Time: este tipo de dato alberga valores de tipo horario.
- Record ID: este tipo de dato contiene el número y la primary key de la tabla.
Cada tipo de campo tiene sus propiedades de campo y para que puedas acceder a ellas únicamente necesitas posicionarte encima del campo y pulsar la tecla (shift + F4).
Las claves primarias (PK) de una tabla se configuran en la propia tabla. Sirve tanto para identificar como para designar el orden en el que los datos van a ser albergados en la base de datos. Siempre es necesario este campo, ya que es como el DNI, es decir, nunca puede estar repetido. Además, tienes que saber que una clave primaria puede estar formada por uno o varios campos.
Los Field groups de una tabla nos permiten definir los campos que se mostraran en los DropDown.
Relaciones de tablas
Las relaciones de tablas nos sirven para:
- Visualizar datos de otras tablas
- Propagación de datos
- Validar entrada de datos
Para ello tenemos una propiedad llamada TableRelation. Para acceder a ella, iremos a las propiedades del campo y localizaremos esta propiedad.
Si nos adentramos en ella puedes ver cómo esta propiedad nos permite seleccionar la relación con otra o varias tablas, inclusive filtros para seleccionar la información que queremos que se nos muestre.
En este ejemplo podemos ver que el campo en cuestión mostrará un desplegable de los registros de la tabla ‘Currency’ en los que el valor del campo ‘Code’ sea igual a 10.
Páginas
Una página es un objeto en el que nosotros vamos a configurar cómo queremos que se muestren los datos de la tabla. Se implican tanto tratamiento de datos como de diseño.
Las propiedades de una página se usan para definir el comportamiento de las mismas cuando se muestran. Aquí te muestro algunas de las más importantes:
- SoureTable: esta propiedad nos indica la tabla a la que la pagina hará referencia. Es decir, si queremos crear una ficha de cliente, vamos a hacer referencia a la tabla de ‘Clientes’ donde recogeremos toda la información necesaria del cliente para hacer la página. Un ejemplo básico de una página sería:
Como puedes ver tenemos registros tipo Field. Estos hacen referencia a los campos a mostrar en la página de la propiedad SourceTable vinculada.
Además, quiero mostrar un tipo de dato “Part”. Este nos permite vincular un listado de otra página, como en este caso de movimiento de cliente. ¿La ventaja? Poder mostrar los movimientos de cada cliente que busquemos en nuestra página, muy común entre las peticiones de los clientes.
Los tipos de controles existentes son:
- Container: contenedor de otros controles
- Group: sirve para organizar los controles de forma lógica
- Field: son los campos que muestran la información
- Part: muestran otras páginas
Las propiedades de los controles de una página son vitales para evitar que introduzcan valores erróneos, restringir y controlar el uso que se le va a hacer tanto a la página como a los campos. Suelen ser estrictamente necesarios, siempre dependiendo del uso que se le vaya a dar. Para modificar el comportamiento de un control tendremos que ir a las propiedades del campo.
Una acción suele ser una tarea repetitiva o frecuente. Cada página tiene un juego de acciones que aparecen en el menú. Cuando se pulsa una acción, se ejecuta una funcionalidad (ver una ficha de cliente, ejecutar un report, mostrar por pantalla la cantidad de registros existentes…). Vamos a crear una Page Action básica y para ello debes seguir estos pasos:
Al pulsar F9 sobre nuestra Action ‘Hola’, abriremos el entorno de desarrollo. Por ejemplo, vamos a crear un Action que nos muestre un mensaje por pantalla cada vez que hagamos clic sobre él.
C/AL
En Navision tenemos varios tipos de Trigger. Un trigger es un disparador que se ejecuta cuando se realiza una acción en concreto. Por ello tenemos que saber identificar cuál de los triggers existentes va a ser el que nos dé el uso que buscamos previo a introducir una línea de código.
Los triggers se encuentran en los objetos como páginas, tablas, codeunits… Tenemos varios tipos de trigger. Los más comunes son:
- OnRun: se lanza al ejecutar el objeto.
- OnModify: se lanza cuando se realiza una modificación.
- OnInsert: se lanza al ingresar un nuevo registro.
- OnDelete: se lanza al eliminar un valor.
- OnAfterGetRecord: comúnmente utilizado para ejecutar procesos en objetos de tipo Report. Este trigger desencadena una acción por cada movimiento de registros realizado. Por ejemplo: realizar una modificación en cada registro existente.
Una variable hace referencia a un valor. Este valor puede variar mientras el usuario ejecuta un proceso. Para definir una variable -> Menu Ver, C/AL GLOBALS.
Si queremos crear una variable de uso individual en una función en concreto realizaremos el mismo proceso, pero crearemos la variable en C/AL Locals. De este modo solo podremos utilizar dicha variable en la función que se defina y no se le permitirá el uso ni la mención de forma externa.
Sentencias y expresiones:
- Asignación: para asignar valores de una variable a otra uno de los factores principales a seguir es que tienen que tener la misma estructura de datos, es decir, yo no puedo asignar un numero decimal a una variable entera, pero, si puedo asignar un valor entero a una variable entera.
- Var1 := var2;
- Expresiones Numéricas: tiene como resultado un valor numérico.
- Expresiones lógicas y relacionales: expresiones que comparan valores y dan resultados booleanos.
- Operadores asimétricos:
- Operadores relacionales:
- Condicionales:
Si cumples la condición, entonces ejecuta Statement1; sino, ejecuta Statement2.
- Estructuras de repetición:
Realiza esta acción (Statements) hasta que Condition se cumpla.
Espero que te haya servido de ayuda todo lo incluido en esta guía básica NAV. Te aseguro que quedan muchas más cosas por conocer y te animo a que inicies una tarea de investigación para conocer Navision en todo su esplendor. Este artículo es solo el inicio para llegar a ser un gran consultor. Yo ya he empezado, y tú. ¿Te animas?
[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]
Comments 4
Muy buen inicio para Empezar a manejar Nav un poderoso sistema de erp.
Muchas gracias por el aporte.
Gracias Yael por tus palabras. Nos alegra escuchar que nuestro artículo te ha parecido interesante. ¡Un saludo!
Que tal buen dia.. yo tengo una aplicación hecha en Navision y me funcionaba bien en otro servidor aunque un poco lento.. pero hice el cambio a un servidor con mucha mayor capacidad pero resulta que ahora se complica el trabajo con los usuarios.. se atoran unos con otros dice que una tabla esta ocupada con otro usuario… o se pone a leer registros en una tabla y tarda mucho.. ya no sé que hacer.. no se si la copia la hice bien o que me hizo falta pero mi operación se está viendo afectada ojalá puedan ayudarme. Gracias
Buenos días,
Para ayudarte necesitamos que nos facilites más datos: ¿Qué versión de NAV tienes? ¿De qué tipo de base de datos estamos hablando: nativa/propietaria o SQL? ¿Cuentas con un plan de mantenimiento SQL? También mencionas un servidor con mucha capacidad: ¿te refieres a capacidad de almacenamiento o te refieres al procesador y la memoria?
Te recomendamos que nos mandes un correo a mkt@aitana.es para aclarar todas las dudas que puedas tener y que podamos contactar contigo de forma directa.
Un saludo y ¡gracias por leer nuestro artículo!