Prüfungen starten oder erweitern
mandatory führt seine Prüfmechanismen an vordefinierten Stellen durch, z.B wenn Sie einen Datensatz aus den überwachten Stammdaten verändern, oder einen Verkaufsbeleg freigeben. Sie können eine Prüfung aber auch individuell starten um eigene Prozesse abzusichern.
Prüfung auslösen
Um eine Prüfung für eine individual-Tabelle oder neuen Prozess auszulösen, nutzen Sie einen Code wie hier exemplarisch beschrieben.
trigger OnValidate()
var
MandatoryMgt: Codeunit "MND_mandatory mgt";
IsOk: Boolean;
begin
IsOk := MandatoryMgt.CheckMandatoryFields(Rec,'log','');
end;
Der Datensatz wird an mandatory zur Prüfung übergeben und bei Erfolg ein true zurückgegeben
Parameter:
- Rec: Der aktuelle Datensatz
- Action: Hier sind 3 Optionen möglich
- 'error': Bei fehlgeschlagener Prüfung wird der Prozess mit einer Fehlermeldung abgebrochen
- 'log': Bei fehlgeschlagener Prüfung wird das Fehlerprotokoll angezeigt.
- '': Es wird kein Fehlerhandling durchgeführt und die Transaktion läuft weiter.
- ProcessCode: Der optionale Prozesscode kann genutzt werden um die Prüfungen auf bestimmte Felder einzuschränken.
Caution
Achten Sie darauf, das bei einer Prüfung ohne Fehlerhandling die Transaktion weiter läuft. Müssen Sie einen Fehler auswerfen so ist dieses in der eigenen Programmierung durchzuführen.
Individuelle Prüfung ergänzen.
Mit mandatory können viele Prüfungen mittels der Einrichtung verwirklicht werden, sollte diese Einrichtungsmöglichkeit nicht ausreichen und Sie wollen Prüfmechanismus ergänzen, die über die Möglichkeiten der Einrichtung hinausgehen nutzen Sie einen Code wie hier exemplarisch beschrieben.
local procedure AddCustomCheck(var ErrorMessage: Record "Error Message"; RecRef: RecordRef; ProcessCode: Text)
begin
case RecRef.Number of
Database::Job:
ErrorMessage.LogSimpleMessage(ErrorMessage."Message Type"::Error, 'only a Test');
end;
end;
Parameter:
- ErrorMessage: Dieser temporäre Datensatz wird genutzt um die Fehlermeldungen zu sammeln (Standard Funktionalität)
- RecRef: Der aktuelle Datensatz.
- ProcessCode: Falls eine Transaktion von einem bestimmten Prozess ausgelöst wurde, ist der Prozesscode entsprechend enthalten.
Individuelle Prüflogik erzwingen
mandatory eine Prüfung startet immer ausgehend von Hauptdatensatz. Ist dort eine individuelle Prüfung ergänzt worden, wird diese automatisch durchlaufen und durchgeführt. Für Unter-Tabellen erfolgt eine Prüfung aus Gründen der Performance nur, wenn es Einrichtungen im mandatory für diese Tabellen gibt. Eine individuelle Prüf-Logik würde in diesem Fall nicht erfolgen. Dies können Sie wie folgt ändern:
[EventSubscriber(ObjectType::Table, Database::"MND_Mandatory Field Setup", 'SetHasCustomChecks', '', true, false)]
local procedure SetHasCustomChecks(TableID: Integer; var HasCustomChecks: Boolean)
begin
case TableID of
Database::"Sales Line",
Database::"Purchase Line":
HasCustomChecks := true;
end;
end;
Parameter:
- TableID: Die Tabellen-Nr. für die mandatory wissen will, ob eine individuelle Prüfung ergänzt worden ist.
- HasCustomChecks: Wird auf true gesetzt, wenn eine individuelle Prüfung existiert.