12. September 2012 16:34
Es ist mal wieder so weit, dass ich Daten für den Steuerprüfer exportieren muss, und so wieder bei der CU11000 gelandet bin. Zwar arbeite ich noch unter einer 4er Version, der Code der 11000 scheint mir aber in Nav 9 keine für das Problem relevanten Änderungen erfahren zu haben.
Da mir beim Versuch, die Daten jeweils für ein Jahr zu exportieren (so wünscht es der Prüfer) das Ganze immer um die Ohren fliegt, was wohl an der Menge der Datensätze und der Verwendung von Temp-Tables liegt (glaube ich), habe ich mir einfach einen eigenen Export gebaut. Ist ja (eigentlich) auch nicht weiter schwierig; Alle Daten nach Vorgabe in .csv-Dateien schreiben, und parallel eine .XML-Datei generieren, die quasi als ein Daten-Katalog fungiert - fertig. Und dieser erwähnte XML Daten-Katalog ist von der Firma AUDICON definiert, die ja wohl das IDEA entwickelt haben. Und für die Verwendung durch IDEA wird der ganze Käse ja wohl letztlich exportiert.
Damit zu dem Punkt, der mich irritiert. Für den XML Daten-Katalog ist auch ein Node für den "ForeignKey" definiert. Diese Sektion innerhalb der XML-Datei soll einfach eine Relation zu einer anderen Tabelle herstellen. Hat man beispielsweise die Konto-Nummer in den Sachposten (17) im Feld "Sachkontonr.", so soll eine Verbindung zum Feld "Nr." in der Tabelle Sachkonto (15) hergestellt werden. So zumindest verstehe ich das, und das klingt ja irgendwie auch sinnvoll ...
Während die Audicon-Dokumentation (Download unter
http://www.audicon.net/downloads) auf den Seiten 39 und 40 ausdrücklich beschreibt, dass für den XML-Tag "References" die Ziel-Tabelle der Relation anzugeben ist - in unserem beispiel also die Tabelle Sachkonto - schreibt Navision in diesen XML-TAG grundsätzlich den Namen des Primary Key Feldes dieser Tabelle, also "Nr."
Hier der Code aus einer über die CU11000 erzeugten Index.xml-Datei:
- Code:
<ForeignKey>
<Name>Sachkontonr.</Name>
<References>Nr.</References>
</ForeignKey>
Dies ist auch nicht weiter verwunderlich, denn in der CU11000 findet sich folgender Code:
- Code:
IF AddElement(XMLCurrNode,'References',GDPdUTableRelField."From Field Name",'',XMLNewChild) > 0 THEN
Es wird also AUSDRÜCKLICH der Inhalt von "From Field Name" aus den GDPdU Tabellen-Relationen in das XML-TAG "References" geschrieben! Glaubt man jedoch Audicon - und das sollte man wohl - dann müsste hier wohl der Wert des Feldes "From Table Name" in den XML-TAG geschrieben werden ...
Was mich nun so struwelig macht sind 2 Dinge:
1. Wie kann solch ein offensichtlicher Fehler, durch den ja gar keine vernünftigen Relationen herstellbar sind (woher soll IDEA die Tabelle wissen?) seit Jahren im Nav Source enthalten sein. Werden diese Relationen etwa gar nicht verwendet?
2. Für die XML-Section "ForeignKey" muss in dem XML-TAG "Name" auch ein Feldname definiert werden. Dies kann eigentlich nur der Name des Feldes sein, von dem aus eine Relation in die referenzierte Tabelle gebildet werden soll. Anders könnte ein System wie IDEA gar nicht wissen, von welchem Feld aus die Relation zu bilden ist. In der Ziel-Tabelle hingegen sind die primären Key Felder ja definiert, so dass die Relation dort hergestellt werden kann. Leider sind die Feld-Namen in der Audicon Doku in den beteiligten Tabellen immer identisch, so dass dies dort nicht eindeutig draus zu erkennen ist ... aber es kann eigentlich nur so sein ...
Für unser Beispiel mit Sachposten und Sachkonto bedeutet das, dass der "ForeignKey" in jedem Fall so aussehen muss:
- Code:
<ForeignKey>
<Name>Sachkontonr.</Name>
<References>Sachkonto</References>
</ForeignKey>
Also sozusagen "Quell-Feld" und "Ziel-Tabelle". Der Feldname "Nr." hat hier überhaupt nichts zu suchen.
Habe meine index.xml Dateien zum geforderten Daten-Export jetzt mal in dieser Form erzeugt, und bin gespannt, was der Prüfer sagt.
Pidi