Les XMLports sont utilisés pour exporter des données depuis une base de données Dynamics NAV au format XML, ou importer des données depuis un fichier XML file dans une base de données Dynamics NAV.

Exporter des données depuis votre base de données Dynamics NAV au format XML permet des échanges standardisés d’informations entre différents systèmes informatiques. Vous n’avez besoin que d’une connaissance de base de XML pour concevoir et travailler avec les XMLports.

Les XMLports sont appelés et lancés depuis des Codeunits ou lancés depuis Object Designer. Dans ce tutoriel, vous appellerez le XMLport depuis un Codeunit. Dans le Codeunit, vous définissez le flux de sortie qui va exporter les données, ainsi que l’emplacement où le document XML doit être enregistré.

A propos de ce tutoriel

Ce tutoriel vous montre comment exporter des données depuis une table Dynamics NAV dans un document XML. Ce tutoriel illustre les tâches suivantes :

  • Créer un XMLport.
  • Compiler et sauvegarder le XMLport.
  • Créer le Codeunit qui lancera le XMLport.
  • Lancer le XMLport.

Prérequis

Pour compléter ce tutoriel, vous aurez besoin:

  • Microsoft Dynamics NAV 2018 installé avec une licence de développement
  • Une base de données de test.

Scénario

Simon est un Microsoft Certified Partner travaillant pour CRONUS International Ltd. Il lui a été demandé d’exporter des enregistrements depuis la table Customer dans un document XML Les enregistrements incluront seulement les champs No., Name, Address, City, et Contacts. Les informations seront partagées avec un autre collègue qui traille sur un autre système informatique. Simon sait qu’il peut utiliser les XMLports pour convertir les enregistrements de la table au format XML qui peut facilement être partagé avec son collègue.

Créer le XMLport

Vous créez le XMLport en le concevant dans XMLport Designer et en réglant les propriétés du XMLport. Vous définissez la table et les champs que vous voulez exporter dans XMLport Designer. Puis vous compilez et sauvegardez le XMLport.

Pour créer le XMLport

  1. Dans le Microsoft Dynamics NAV Development Environment, sur le menu Tools, choisissez Object Designer.
  2. Dans Object Designer, choisissez XMLport, et puis choisissez New pour ouvrir XMLport Designer.
  3. Sélectionnez une ligne vide dans le designer. Sur le menu View, choisissez Properties pour ouvrir la fenêtre XMLport-Properties.
  4. Dans la fenêtre XMLport-Properties, localisez Direction Property, choisissez la liste déroulante dans la colonne Value  et puis positionnez le sur Export.
  5. Dans la fenêtre XMLport-Properties, localisez Format Property (XMLports), vérifiez que la colonne Value est positionnée à XML et puis fermez la fenêtre XMLport-Properties.
  6. Dans XMLport Designer, sur la première ligne, dans la colonne Node Name, entrez Root.
  7. Dans la colonne Node Type, vérifiez que Element est sélectionné.
  8. Dans la colonne Source Type, vérifiez que Text est sélectionné. Ce node représente le début du document XML
  9. Sur la seconde ligne, dans la colonne Node Name, entrez Customer.
  10. Dans la colonne Node Type, sélectionnez Element.
  11. Dans la colonne Source Type, sélectionnez Table. Ce node représente un enregistrement client dans le document XML.
  12. Dans la colonne Data Source, sélectionnez la table Customer (18) depuis la fenêtre Table List. Les données seront exportées depuis la table Customer.
  13. Sélectionnez la ligne Customer et utilisez le bouton flêche de droite pour indenter la ligne une fois pour faire un sous-ensemble de l’élément Root. L’étape suivante est de sélectionner les champs que vous voulez exporter.
  14. Dans la prochaine ligne vide sous la ligne Customer, dans la colonne Node Type, sélectionnez Element.
  15. Dans la colonne Source Type, sélectionnez Field.
  16. Dans la colonne Data Source, sélectionnez le champ No. depuis la fenêtre Field Lookup, et puis choisissez le bouton OK.
  17. Dans la colonne Node Name, entrez un nom pour le champ. Par exemple, nous pouvez entrer No. Ce nœud représente les champs dans l’enregistrement. Vous pouvez entrer n’importe quel nom mais pour la cohérence, il est préférable d’entrer le nom du champ que vous avez sélectionné.

    Note

    Le nom que vous entrez dans la colonne Node Name ne peut pas contenir d’espaces. Des espaces dans le nom entraîneront une erreur de compilation.

  18. Sélectionnez la ligne No. et utilisez le right arrow button to pour indenter le champ une fois pour en faire un sous-ensemble de l’élément Customer.
  19. Répétez ces étapes pour sélectionner les champs additionnels que vous voulez exporter. Pour ce tutoriel vous pouvez sélectionner le champs suivants:
    Node Name Node Type Source Type Data Source
    No. Element Field Customer::No.
    Name Element Field Customer::Name
    Address Element Field Customer::Address
    City Element Field Customer::City
    Contact Element Field Customer::Contact

