Codeunit vor der Ausführung
Die Codeunit vor der Ausführung bietet einen Einstiegspunkt, über den benutzerdefinierte Business-Central-Logik unmittelbar vor dem Lesen und Serialisieren einer Dataset-Tabelle durch Business Portals ausgeführt werden kann. Dadurch lassen sich Informationen vorbereiten, synchronisieren, prüfen oder protokollieren, bevor das Dataset an das Portal zurückgegeben wird.
Die Codeunit wird für jede Dataset-Tabelle separat konfiguriert. Da der Einstiegspunkt Bestandteil des Ladens eines Datasets ist, kann derselbe Ansatz für Produktlisten, Projekte, Rechnungen und andere Business-Central-Tabellen verwendet werden.
Ergebnis des Beispiels
Das Beispiel schreibt einen Informationseintrag in das vorhandene Business-Portals-Protokoll. Die vom Dataset angezeigten Datensätze werden nicht verändert.
Der Protokolleintrag enthält den Dataset-Code, den Dataset-Tabellencode und -typ, den DPS-Benutzernamen, die Firma und den ausgewählten Parameter. Um den Eintrag in Business Central anzuzeigen, suchen Sie nach Business Portals – Log.
Bei jedem erstmaligen Laden oder Aktualisieren eines Datasets kann ein weiterer Eintrag erstellt werden. Mit der Aktion Clear History auf der Protokollseite können nicht mehr benötigte Einträge entfernt werden.
Info
Das Protokollierungsverhalten dient als einfaches Beispiel. Ersetzen Sie die Prozedur WriteLogEntry durch die für Ihre Implementierung erforderliche Vorbereitungslogik, beispielsweise zum Aktualisieren einer Zwischentabelle oder zum Synchronisieren von Daten.
Codebeispiel
codeunit 5138173 "SIM_DPS Sample Pre Execute CU"
{
// Eine Codeunit vor der Ausführung muss "SIM_DPS Temp Table" verwenden, damit DPS den Ausführungskontext in Rec übergeben kann.
TableNo = "SIM_DPS Temp Table";
trigger OnRun()
var
LocalParamText: Text;
begin
// DPS führt die Codeunit bei der Einrichtungssuche ohne Parameter aus, um die verfügbaren Funktionen abzufragen.
LocalParamText := 'GETFUNCTIONS';
// Während der Dataset-Ausführung enthält Rec.Param die in "Pre Execute Codeunit Param" ausgewählte Funktion.
if (Rec.Param <> '') then
LocalParamText := Rec.Param;
// Leitet die Einrichtungs- oder Ausführungsanforderung an die entsprechende Logik weiter.
case LocalParamText of
'Write Log Entry':
WriteLogEntry(Rec);
'GETFUNCTIONS':
// "Function List" wird in der Suche angezeigt. Trennen Sie mehrere Funktionsnamen durch Kommas.
Rec."Function List" := 'Write Log Entry';
end;
end;
// Schreibt den von DPS bereitgestellten Kontext in das vorhandene Business-Portals-Protokoll.
local procedure WriteLogEntry(ParamRecordSIMDPSTempTable: Record "SIM_DPS Temp Table")
var
LocalCodeunitSIMDPSLogMgt: Codeunit "SIM_DPS Log Mgt";
LocalDescriptionLabelMsg: Label 'The pre-execute sample codeunit was executed. Dataset Code: %1; Dataset Table Code: %2; Dataset Table Type: %3; DPS Username: %4; Company: %5; Parameter: %6', Comment = '%1 = Dataset Code, %2 = Dataset Table Code, %3 = Dataset Table Type, %4 = DPS Username, %5 = Company, %6 = Pre Execute Codeunit Parameter';
LocalSourceLabelMsg: Label 'Sample Pre Execute Codeunit';
begin
// Fügt einen Informationseintrag hinzu, den Benutzer auf der Seite "Business Portals - Log" einsehen können.
LocalCodeunitSIMDPSLogMgt.AddInformationInTheLog(
// Ersetzt die Platzhalter der Beschriftung durch die vom Serialisierungsprozess empfangenen Werte.
StrSubstNo(
LocalDescriptionLabelMsg,
ParamRecordSIMDPSTempTable."Dataset Code",
ParamRecordSIMDPSTempTable."Dataset Table Code",
ParamRecordSIMDPSTempTable."Dataset Table Type",
ParamRecordSIMDPSTempTable.Username,
ParamRecordSIMDPSTempTable.Company,
ParamRecordSIMDPSTempTable.Param),
LocalSourceLabelMsg);
end;
}