Importieren und Exportieren von NAV Objekten mit C/Front
Dieser Beitrag behandelt das Thema wie man Dynamics NAV Objekte mit C/Front automatisiert importieren und exportieren kann.
Wir haben in dem vorhergegangenen Beitrag "Zugriff auf NAV mit einem .Net C# Projekt mit Hilfe von C/Front" die Grundlagen eines .NET Projektes mit C/Front besprochen.
Die in diesem Beitrag beschriebenen Code Beispiele basieren auf dem vorhergegangen Demo-Projekt. Ich werde daher nur auf die Code-Änderungen in diesem Beitrag eingehen.
Exportieren von Objekten:
Die nun folgende Zeile exportiert Tabellen Objekte von 1..10. Speicherort ist "C:\x\ExportFob.fob":
CFrontDotNet.Instance.ExportFOB("C:\\x\\ExportFob.fob", "WHERE(Type=CONST(Table),ID=FILTER(1..10))");
Der Filter für den Aufruf muss genau in der gleichen Form angewendet werden, wir wir Ihn aus dem "DataItemView" aus dem Reports in NAV kennen.
Der einfachste Weg um diesen Filter zu erstellen ist ein neuen Report in NAV zu erstellen, basierend auf den Object Table und von dort aus in den DataItem Properties sich einen Filter zu erstellen.Diesen Filter können Sie dann bequem nach Visual Studio übernehmen und in dem C/Front Code übernehmen.
Die exportierte Datei besitzt das Format .fob und kann über die bekannten Wege z.B. über den Client, wieder in NAV eingelesen werden (Datei -> Importieren aus dem Objekt Designer).
Eine weitere Möglichkeit .fob Dateien zu importieren werden wir uns nun anschauen. Sie können natürlich die Objekte auch mit Hilfe von C/Front wieder importieren.
Importieren von Objekten:
C/Front bietet einen speziellen Datentyp "NavisionImportMode". Dieser Datentyp kontrolliert den Import-Vorgang und reagiert z.B. auf Konflikte die beim Einlesen auftreten können. Mit diesem Datentyp können Sie festlegen, wie mit den zu importierenden Objekten umgegangen werden soll. Die möglichen Einstellungen sind Überschreiben(Overwrite), Überspringen(Skip) oder einen Fehler ausgeben(ThrowError).
Der folgende Code importiert die soeben exportierten Objekte und überschreibt diese:
NavisionImportMode ImportMode;
ImportMode = NavisionImportMode.Overwrite;
CFrontDotNet.Instance.ImportFOB("C:\\x\\ExportFob.fob", ImportMode);
Kommentar:
Sie können die Objekte nur als binärer FOB Datei exportieren. Das Abspeichern als TXT Format ist nicht möglich.
Eine Neuerung im Service Pack 1 für NAV 5.0 ist das nicht mehr Lizenz beim Import von Objekten geprüft wird. Der Import funktioniert nun wie als würden Sie die Objekte manuell einlesen.
Dieser Artikel wurde zuerst veröffentlicht unter "Importing and exporting NAV objects with C/Front"
These postings are provided "AS IS" with no warranties and confer no rights. You assume all risk for your use.
Mit freundlichen Grüßen
Sebastian Röttel
Microsoft Dynamics Germany
Microsoft Customer Service and Support (CSS) EMEA
Comments
Anonymous
December 10, 2009
Dies aus einer .net anwendung umzusetzen ist recht charmant. Leider kann man von außen aber keine Objekte, wie z.B. Reports, ausführen. deshalb wollte ich dies mit dem cfront.ocx in NAV direkt machen. Leider funktioniert dort der export und import nicht (unbekannte Datentypen). Gibt es dennoch einen Weg, dies aus NAV heraus zu machen bzw. von der .net Anwendung heraus einen Bericht/Codeunit anzustoßen (Bsp. nachdem Objekte eingelesen wurden, muss ein Batchlauf (Report) ausgeführt werden). Über eine Antwort würde ich mich freuen.Anonymous
January 04, 2010
An dieser Stelle würde ich die neue Funktionalität von NAV 2009 wählen und eine Codeunit als Webservice exposen um diese dann von Außen anzutriggern. Ansonsten benötigen Sie immer die NAV runtime.