A la fin votre XMLport doit ressembler à ça:

 

  1. Dans le menu File, choisissez Save As.
  2. Dans la fenêtre Save As, entrez 50001 dans la boite de texte ID.
  3. Dans la boîte de texte Name, entrez CustomerXMLport, vérifiez que la check box Compiled est sélectionnée, et puis choisissez le bouton OK. Vous utiliserez le nom du XMLport plus tard dans le Codeunit.
  4. Fermez XMLport Designer.

Créer le Codeunit pour exporter les données

Après que vous ayez créé le XMLport, vous créez le codeunit qui va lancer le XMLport et sauvegarder les données. Dans ce tutoriel, vous allez sauvegarder le document XML sur l’ordinateur client. Pour faire cela, vous créez le ficher dans un répertoire temporaire, et puis vous le téléchargez sur le client après que l’export soit complété. Dans le Codeunit, vous allez spécifier le chemin du fichier temporaire et le chemin où le document XML sera enregistré sur le client.

Pour créer le Codeunit

  1. Dans Object Designer, sélectionnez Codeunit, et puis choisissez New pour ouvrir l’éditeur C/AL Editor. Vous allez déclarer des variables que vous utiliserez dans le code. Vous allez créer des variables pour le fichier XML, le flux sortant qui exporte les données, et la valeur de retour pour la fonction EXPORT (XMLport). Vous allez aussi créer des variables pour le fichier qui sera téléchargé depuis le serveur et le fichier qui sera enregistré sur le client.
  2. Dans le C/AL Editor, placez le curseur dans la fonction OnRun, et puis, sur le menu View, choisissez C/AL Locals pour ouvrir la fenêtre C/AL Locals.
  3. Sur l’onglet Variables, dans la colonne Name, entrez CustXmlFile.
  4. Dans la colonne DataType, choisissez la liste déroulante et sélectionnez File. Cette variable représente le fichier XML.
  5. Répétez les étapes 3 et 4 et créez les variables additionnelles suivantes:.
    Variable name DataType
    CustXmlFile File
    XmlStream OutStream
    IsExported Boolean
    FromFile Text
    ToFile Text
  6. Vous allez créer les constantes texte qui vont stocker les messages qui sont affichés dans les boîtes de messages. Dans la fenêtre C/AL Locals, choisissez l’onglet Text Constants.
  7. Dans le champ Name, entrez Text000 et puis dans le champ ConstValue, choisissez le bouton EditAssist pour ouvrir le Multilanguage Editor.
  8. Dans le Multilanguage Editor, dans le champ Language, sélectionnez FRA (Français) depuis la fenêtre Windows Language List et puis choisissez  le bouton OK.
  9. Dans le champ Value, entrez le texte suivant: L’export de la table Customer vers XML est complété.
  10. Créer une autre constante texte qui s’appelle Text001 avec la valeur L’export a échoué.

    Note

    Les constantes texte sont optionnelles. Cependant elles permettent que les messages soient traduits dans les différentes langues.

  11. Fermez la fenêtre C/AL Locals.
  12. Dans le C/AL Editor, dans le trigger OnRun, ajoutez le code suivant:
