Prüfen von Importdaten

23. Mai 2018 17:38

Hallo zusammen.

Ich programmiere an einen XML-Port ins ReBu und möchte den Import so sicher wie möglich machen.

Dazu hab ich mir überlegt, die prüfbaren Felder zu prüfen. Ich arbeite schon an verschiedenen Stellen mit FIELDERROR, um Fehler zu vermeiden.
Wenn also ein Fehler passiert, wird das Programm evtl. abgebrochen und es muss ein Logfile erstellt werden!
Dieses Logfile dient dazu, den Grund des Fehlers, so genau wie möglich zu beschreiben.
Ich suche einen sinnvollen Weg, wie ich bei einen Fehler ein Logfile, oder ein Fehlerprotokoll generieren kann, worin alle notwendigen Informationen enthalten sind?

Über Vorschläge würde ich mich freuen.

Gruß,
Christian

Re: Prüfen von Importdaten

24. Mai 2018 13:14

Habe letztes Wochenende genau sowas gebaut.

https://github.com/Nody85/DynamicsNavTools

Hol dir nen am besten Git Extensions zum pullen.

Die Codeunit hat 2 Public Funktionen.
Codeunit 66500 Nav Stuff

CheckTable
WriteLogFile

Du müsstest dann nur noch die Codeunit eintragen und

Code:
Errormessage001 Textkonstante = 'Debitor %1 hat keine Duchungsgruppe';

If Customer."Posting Group" = '' then
  Codeunit.WriteLogFile(Strsubstno(Errormessage001,"Customer.No."));


Ach und by the Way ich habe das auf 2017 entwickelt. Beim testen in 2015 ist aufgefallen das die Funktion zum Ordner auswählen irgendwie "BrowseFolder" heißt und noch einen Parameter mehr hat.
Ich werde bei Gelegenheit einen Branch für 2015 machen wo ich diese abweichung einarbeite um die Abwärtskompatibilität zu erhalten.

Re: Prüfen von Importdaten

24. Mai 2018 14:49

Hallo.

Ich würde es erstmal ohne Git Extensions versuchen und mich an deinen Code orientieren.
Mit Navision habe ich keine Erfahrung im Umgang mit Git Extensions.

Ich würde es erstmal so probieren.

An Objekten brauche ich,
1x Codeunit 66500 Nav Stuff
1x Page 66500 NAV Stuff
1x Tabelle 66500 NAV Stuff Setup
1x Tabelle 66501 Forbidden Signs
:?:

Re: Prüfen von Importdaten

24. Mai 2018 16:44

Du brauchst die Setup Tabelle und die Codeunit eigentlich nur. In der Setup musst du den Logpfad hinterlegen. Ich mach meistens etwas wie "C:\Temp" ohne "\" am ende.

Das Log wird auf dem Service Tier geschrieben.

Du kannst auch Writelogfile(GETLASTERROR) später machen;

Welche Versionskontrolle benutzt du den für deinen Sourcecode ?

Re: Prüfen von Importdaten

25. Mai 2018 10:05

Welche Versionskontrolle benutzt du denn für deinen Sourcecode ?

Ich glaube wir benutzen hier gar keine Versionskontrolle. Ich arbeite nicht in einen Systemhaus, oder Softwarehersteller, sondern ich arbeite bei einem Endkunden. Wobei es auch Endkunden geben soll, welche mit Versionsverwaltungen arbeiten sollen. :oops:

Gruß, Christian

Re: Prüfen von Importdaten

25. Mai 2018 10:56

Mach dir nichts draus, als ich ich Zürich beim Endkunden gearbeitet habe, hatten wir das wohl schlechteste Tool das ich seit 2004 gesehen habe. Object Manager Advanced.
Dieses Tool ist eigentlich nicht mal eine Versionskontrolle aber irgendwie halten es viele dafür.
Es hat ein paar nette Zusatzfunktionen aber nichts was z.b. Static CAL Prism nicht auch schneller und besser hinbekommt.

Ich empfehle dir dringend dich mit Git oder Mercurial auseinander zu setzen.
Die Message ist in diesem Video in den ersten 30 Sekunden dezent versteckt.
Zugegeben es ist zu hart formuliert denn Git versteht man an einem Tag und Programmieren lernt man über einen viel längeren Zeitraum.

