Glissez-Déposer et les liens dans Dynamics NAV

image

“Les liens” est une fonctionnalité puissante de Dynamics NAV qui permet d’attacher le lien d’un document à n’importe quel enregistrement. Les liens peuvent aussi passer d’un document à l’autre, par exemple, si le lien est attaché à un devis lorsque ce devis est transformé en commande le lien est aussi accessible depuis la commande.

La seule contrainte est l’enregistrement de ce lien n’est pas très userfreindly.

 

 

 

 

Le glissez-déposer de Windows peux être très pertinent améliorer et faciliter l’utilisation des liens Dynamics NAV. Voir la vidéo :

Dans cette article, je vous montre comment utiliser l’extensibilité client du RoleTailored pour ajouter une zone pour déposer un ou plusieurs fichiers et créer des liens pour un enregistrement dans Dynamics NAV.

Pour cela, il faut :

  • Développer un Add-In générique Drag&Drop : qui récupère le ou les documents déposés et envoie son chemin à Dynamics NAV
  • Gérer le Trigger OnControlAddIn pour créer le lien dans Dynamics NAV

Visual Studio : Développer un Add-In générique Drag&Drop

using System;

using System.Collections.Generic;

using System.Text;

using Microsoft.Dynamics.Framework.UI.Extensibility;

using Microsoft.Dynamics.Framework.UI.Extensibility.WinForms;

using System.Windows.Forms;

using System.Drawing;

using System.ComponentModel;

using System.Xml;

 

namespace NAVDragDrop

{

    [ControlAddInExport("NAVDragDrop")]

    public class NAVDragDrop : StringControlAddInBase

    {

        protected override Control CreateControl()

        {

 

            TextBox control = new TextBox();

            control.MinimumSize = new Size(50, 50);

            control.MaximumSize = new Size(500, Int32.MaxValue);

            control.ReadOnly = true;

            control.AllowDrop = true;

            control.DragDrop += control_DragDrop;

            control.DragEnter += control_DragEnter;

 

            return control;

 

        }

 

        private void control_DragEnter(object sender, DragEventArgs e)

        {

            e.Effect = DragDropEffects.All;

        }

 

        private void control_DragDrop(object sender, DragEventArgs e)

        {

 

 

            string[] files = (string[])e.Data.GetData(DataFormats.FileDrop);

            foreach (string file in files)

            {

                RaiseControlAddInEvent(1, file);

            }

        }

    }

}

 

Dynamics NAV : Gérer le Trigger OnControlAddIn pour créer le lien

OnControlAddIn(Index : Integer;Data : Text[1024])
IF (Index = 1) THEN BEGIN
  ADDLINK(Data, 'Doc : ' + Data);
END;