NAVDEV Tips: Abrir WinForms desde Dynamics NAV 2018


En esta ocasión quiero compartir con ustedes una información bastante útil referente al consumo de aplicaciones ya desarrolladas. Normalmente, es ley no reinventar la rueda en cuanto a trabajos de desarrollo se refiere. Vamos a un caso puntual…

Tenemos una pequeña aplicación que gestiona las actividades del cajero de un Restaurant. Los dueños han decidido gestionar sus operaciones con Microsoft Dynamics NAV 2018 (buena decisión) pero no desean modificar su aplicación de cajero que les funciona de maravilla. Entonces, le proponemos utilizar ambos sistemas para que no dejen de utilizar su sistema actual.

El dueño, sin embargo, no desea manejar dos aplicaciones. Quiere todo integrado (ya que esa es la idea del Dynamics NAV). Ahí es donde surge esta solución:

Desde Microsoft Dynamics NAV, podemos realizar llamadas a librerías de .NET (que ya vienen integradas con Dynamics NAV), esto permite abrir cualquier programa instalado en nuestras máquinas.

Tenemos como ejemplo el siguiente formulario (desarrollado en .NET Framework 4.7.2):

Con un simple saludo escrito en C#:

using System;
using System.Windows.Forms;

namespace NAV AbrirWinForm
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void button1 Click(object sender, EventArgs e)
        {
            MessageBox.Show("Hola, " + this.textBox1.Text + ".");
        }
    }
}

De modo a que lo entiendan, tenemos el siguiente resultado:

Dentro de Dynamics NAV, para este ejemplo, en una Acción “Abrir Formulario” de la página “Información de la Compañía”, disculpen pero tengo la versión Australiana por un tema de retenciones :) colocamos la llamada:

Luego, procedemos a declarar las variables globales, invocando a librerías de .NET:

Por último, escribimos el código correspondiente para efectuar la llamada:

Abrir Formulario - OnAction()
Proceso := Proceso.Process;
Proceso.StartInfo.UseShellExecute := FALSE;
Proceso.StartInfo.FileName := 'C:\\temp\\NAV\_AbrirWinForm.exe';
Proceso.StartInfo.Arguments := '';
Proceso.StartInfo.CreateNoWindow := TRUE;
Proceso.Start();
CLEAR(Proceso);

De este modo, el resultado final será:

Así logramos invocar un programa externo desde Dynamics NAV 2018 sin perjudicar la operativa del usuario.


Ver también