Weitere Anzeichen warum man es sich dringend ansehen sollte:
https://www.heise.de/developer/meldung/Microsoft-nutzt-ab-sofort-Git-zur-Windows-Entwicklung-3810273.html 2017 Microsoft zieht komplett zu Git um
https://community.dynamics.com/nav/b/navmarkbrummel/archive/2014/08/15/dynamics-nav-amp-git 2014 Git liefert Vorteile bei Upgradeprojekten
Dynamics Nav 2018 hat mit den Extensions in Visual Studio Code direkt eine Git Integration in der IDE
Git hilft dir aktiv bei der Arbeit und spart so Zeit.

Wenn du damit üben willst kannst du unter https://www.visualstudio.com/de/vso/ dich anmelden. (Die Repositorys sind dort kostenlos und privat)
Es können bis 5 Leute gratis arbeiten und du bekommst eine Visual Studio Community Edition dazu, die kann man auch immer mal gebrauchen.

Alternativ noch https://bitbucket.org mit ähnlichen Konditionen. Vorteil hier ist das du https://github.com/gunnargestsson/AdvaniaGIT mit dem Sourcetree Client benutzen kannst.
(wer will schon immer geänderte Objekte exportieren und importieren wenn es eine Automatik gibt)

Re: Prüfen von Importdaten

25. Mai 2018 13:15

In Tabelle 'NAV Stuff Setup' schreibe ich in die Tabelle vom Feld 'Log File Path' z.B. den Pfad rein wo ich das LogFile haben möchte, z.B. 'C:\Users\christian\Documents'
Hab ich das richtig verstanden?
Mein Verzeichnis ist leer geblieben. Es wurde kein LogFile erstellt. Ich mach noch irgendwas falsch.

Re: Prüfen von Importdaten

25. Mai 2018 14:40

Wenn die Setup richtig ist musst du jetzt z.b. im XML Port prüfungen hinterlegen und das Logging ansprechen.

If Condition then
Codeunit.WriteLogFile(LogMessage);

Oder
If not XML.Run then
Codeunit.WriteLogFile(Getlasterror);

Erst dann wird die Logfile Initialisiert, geschrieben und in ihr eine Zeile erstellt.

Re: Prüfen von Importdaten

25. Mai 2018 14:53

Wenn die Setup richtig ist musst du jetzt z.b. im XML Port prüfungen hinterlegen und das Logging ansprechen.
If Condition then
Codeunit.WriteLogFile(LogMessage);

Ja das habe ich gemacht.
Code:
IF FORMAT(Rechnungseingangsbuchkopf.Belegdatum) = '' THEN
             NavStuff.WriteLogFile(STRSUBSTNO(Errormessage001,Rechnungseingangsbuchkopf."Nr."));

Ich habe in der import-CSV das Belegdatum leer gelassen.
mein Import bricht aber immer noch ab.

Ich hab das Verzeichnis auf den Mittelschicht-Server erstellt.

Gruß, Christian
Zuletzt geändert von navCH am 26. Mai 2018 15:36, insgesamt 2-mal geändert.

Re: Prüfen von Importdaten

25. Mai 2018 15:24

Check mal ob er den Dateinamen richtig zusammenbaut und den Pfad findet.

Re: Prüfen von Importdaten

25. Mai 2018 16:36

Check mal ob er den Dateinamen richtig zusammenbaut und den Pfad findet.

Im Moment kann ich den Fehler beim Zusammenbau vom Dateinamen nicht finden.
Zuletzt geändert von navCH am 26. Mai 2018 15:33, insgesamt 2-mal geändert.

Re: Prüfen von Importdaten

25. Mai 2018 16:38

Fragen wir mal anders, wann kommt dieser Fehler ?

Re: Prüfen von Importdaten

25. Mai 2018 17:26

Fragen wir mal anders, wann kommt dieser Fehler ?

Nachdem ich die Importdatei ausgewählt habe und auf Open geklickt habe. Dann geht gleich die Meldung auf.

Ich debugge gerade den Code durch.

Re: Prüfen von Importdaten

25. Mai 2018 17:55

FehlerDebugger.PNG
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.

Re: Prüfen von Importdaten

28. Mai 2018 08:41

Dein Screenshot nützt garnix - wir sehen nicht, was in den einzelnen Variablen drin steht!
Bitte prüfe einmal, ob der Pfad, den du in der Setup-Table angegeben hast, auch für den NST erreichbar ist - ein lokaler Pfad, sofern der NST nicht auf der gleichen Maschine läuft, wird (meistens) nicht funktionieren.

Re: Prüfen von Importdaten

28. Mai 2018 08:50

