Anleitung

Die Bemerkungen erreicht man immer über den dazugehörigen Button und über den Menüeintrag „Bemerkungen” (siehe nachfolgende Abbildung). Der Button rechts neben der Stammdatennummer lässt zudem noch direkt erkennen, ob Bemerkungen zu dem gerade gewählten Datensatz existieren (Icon für Bemerkungen vorhanden) oder nicht (Icon für Bemerkungen nicht vorhanden).

Aufruf Bemerkungen

Kommen wir nun zum praktischen Teil des Tutorials.

Tabelle „Ship-to Address Comment Line”

Wie oben schon erwähnt, geht es darum eine Bemerkungsfunktion für die Lieferadressen der Debitoren zu erstellen. Da diese Bemerkungen irgendwo gespeichert werden müssen, musst du eine neue Tabelle anlegen. Gehe hierzu in den ObjectDesigner und erstelle eine neue Tabelle mit der Bezeichnung „Ship-to Address Comment Line” und den folgenden fünf Feldern:

Name Typ Länge
Customer No. Code 20
Ship-to Address Code 20
Line No. Integer  
Date Date  
Code Code 10
Comment Text 80

Das Feld „Customer No.” bekommt ein TableRelation zu der Tabelle „Customer” (ID: 18).

Das Feld „Ship-to Address Code” bekommt auch eine TableRelation, nur ist diese etwas umfangreicher. Es muss nämlich ein TableFilter angegeben werden (siehe nachfolgende Abbildung), damit die Relation auch richtig funktioniert.

Table Designer - Table Releation für Feld Ship-to Address Code

Speichere die neue Tabelle unter einer freien ID ab und gehe anschließend wieder in die Tabelle in dem Design-Modus rein. Erst jetzt können wir über „Ansicht” - „Keys” den Tabellenschlüssel anlegen. Da wir pro Debitor und pro Lieferadresse beliebig viele Bemerkungszeilen anlegen möchten, lautet der Tabellenschlüssel wie folgt:

Customer No.,Ship-to Address Code,Line No.

Dieser Tabellenschlüssel setzt sich aus drei Feldern zusammen und stellt somit sicher, dass jede Bemerkungszeile eindeutig ist.

Jetzt musst du über „Ansicht” - „C/AL Globals” eine neue Funktion namens „SetUpNewLine” anlegen und über „Ansicht” - „C/AL Code” ihr die folgenden vier Programmzeilen hinterlegen:

CommentLine.SETRANGE("Customer No.","Customer No.");
CommentLine.SETRANGE("Ship-to Address Code", "Ship-to Address Code");
IF NOT CommentLine.FIND('-') THEN
	Date := WORKDATE;

Die Variable „CommentLine”, die in den Programmzeilen benutzt wird, musst du über „Ansicht” - „Locals” anlegen. Sie ist vom Typ „Record” und Subtype „Ship-to Address Comment Line”.

Die Programmzeilen prüfen, ob zu der gerade gewählten Lieferadresse Bemerkungszeilen existieren. Ist dies nicht der Fall, wird das Feld „Date” mit dem aktuellen Arbeitsdatum gefüllt.

Tabelle „Ship-to Address”

Wir kommen nun zu der bereits bestehenden Tabelle „Ship-to Address”. Dort musst du ein neues Boolean-Feld mit der Bezeichnung „Comment” anlegen.

Table Designer - Table 222 Ship to Address

Die Eigenschaften „Editable” des neuen Feldes muss auf „Nein” und „FieldClass” auf „FlowField” gesetzt werden. Gehe anschließend in die Eigenschaft „CalcFormula” rein (indem du den Button mit den „...” drückst) und definiere nach der nachfolgenden Abbildung den FlowField.

Calculation Formula

Du hast somit ein neues Feld angelegt, welches der Benutzer nicht editieren kann. Dadurch, dass es sich hier um ein FlowField handelt, hat das Feld automatisch den Wert „Ja” oder „Nein”, je nach dem ob Bemerkungszeilen zu der Lieferadresse existieren oder nicht. Dieses Feld benötigen wir später auf dem Formular, welches die Lieferadressen darstellt.

Formular „Ship-to Address Comment Sheet”

Jetzt musst du das erste von insgesamt zwei neuen Formularen erstellen. Also ab in den ObjectDesigner und das erste neue Formular erstellen.

