Todo sobre NAS

Navision Application Server es, en pocas palabras, un cliente de navision sin entorno gráfico. Esto significa que podemos disponer de un cliente que se puede conectar de forma automática si lo instalamos como servicio de windows sin necesidad de ni siquiera iniciar la sesión de forma manual. Al no ofrecer un entorno gráfico, todos los procesos y acciones que se llevan a cabo son “invisibles” a los ojos de alguien que pueda estar utilizando el servidor donde se aloja.

¿Y ésto para que lo quiero? Los usos que ésto tiene son muy variados, pero entre ellos destacan la gestión de sincronización de datos con bases de datos externas, la gestión sobre peticiones externas de datos o la ejecución de procesos almacenados en navision.

Vale… Te lo compro… ¿Cómo me lo instalo? Pensaba que ibas a preguntar algo difícil. Es muy sencillo y sólo necesitas el CD de navision. Una vez dentro hay que buscar la carpeta NAS y ejecutar su setup.exe. Recomiendo utilizar la instalación personalizada para que el proceso nos indique el nombre de los servicios que se van a instalar.

¿Cómo lo conecto a mi base de datos? Para que NAS pueda acceder a una base de datos utilizando un login, necesitamos configurar dos cosas: el acceso a la base de datos y un login :P. Tranquilo, esto no es la ayuda del programa PADRE de AEAT… yo quiero ayudarte: Antes de hacer nada, necesitamos saber si nuestra base de datos es nativa o SQL ya que configuraremos la instancia de nas.exe o nassql.exe respectivamente. Para configurar el servicio utilizaremos Navision Application Server Manager. Al entrar al programa simplemente clickaremos con el botón derecho sobre Navision Application Server Manager, seleccionamos la opción nuevo -> Application Server. En el cuadro que nos aparece indicaremos el nombre que hayamos indicado en la instalación de NAS. Si no habéis modificado el propuesto debería ser NOMBRE_MAQUINA-CLASSIC para nas.exe y NOMBRE_MAQUINA-SQL para nassql.exe.

Si por el motivo que sea, tienes problemas para acceder a Application Server Manager, puedes configurar NAS con comando escritos manualmente. Puedes consultar más información consultando este link: Comandos para instalación de un nuevo NAS. En la parte izquierda del programa apareceran los campos que hay que configurar. Hay que indicar los mismos valores que ponemos en nuestro cliente de navision para conectarnos a la base de datos. En el campo Startup Parameter indicaremos “NAS1”. El valor de este campo lo trataremos en el código de la codeunit 1 de Navision para identificar al NAS que se ha conectado a la base de datos. Esto sólamente es útil cuando utilizamos varios NAS en una misma base de datos que comparten un mismo login. Así por ejemplo podriamos tener a NAS1 que se encarga de la ejecucion de una serie de procesos y a NAS2 que se encarga de una gestión de peticiones online que pudiera hacerle un supuesto portal de negocio o B2B. Cuando acabemos de rellenar el formulario le damos a “Apply changes” y lo encendemos.

Ahora viene cuando te preguntas: “¿Ya está? ¿NAS está dentro de Navision?… ¡¡¿Y que c*ño me estará haciendo?!! Mierda!!”. Tranquilo. Lo más seguro es que haya petado, no diga nada y tampoco esté haciendo nada. ¿Por que? Porque Navision nos pide un usuario y una contraseña para entrar y nosotros no le hemos indicado ninguna. Tenemos que ir a los servicios de Windows para indicarle al servicio qué usuario va a utilizar en su intento de conexión a Navision. Para llegar a esa pantalla iremos a Panel de Control -> Herramientas Administrativas -> Servicios. Ahí tenemos que buscar nuestro “Navision Application Server NOMBRE_MAQUINA-CLASSIC” o parecido según nuestra versión de Navision. Cuando lo tengamos localizado le damos a botón derecho -> Propiedades y entramos en la pestaña de inicio de sesión. Aquí indicaremos el usuario que utilizará NAS para entrar en Navision. Recomiendo utilizar un usuario específico del dominio al cual podemos llamar “NAS” o la cuenta de administrador del dominio al comienzo para descartar algún posible problema de credenciales. Ahora, sólo nos queda abrir Navision y comprobar que este usuario de windows existe en la opción de Windows Logins. Nuevamente, y para descartar errores es recomendable otorgar a este usuario un rol tipo “SUPER” o parecido. Una vez hecho esto ya podemos reiniciar el servicio.

¿Cómo puedo saber si está todo bien? Como ya hemos comentado antes, NAS no tiene entorno gráfico. Esto significa que si en las rutinas de ejecución se encuentra con un FORM.RUNMODAL, por ejemplo, NAS da un error y se para. La forma que tiene NAS de enseñarnos este error, es a través del Visor de sucesos. Podemos acceder al visor de sucesos mediante Panel de control -> Herramientas administrativas -> Visor de sucesos -> Aplicación. Los mensajes que nos dan miedo son los amarillos mientras que los blancos son nuestros chivatos (MESSAGE) que se encuentre NAS en el camino. Si hemos seguido los pasos correctamente y hemos sido buenos, tendremos una especie de mensaje por ahí diciendo que Navision se ha podido conectar sin problemas y nos mostrará los datos que hemos configurado en el Application Server Manager. Cualquier otra cosa, me ponéis un comentario y os lo contesto “mu mablemente”. También podéis ver en las sesiones de la base de datos si está el usuario dentro de navision.

Sigo aterrorizado… ¿que está haciendo esto en mi navision? Seguramente nada de nada. Prácticamente todo el mundo sabe o supone que una de las primeras cosas que se ejecuta cuando accedemos a navision es la función “opencompany” de la codeunit 1. Pero NAS, que es muy listo, ejecuta la función “NASHandler” cuyo parámetro es precisamente el NAS Parameter que habíamos configurado antes. Eso quiere decir que ahí es donde va a empezar nuestra odisea, nuestras rutinas para hacer que NAS haga lo que nosotros queramos: un planificador de tareas, un sistema de alertas, un gestor de sincornizacion, un gestor de peticiones, etc. Os voy a contar un secreto: Si exportáis la codeunit 1 en modo texto veréis que NASHandler es la funcion 99 SIEMPRE. Si no es la 99, NAS no funciona.

Soy una máquina. Ya he empezado a hacer mis cositas con NAS pero siempre estoy duplicando funciones y muchisimas líneas de código para evitar encontrarme con CONFIRMS, FORMS, DIALOGS, etc, etc… Fácil. Si miras una codeunit estandar veras que los DIALOG estan protegidos por una línea que los precede que dice “IF GUIALLOWED THEN”. GUIALLOWED es una función que está en navision, la vemos, no la entendemos y nos da igual. Sólo el ser humano puede hacer estas cosas. GUIALLOWED nos indica si el usuario que esta ejecutando esta línea es capaz de proporcionar entorno gráfico o no. En resumen “IF GUIALLOWED THEN” = “IF NOT ERES_EL_NAS THEN”. Acordaros de ésta función porque seguro que váis a tener que colocar muchas a partir de ahora.