Ist dein Zielpfad ein gemapptes Netzlaufwerk?
Wenn du auf ein gemapptes Netzlaufwerk zugreifen willst, empfiehlt es sich statt dem Netzlaufwerksbuchstaben den direkten UNC-Pfad zu nutzen.

Re: Prüfen von Importdaten

28. Mai 2018 10:09

Ich habe am Wochenende mal geprüft, wenn der Pfad nicht da wäre kommt eine Entsprechende Meldung die das auch so sagt.

Ist mir Rätselhaft was diese Meldung an dieser Stelle sagen möchte. Ich vermute die Meldung kommt von einer Stelle danach wenn er aus dieser Funktion raus kommt.

An dieser Stelle wäre dann wirklich interessant mit welchem Wert die Funktion verlassen wird. Und gerne auch immer den Callstack mit posten. ;)

Evtl könnte es auch ein Rechteproblem sein und die Meldung weißt nicht ordentlich darauf hin. Ggf. kann ein Ordner wo du eine Datei erstellen darfst das Problem lösen ? aka %appdata% ?

Re: Prüfen von Importdaten

29. Mai 2018 10:48

Guten Tag zusammen.

Anbei noch die Aufrufliste.
Callstack.PNG

An die Ansicht von den Debugger muss ich mich noch gewöhnen, ich hatte bisher mit NAV 2009 gearbeitet.
Ich bekomme hier keine Werte im Debugger angeboten, ich weiß auch nicht wie ich die Ansicht wechseln kann?
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.

Re: Prüfen von Importdaten

29. Mai 2018 12:41

Hier mal wie es funktionieren sollte.
Step 3 Beschreibt was du im Scope dort zum Zeitpunkt in der Funktion nach dem GET sehen kannst.

Step1.PNG


Step2.PNG


Step3.PNG


Step4.PNG


Step5.PNG
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.
Zuletzt geändert von Nody3000 am 29. Mai 2018 12:43, insgesamt 1-mal geändert.

Re: Prüfen von Importdaten

29. Mai 2018 12:42

Step6.PNG
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.

Re: Prüfen von Importdaten

29. Mai 2018 15:43

Vielen Dank Nody3000 für die Ausführung, das kann ich gar nicht wieder gut machen ! :!:

Ich hatte jetzt eben nochmal das Verzeichnis auf 'C:\Temp' geändert und erneut Debugger inkl. Values verwendet.
Fragt nicht wieso, aber plötzlich ging es!
:-D :-D

Datei ist vorhanden unter C:\Temp\29.05.18.txt

Gruß, Christian

Re: Prüfen von Importdaten

29. Mai 2018 15:53

Naja, mich würde ja schon interessieren warum es nicht ging. Ich habe immer noch keine Idee so richtig :lol:

Re: Prüfen von Importdaten

29. Mai 2018 17:03

Naja, mich würde ja schon interessieren warum es nicht ging. Ich habe immer noch keine Idee so richtig :lol:

Ich weiß woran es liegt, dass der Fehler 'Der Dateiname wurde nicht festgelegt' ausgegeben wurde und das Logfile nicht erstellt wurde.
Grund:
In der Tabelle 'NAV Stuff Setup' hatte ich im Feld Code eine 1 eingetragen und im Feld 'Log File Path' den Pfad eingetragen. Hierbei kam aber der Fehler!

Änderung:
In der Tabelle 'NAV Stuff Setup' habe ich im Feld Code nichts eingetragen und leer gelassen. Im Feld 'Log File Path' habe ich den Pfad eingetragen.
Hierbei kam der Fehler nicht, dass LogFile wurde erstellt.

Re: Prüfen von Importdaten

30. Mai 2018 08:19

sorry, aber wenn du eine Setup-Table erhälst, dann solltest du die auch nutzen und Daten eintragen.
Ich finde es gut, wie du versuchst, mit Hilfe des Forums Lösungen zu deinen Herausforderungen zu finden, trotzdem solltet ihr euch überlegen, wie ihr weiter
vorgeht, sonst habt ihr am Ende nur eine zusammengefrickelte Lösung, die in keinster Weise mehr updatefähig ist.

Re: Prüfen von Importdaten

30. Mai 2018 08:26

sweikelt hat geschrieben:sorry, aber wenn du eine Setup-Table erhälst, dann solltest du die auch nutzen und Daten eintragen...

In das Primärschlüsselfeld einer Setup Table schreibt man normalerweise nichts, weil dann Setup.GET nicht mehr funktioniert.

Grundsätzlich hast du Recht.
@navCH pass auf, dass dir die einfache Updatefähigkeit nicht verloren geht.