Codeunit de pré-exécution
La codeunit de pré-exécution fournit un point d’accrochage permettant d’exécuter une logique Business Central personnalisée juste avant que Business Portals lise et sérialise une table de dataset. Il est ainsi possible de préparer, synchroniser, valider ou journaliser des informations avant que le dataset soit renvoyé au portail.
La codeunit est configurée séparément pour chaque table de dataset. Comme ce point d’accrochage fait partie du chargement du dataset, la même approche peut être utilisée pour des listes de produits, des projets, des factures et d’autres tables Business Central.
Résultat de l’exemple
L’exemple écrit une entrée d’information dans le journal Business Portals existant. Il ne modifie pas les enregistrements affichés par le dataset.
L’entrée du journal comprend le code du dataset, le code et le type de la table de dataset, le nom d’utilisateur DPS, la société et le paramètre sélectionné. Pour la consulter dans Business Central, recherchez Business Portals – Log.
Chaque chargement initial ou actualisation du dataset peut créer une nouvelle entrée. L’action Clear History de la page du journal permet de supprimer les entrées qui ne sont plus nécessaires.
Info
Le comportement de journalisation est destiné à servir d’exemple simple. Remplacez la procédure WriteLogEntry par la logique de préparation requise par votre implémentation, par exemple l’actualisation d’une table intermédiaire ou la synchronisation de données.
Exemple de code
codeunit 5138173 "SIM_DPS Sample Pre Execute CU"
{
// Une codeunit de pré-exécution doit utiliser "SIM_DPS Temp Table" afin que DPS puisse transmettre le contexte d’exécution dans Rec.
TableNo = "SIM_DPS Temp Table";
trigger OnRun()
var
LocalParamText: Text;
begin
// DPS exécute la codeunit sans paramètre depuis la recherche de configuration afin de demander ses fonctions disponibles.
LocalParamText := 'GETFUNCTIONS';
// Pendant l’exécution du dataset, Rec.Param contient la fonction sélectionnée dans "Pre Execute Codeunit Param".
if (Rec.Param <> '') then
LocalParamText := Rec.Param;
// Achemine la demande de configuration ou d’exécution vers la logique correspondante.
case LocalParamText of
'Write Log Entry':
WriteLogEntry(Rec);
'GETFUNCTIONS':
// "Function List" est affiché dans la recherche. Séparez plusieurs noms de fonction par des virgules.
Rec."Function List" := 'Write Log Entry';
end;
end;
// Écrit le contexte fourni par DPS dans le journal Business Portals existant.
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
// Ajoute une entrée d’information que les utilisateurs peuvent consulter sur la page "Business Portals - Log".
LocalCodeunitSIMDPSLogMgt.AddInformationInTheLog(
// Remplace les espaces réservés de l’étiquette par les valeurs reçues du processus de sérialisation.
StrSubstNo(
LocalDescriptionLabelMsg,
ParamRecordSIMDPSTempTable."Dataset Code",
ParamRecordSIMDPSTempTable."Dataset Table Code",
ParamRecordSIMDPSTempTable."Dataset Table Type",
ParamRecordSIMDPSTempTable.Username,
ParamRecordSIMDPSTempTable.Company,
ParamRecordSIMDPSTempTable.Param),
LocalSourceLabelMsg);
end;
}