13. April 2010 11:30
Hallo,
ich bin NAV-Entwickler-Neuling (komme eigentlich aus der GP / AX-Schiene) und hoffe auf Verständnis, wenn die eine oder andere Frage von mir ein wenig nach "dummi" klingt, aber ich über noch
...
Vielleicht kann mir ja jemand bei folgendem Problem helfen:
Im Form 5159 (Verkaufsauftragsarchiv) gibt es einen Button "Wiederherstellen", der wohl dazu dient einen Auftrag aus dem Archiv wieder "zurück zu holen".
Das Problem liegt darin, dass grundsätzlich IMMER beim Klick auf diesen Button die Meldung:
"Der Verkaufskopf existiert nicht. Identifizierende Felder und Wert......"
Ich habe das dann mal analysiert:
Der OnPush-Trigger des Buttons "Wiederherstellen" enthält nur die Code-Zeile:
"ArchiveManagement.RestoreSalesDocument(Rec);"
Es wird also die Funktion "RestoreSalesDocument" aus der CU 5063 aufgerufen und dorthin der aktuelle Datensatz übergeben.
Die Funktion "RestoreSalesDocument" der CodeUnit beginnt so:
SalesHeader.GET(SalesHeaderArchive."Document Type",SalesHeaderArchive."No.");
SalesHeader.TESTFIELD(Status, SalesHeader.Status::Open);
IF SalesHeader."Document Type" = SalesHeader."Document Type"::Order THEN BEGIN
SalesShptHeader.RESET;
SalesShptHeader.SETCURRENTKEY("Order No.");
SalesShptHeader.SETRANGE("Order No.", SalesHeader."No.");
.
.
.
.
Durch debuggen fand ich heraus, dass der Fehler bereits in der ersten Zeile entsteht, also wenn versucht wird, das Dokument in der SalesHeader zu finden.
Nun habe ich als erstes einige Verständnisprobleme (kenne die Prozesse in der Applikation noch nicht so gut):
1. Welchen Sinn macht es nach einem Dokument in der SalesHeader zu suchen, das bereits im Archiv ist?
2. Was genau soll beim Wiederherstellen passieren? Wird ein Dokument aus dem Archiv zurückkopiert oder zurückgeschoben?
3. Welche Systematiken werden berücksichtigt, wenn ein Dokument "reanimiert" wird? (Nummernvergabe, Bezüge zu anderen Dokumenten, FiBu etc.)
Weiterhin habe ich durch debuggen herausgefunden, dass die "Rec"-Variable in der Funktion mit leeren Feldern ankommt. Also dachte ich, dass der Datensatz in der SalesHeader deshalb nicht gefunden werden kann.
Ich habe dann den Aufruf der Funktion im OnPush-Trigger wie folgt modifiziert:
frmSalesHeaderArchive.GETRECORD(recSalesHeaderArchive); //Um sicherzustellen, dass der Datensatz, der gerade im Form angezeigt wird, auch bei der Funktion ankommt
ArchiveManagement.RestoreSalesDocument(Rec);
Leider war das erfolglos - der Datensatz in der SalesHeader wird nach wie vor nicht gefunden und es erfolgt keine Wiederherstellung.
Kann mir jemand vielleicht kurz erklären, was bei der Wiederherstellung passiert? / passieren soll / muss und ob es richtig ist, dass die Funktion versucht den Datensatz in der SalesHeader zu finden, denn immerhin ist das der OriginalCode und der hat ja irgendeinen Sinn
Vielen Dank und Grüsse
Yorgo