Gib dem Formular eine freie ID und den Namen „Ship-to Address Comment Sheet”. Das Formular braucht nur die drei Felder „Date”, „Comment” und „Code” darstellen. Das „Code”-Feld bekommt die Eigenschaft „Visible=FALSE” zugeweisen. Die Form-Eigenschaften sind, wie die folgenden Abbildung zeigt, anzugeben.

Formular Designer für die neuen Bemerkungen

Die Eigenschaft „MultipleNewLines” gibt an, dass der Benutzer bei der Benutzung des Formulars mehrere Zeilen auf einmal erzeugen kann. „SourceTable” gibt an, welche Tabelle das Formular darstellen soll. In unserem Fall ist das natürlich die eben neu angelegte Tabelle. Mit „AutoSplitKey” gleich „Ja” erreichen wir, dass Navision das erste Integer-Feld im Tabellenschlüssel (Line No.) automatisch hoch zählt.

Über „Ansicht” - „C/AL Code” gehen wir in den Form-Trigger „OnNewRecord” und hinterlegen dort die folgende Programmzeile:

SetUpNewLine;

Somit wird beim Anlegen einer neuen Zeile die Funktion „SetUpNewLine” aufgerufen, die wir in der Tabelle hinterlegt hatten.

Als nächstes erstelle auf dem Formular einen neuen MenuButton mit der Caption „Bemerkung”. Als MenuItem bekommt dieser Button den Punkt „Übersicht”.

Formular Designer MenuButton

Die Eigenschaften „HorzGlue” und „VertGlue” des neuen MenuButtons musst du noch auf „Right” bzw. „Bottom” setzen. Somit klebt der MenuButton beim Verändern der Formulargröße am rechten unteren Rand. Speichere das neue Formular ab.

Formular „Ship-to Address Comment List”

Das zweite neue Formular bekommt den Namen „Ship-to Address Comment List” und stellt die vier Felder „Customer No.”, „Ship-to Address Code”, „Date” und „Comment” dar.

Form

Es muss noch die Formulareigenschaft „Editable” auf „Nein” gesetzt und anschließend das neue Formular unter einer freien ID gespeichert werden.

Gehe jetzt noch einmal in die neu angelegte Tabelle „Ship-to Address Comment Line” und dort in die Tabelleneigenschaft „LookupFormID”. Hier musst du die ID des zuletzt erstellten Formulars eintragen. Beende den Vorgang indem du die Tabelle speicherst und schließt.

Formular „Ship-to Address”

Nachdem nun die größten Dinge erledigt sind, musst du jetzt auf dem Formular der Lieferadressen ein paar Änderungen vornehmen. Öffne hierzu das Formular „Ship-to Address” (ID: 300). Platziere neben dem Code-Feld eine Picture-Box und setze die Eigenschaften „Width” und „Height” auf „440”, „Focusable” und „Border” auf „Nein”, „BitmapList” auf „7,6” und die Eigenschaft „SourceExpr” auf „Comment”.

PixtureBox für die den Aufruf die Bemerkungen

Nun lege über die PictureBox einen CommandButton und setzen die folgenden Eigenschaften:

Eigenschaft Wert
Width 440
Height 440
ShowCaption Nein
BackTransparent Ja
PushAction RunObject
RunObject Form Ship-to Address Comment Sheet
RunFormLink Customer No.=FIELD(Customer No.),Ship-to Address Code=FIELD(Code)
RunFormLinkType OnUpdate

Durch das Setzen der „BackTransparent” auf „Nein” wird der CommandButton transparent und die PictureBox scheint durch und lässt somit erkennen, ob Bemerkungen existieren oder nicht.

Wie ganz oben schon beschrieben, gibt es auch immer die Möglichkeit die Bemerkungen über einen Menüpunkt zu erreichen. Erzeuge deshalb auf dem MenuButton „Adresse” einen neuen Menüpunkt mit der Bezeichnung „Bemerkungen”. In dessen Eigenschaften sind „PushAction” auf „RunObject”, „RunObject” auf „Form Ship-to Address Comment Sheet”, „RunFormLink” auf „Customer No.=FIELD(Customer No.),Ship-to Address Code=FIELD(Code)” und „RunFormLinkType” auf „OnUpdate” zu setzen.

Zum Schluss noch das Formular speichern und fertig.