Anleitung
In diesem Tutorial erstellen wir eine „Seminarkarte”. Da wir davon ausgehen, dass wir Seminare für unsere Debitoren anbieten, gehört die Angabe, welche Nummernserie benutzt werden soll, selbstverständlich in die Einrichtung der Debitoren. Jedes Modul besitzt eine „Einrichtung”, wo unteranderem eine Registerkarte „Nummerierung” zufinden ist. Dort werden Nummerkreise verschiedener Stammdaten angegeben.
Gehe hierzu in die Tabelle „Debitoren & Verkauf Einr.” (ID: 311) und erstelle ein neues Feld mit der Bezeichnung „Seminarnummern” und einer TableRelation auf die Tabelle „No. Series” (ID: 308). Anschließend noch schnell das neue Feld in das Formular „Debitoren & Verkauf Einr.” (ID: 459) ziehen. Jetzt kannst du bequem über die Debitoren & Verkaufs-Einrichtung die Nummernserie angeben.
Als nächstes brauchst du eine neue Tabelle mit der Bezeichnung „Seminar”. Welche Felder du in dieser Tabelle erstellt, ist ersteinmal unintressant. Jedoch werden zwei Felder für dieses Tutorial benötigt: Das Feld „Nr.” und das Feld „Nummernserie”. Beide Felder sind vom Typ „Code” und sollten eine Länge von 10 besitzen. Das Feld „Nummernserie” bekommt zusätzlich eine TableRelation auf die Tabelle „No. Series” (ID: 308). Außerdem sollte die Eigenschaft „Editable” auf „False” gesetzt werden.
Über „Ansicht” - „C/AL Globals” musst du nun zwei Einstellungen vornehmen:
1. Auf der Registerkarte „Variables” sind die zwei Variblen „SalesSetup” (DataType = „Record”, Subtype = „Sales & Receivables Setup”) und „NoSeriesMgt” (DataType = „Codeunit”, Subtype = „NoSeriesManagement”) anzulegen.
2. Erstelle über die Registerkarte „Functions” eine neue Funktion mit der Bezeichnung „AssistEdit”. Über den Button „Locals” gelangst du in die lokalen Eigenschaften der neuen Funktion und musst dort den neuen Parameter „AltSeminar” vom DataType „Record” und Subtype „Seminar” angeben und die Variable „Seminar” vom DataType „Record” und Subtype „Seminar” ist auch noch anzugeben. Der ReturnType ist auf „Boolean” zustellen.
Anschließend über „Ansicht” - „C/AL Code” den folgenden Programmzeilen in die neue Funktion „AssistEdit” kopieren:
WITH Seminar DO BEGIN Seminar := Rec; SalesSetup.GET; SalesSetup.TESTFIELD(Seminarnummern); IF NoSeriesMgt.SelectSeries(SalesSetup.Seminarnummern,AltSeminar."No. Series","No. Series") THEN BEGIN NoSeriesMgt.SetSeries("No."); Rec := Seminar; EXIT(TRUE); END; END;
Diese Funktion wird später über ein Formular aufgerufen. In dem OnInsert()-Trigger musst du die folgendenen Programmzeilen hinzufügen:
IF "No." = '' THEN BEGIN SalesSetup.GET; SalesSetup.TESTFIELD(Seminarnummern); NoSeriesMgt.InitSeries(SalesSetup.Seminarnummern,xRec."No. Series",0D,"No.","No. Series"); END;
Und in den No. - OnValidate()-Trigger:
IF "No." <> xRec."No." THEN BEGIN SalesSetup.GET; NoSeriesMgt.TestManual(SalesSetup.Seminarnummern); "No. Series" := ''; END;
Nachdem du die Tabelle erstellt und vorbereitet hast, brauchst du ein passendes Formular welches die Seminare darstellt. Lege dazu ein neues Formular an. In der Formulareigenschaft „Source-Table” ist die neuangelegte Tabelle „Seminar” anzugeben. Auch hier ist es ersteinmal uninteressant welche Felder du auf das Formular platzierst. Für dieses Tutorial brauchst du ledglich das Feld „Nr.”.
Zunächst gehe über „Anischt” - „C/AL Code” in den „Nr. - OnAssistEdit()”-Trigger. Erstelle dort die folgenden Programmzeilen:
IF AssistEdit(xRec) THEN CurrForm.UPDATE;
Hiermit rufen wir die in der Tabelle angelegten Funktion „AssistEdit” auf und übergeben als Parameter den aktuellen Datensatz vor der Änderung. Bekommen wir TRUE zurückgeliefert, wird in der letzte Zeile das Formular aktualisiert.