11. März 2016 12:46
Hallo NAV Gemeinde,
ich habe die Aufgabe, eine Dataport für die Kreditoren zu schreiben.
Allerdings wird pro Kreditor mehr als eine Zeile benötigt. Die 1. und 2. Zeile enthält allgemeine Informationen.
Die 3. Zeile soll die Personenkontakte zum Kreditor enthalten.
Habe ich soweit auch hinbekommen.
Allerdings kann es ja vorkommen, dass ein Unternehmenskontakt mehr als einen Personenkontakt besitzt.
Und ich weiß nicht, wie ich NAV dazu bringen kann, für jeden gefundenen Personenkontakt eine neue Zeile zu schreiben.
Das Ergebnis für einen einzelnen Kreditor soll dann so aussehen:
B;Name des Kunden;Nr.;Ort
A;Adresse,Adresse2
C;Kontakt1;Name
C;Kontakt2;Name
Kann mir da vielleicht jemand auf die Sprünge helfen?
Eingerückte DataItems sind nach meiner Recherche wohl nicht möglich in NAV 2009.
Danke für Denkanstöße und schon mal ein schönes WE.
Gruß
Marion
11. März 2016 13:53
Hallo Marion,
ich würde diese Anforderung eher mit einem Report als mit einem Dataport umsetzen.
Im OnAfterGetRecord-Trigger des DataItems "Vendor" könntest du die Zeilen A und B für den Kreditor erstellen und anschließend über die Tabelle "Contact Business Relation" (Table 5054) den Unternehmenskontakt zum Kreditor und danach die Personenkontakte zum Unternehmenskontakt ermitteln.
Die Personenkontakte kannst du dann innerhalb des OnAfterGetRecord-Triggers vom Kreditor in einer Repeat-Until-Schleife lesen und pro Personenkontakt die Zeile C erstellen.
Alternativ zu einer Textdatei könntest du dabei auch die Daten mit Hilfe des Excel Buffers als Excel-Tabelle ausgeben.
11. März 2016 14:02
Hallo Jörg,
vielen Dank für deine Hinweise.
Dann werde ich mal beide Wege austesten.
Viele Grüße
Marion
16. März 2016 16:15
Hallo zusammen,
falls sich noch jemand für die Lösung interessiert:
Ich habe einen Report (Processing Only) benutzt und erzeuge damit eine Excel Datei in dem gewünschten Format.
Die "Unter"zeilen zu einem DataItem befülle ich so, wie Jörg es vorgeschlagen hat.
Gruß
Marion
Powered by phpBB © phpBB Group.
phpBB Mobile / SEO by Artodia.