El C/SIDE se conoce como el Object Designer o Diseñador de objetos dentro de NAV y es la herramienta que se utiliza para crear, modificar o eliminar objetos. A esta herramienta se accede a través de un acceso directo separado que se instala como parte de una instalación típica de Dynamics NAV.
Al usar el Object Designer es muy importante saber en qué entorno vamos a trabajar, cuál o cuáles van a ser los objetos sobre los que vamos a trabajar y disponer de un tipo de licencia adecuado. Por ejemplo, imaginemos que tenemos una instancia de producción y otra de desarrollo, si no tenemos claro el entorno podríamos modificar un objeto de producción cuando deberíamos hacerlo en desarrollo, o modificar un objeto que no sabemos si dicha modificación afecta a otros objetos, de allí la importancia de usar un sistema de control de versiones y una herramienta como Prims.
Al lío, vamos a explicar un poco la composición de este entorno C/SIDE.
Cuando abrimos el Diseñador de objetos, vemos la siguiente pantalla:
En la parte izquierda tenemos los tipos de objetos que existen en Dynamics NAV. Al pulsar en cada tipo de objeto se muestra a la derecha un listado de objetos del tipo seleccionado. Todos los objetos que se muestran con numeración del 1-49.999 vienen por defecto en el estándar de NAV y son los que definen las funcionalidades del sistema.
El listado de objetos se compone de las siguientes columnas ID, Name, VersionList, Date, Time, Compiled.
- Type: Indica el tipo de objeto, como Table, Page, Report, Codeunit, Query, XMLPort y MenuSuite.
- ID: Es el identificador único del objeto. (Cada Partner tiene su propia numeración)
- Name: Es el nombre del objeto.
- Modified: El nombre del usuario que realizó la última modificación en el objeto.
- Version List: El listado de versiones nos permite hacer un seguimiento de todas las modificaciones que se hacen en los objetos de Dynamics NAV. Podemos usarlo tanto para objetos nuevos como para objetos ya existentes. Por ejemplo, si queremos hacer una modificación en un objeto y no queremos olvidarnos de ella, podemos añadir un tag en el campo de “Version List”. Esto nos permitirá tener una referencia de la modificación que se ha realizado en ese objeto.
- Date: La fecha en que se creó o modificó por última vez el objeto.
- Time: La hora en que se creó o modificó por última vez el objeto.
- Compiled: Indica si el objeto ha sido compilado correctamente o no.
- Caption: Muestra la traducción del nombre del objeto.
- Locked: Si el objeto está bloqueado por otro usuario. Esta columna se usa mucho cuando hay un equipo de desarrolladores y queremos que no compilen nuestro el objeto.
- Locked By: Indica el nombre del usuario que tiene bloqueado el objeto.
Menú principal
En el menú principal tenemos dos apartados:
- Menú de opciones: File, Edit, Window, Tools, Windows, Help.
- Menú de Acciones: Estos botones de acción se pueden llamar desde el menú de opciones.
- Cortar, Copiar, Pegar, Nuevo, Eliminar, Buscar => 1
- Filtro de camo, Filtro de tabla, Flowfilter => 2
- First, Previous, Next, Last, List => 3
- Properties, Field Menu, C/AL Symbol Menu, C/AL Code = > 4 (se muestra en modo diseño)
Menú File (Archivo)
A continuación, os detallo muy por encima loque hace cada opción.
New: Esta opción permite crear un objeto nuevo. Si estas posicionado en un tipo de objeto te abrirá el formulario de creación de ese tipo de objeto.
Design: Abre el objeto en modo diseño para que puedas ver sus campos, propiedades, modificar, etc.
Run: Permite ejecutar un objeto en el cliente NAV. Se suele usar para abrir tablas que no disponen de una página en el cliente y así poder ver los registros que tiene dicha tabla. También mientras se está desarrollando para hacer una preview de lo que estamos haciendo o para ejecutar algún proceso de una CodeUnit o Report.
Import: Con esta opción podemos importar objetos a nuestro entorno, sobre todo si tenemos dos entornos Desarrollo y Producción, los objetos que se modifiquen en el entorno de desarrollo se importarían al entorno de Producción mediante esta utilidad.
Al importar los objetos se realizar un chequeo por si hay conflictos, y puedes decidir en ese momento si reemplazar los objetos, hacer una marge, saltarlos (Skip), crear o borrar.
Export: Con esta opción podemos exportar los objetos bien sea para un backup o porque exportamos los objetos de un entorno de desarrollo para luego importarlos a un entorno de producción.
Los objetos se pueden exportar en formato .fob y formato .txt. Para importar objetos es mejor importar objetos .fob porque el Object Designer realiza un chequeo a la hora de importar. Pero si estas usando un control de versiones es mejor en formato .txt para que puedas comparar los desarrollos.
Nota: La exportación de objetos también se puede hacer mediante comando de PowerShell usando la consola de desarrollador.
Data Base: Con esta opción podemos conectar con las distintas bases de datos disponibles para trabajar con sus objetos.
Lock, Unlock, Force Unlock: Estas opciones se usan para bloquear y desbloquear los objetos.
Menú Edit
Este menú la verdad es que poco se usa, porque que sabiendo los atajos de teclado, F3, F8, Ctrl+F, etc. ya no vas al menú Edit.
Por mencionar, la utilidad Find (Ctrl+F) se usa mucho para realizar búsquedas dentro del listado de objeto y usando los asteriscos * puedes filtra mejor los resultados.
Cuando pones tags en el Version List es de gran utilidad para sustituir un tag por otro en varios objetos.
Menú View
Este menú tiene las opciones principales de los objetos, mientras se está desarrollando se interactúa mucho con este menú para ver las propiedades de los objetos y de los campos, variables, claves primarias y el código de cada objeto.
Show Column: Se usa para poder ver u ocultar columnas en el listado de objetos, en la mayoría de los casos es para mostrar la columna caption.
Properties: Esta opción se usa para mostrar las propiedades de un objeto o de algún campo. Tiene que estar el objeto abierto en modo diseño para poder ver esta opción de menú.
C/AL Symbol Menu: Esta opción muestra una lista de objetos y funciones de programación en C/AL, normalmente se utiliza para acceder a las variables creadas, a los registros de una tabla o funciones del sistema.
C/AL Code: Esta opción muestra el código C/AL, en esta ventana se muestran los trigers o métodos de un objeto y de sus campos y funciones. Dentro de cada uno de los métodos es donde codificaremos mediante instrucciones el comportamiento de cada uno de los componentes del objeto.
C/AL Globals: Esta opción permite ver las variables globales del objeto. También podemos ver las constantes de texto y las funciones. Estos tres elementos son los que se usaran conjuntamente con los campos del objeto para desarrollar las funcionalidades de los mismos.
C/AL Locals: Esta opción permite ver las variables globales del objeto. Normalmente las variables locales se crean dentro de las funciones por lo que tienes que tener abierto el C/AL Code (F9) para poder ver las variables locales.
Keys: Esta opción permite ver las claves primarias del objeto. Al final las tablas de NAV no dejan de estar en una base de datos por lo que para relacionarlas con otras tablas es necesario crear las claves primarias.
Page Actions: Si estas en un objeto de tipo Page verás esta opción del menú view.
La opción Page Action como su nombre lo indica, permite ver las acciones de una page, estas acciones realmente son los “botones” que se muestran en la cinta de opciones y que al pulsar en ellos se realiza alguna acción como imprimir, abrir un formulario, ejecutar un proceso, etc.
Preview: Si estas en un objeto de tipo Page verás esta opción del menú view.
La opción Preview permite hacer una previsualización de la página que se está diseñando.
Request Page: Si estas en un objeto de tipo Report o XML verás esta opción del menú view.
Esta opción presente en los Reports y en los XML muestra una ventana donde se pueden añadir filtros o cubrir datos que se usarán posteriormente en el report o archivo .xml desde el cual se está lanzando.
Layout: Si estas en un objeto de tipo Report verás esta opción del menú view.
La opción Layout permite ver el diseño de un informe (report), por defecto el Object Designer abre la aplicación Report Builder que es la que se muestra en la siguiente imagen, pero se puede configurar para usar Visual Studio Code que tiene más opciones a la hora de hacer el diseño.
Labels: Si estas en un objeto de tipo Report verás esta opción del menú view.
Los Label son etiquetas que se configuran en el report para poder mostrarlas en el layout, lo bueno de estas etiquetas es que en las propiedades se puede usar la traducción, hay desarrolladores que en lugar de Labels usan variables de texto, pero creo que es mejor usar Labels.
Menú Tools
Este menú muestra una serie de opciones/herramientas y la más importante de ellas es el Debugger.
Debugger: La herramienta Debugger permite rastrear un error aplicando un punto de interrupción en el código de una función y depurar una sesión de usuario con la que se está probando.
El funcionamiento del debugger requiere un post completo ya que tiene muchas funcionalidades que explicar.
Translate: Esta herramienta permite Importar y Exportar archivos con los textos de un objeto que son susceptibles de traducción.
Compiler: Como su nombre lo indica permite compilar los objetos. En ocasiones cuando un objeto aparentemente está correcto, pero por algún motivo no funcional compilarlo nuevamente puede que se solucione el fallo.
Lic Information: Esta opción muestra la licencia de Dynamics NAV, desde aquí se puede cargar o importar una licencia que te permita desarrollar.
Options: Desde esta opción se pueden configurar varios valores para el Object Designer, entre ellos el valor Use Report Builder, si se pone a NO y tienes el Visual Studio Code instalado al ver el layout de un repor este se abrirá con Visual Studio.
Menú Windows
Este menú permite cambiar entre ventanas que tengas abiertas en el Object Designer.
Help
Este menú muestra la ayuda de Dynamics NAV para que puedas consultar las funciones que se suelen usar en el desarrollo en C/AL.
Y bien, conociendo un poco por encima como moverse por el Diseñador de Objetos, ya es hora de ponerse manos a la obra, iré aplicando conceptos a través ejemplos.