CustXmlFile.CREATE(TEMPORARYPATH + 'Customer.xml');  
CustXmlFile.CREATEOUTSTREAM(XmlStream);  
IsExported := XMLPORT.EXPORT(XMLPORT::CustomerXMLport, XmlStream);  
FromFile := CustXmlFile.NAME;  
ToFile := 'CustomerClient.xml';  
CustXmlFile.CLOSE;  
IF IsExported THEN  
BEGIN  
  DOWNLOAD(FromFile,'Download file','C:\Temp','Xml file(*.xml)|*.xml',ToFile);  
  ERASE(FromFile);  
  MESSAGE(Text000);  
END  
ELSE  
  MESSAGE(Text001);  

Ce code utilise la fonction CREATE (File) pour créer un fichier XML qui est nommé CustXmlFile dans un répertoire temporaire sur le serveur. La fonction TEMPORARYPATH récupère le chemin du répertoire temporaire. La fonction CREATEOUTSTREAM (File) ouvre un flux de données pour envoyer les données dans le fichier XML. La fonction EXPORT (XMLport) utilise le XMLport et le flux pour exporter les données. Si l’export réussit, la fonction DOWNLOAD (File) télécharge le fichier depuis le répertoire temporaire sur l’ordinateur qui exécute Microsoft Dynamics NAV Server vers le client. Le chemin par défaut du fichier sur l’ordinateur client est  ‘C:\Temp’ mais vous pouvez le changer dans la boîte de dialogue de téléchargement. Un message est affiche à la fin de l’export pour indiquer que l’export est complété. Otherwise, un message d’erreur est affiché. Ce message n’est pas obligatoire mais il permet à l’utilisateur de savoir que something actually occurred. Le fichier temporaire est supprimé après que le téléchargement est complété.

  1. Fermez le C/AL Editor et choisissez le bouton Yes à l’invite.
  2. Dans la boite de dialogue Save As, dans la boite de texte ID, entrez 50000.
  3. Dans la boite de texte Name, entrez ExportCode.
  4. Vérifier que la check box Compiled est sélectionnée et puis choisissez le bouton OK.

Lancer le XMLport

Après que le XMLport soit créé et que le Codeunit soit écrit, vous lancez le Codeunit pour exporter les données.

Pour lancer le XMLport

  1. Dans l’Object Designer, sélectionnez le Codeunit ExportCode (50000), et puis choisissez le bouton  Run. Le client Microsoft Dynamics NAV Windows s’ouvre et la boite de dialogue Export File est affichée. Vous pouvez choisir le bouton Open pour ouvrir et voir le fichier, ou choisir le bouton SAVE pour l’enregistrer. Dans ce tutoriel, vous allez enregistrer le fichier.
  2. Choisissez le bouton SAVE pour ouvrir la fenêtre de téléchargement.
  3. Dans la fenêtre Download file, choisissez le bouton SAVE. Vous pouvez changer le nom par défaut du fichier et l’endroit où il sera enregistré.
  4. Après que l’export soit complété, naviguer vers l’emplacement où le document XML a été enregistré et ouvrez le. Remarquez que tous les enregistrement dans la table sont maitenant en format XML. L’élément <Customer></Customer> représente un enregistrement et chaque enregistrement contient les champs que vous avez sélectionnés dans le XMLport Designer. Le fichier XML qui est exporté ressemble au fichier XML de l’image suivante. Le fichier XML contient les données des 4 premiers clients seulement.

Le fichier XML qui a été exporté depuis la table Customer :

 

 

Etapes suivantes

Vous pouvez aussi utiliser XMLport to pour importer des données depuis un document XML vers une base de données Dynamics NAV. Pour plus d’informations, voir Walkthrough: Inserting Data from XML Documents to Multiple Tables.

  1. Bonjour et merci pour ce tutoriel très bien expliqué.
    J’ai une question à poser.
    Est-ce possible de modifier les données à leur sorties?
    Exemple: Ajouter (concatener) 1000 part exemple dans le fichier xml si la valeur initiales dans la table était de 1000 on aura ainsi 10001000 dans le fichier xml.
    Merci pour votre reponse!

Leave a Reply

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Blue Captcha Image
Refresh

*

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.