28. Mai 2012 20:48
Die Nummer wird auf Tabellenebene erzeugt im OnInsert-Trigger
- Code:
OnInsert()
IF "No." = '' THEN BEGIN
TestNoSeries;
NoSeriesMgt.InitSeries(GetNoSeriesCode,xRec."No. Series","Posting Date","No.","No. Series");
END;
Der Code gilt dann, wenn der Anwender keine eigene Nummer vorgibt, was praktisch immer der Fall ist.
Dein Feld kann danach im OnInsert-Trigger durch einfache Zuweisung versorgt werden.
Analog erweitern muss man auch den Feldtrigger vom Feld "No.", weil der Anwender ggf. eine erzeugte Nummer ändern kann, wenn die Nummernserie das zulässt.
- Code:
No. - OnValidate()
IF "No." <> xRec."No." THEN BEGIN
PurchSetup.GET;
NoSeriesMgt.TestManual(GetNoSeriesCode);
"No. Series" := '';
END;
Auf Form/Pageebene haben solche Erweiterungen für allgemeine Verwendung nichts verloren. Wenn im Programmcode eines anderen Objekts die Tabelle Purchase Header mit INSERT(TRUE) und VALIDATE("No.") angesprochen wird, wird das Individualfeld nur bei Codeerweiterungen in der Tabelle mit versorgt. Die Ausnahme: Wenn der Feldwert nur beim Aufruf einer bestimmten individuellen Form/Page mit kopiert werden soll, wird Code auf Form-/Pageebene erforderlich.
Wenn es bei dir um Pages geht, wäre [RTC] statt [CC] im Betreff richtig, auch wenn in diesem Fall kein Unterschied in der Arbeitsweise besteht.