Codeunit d'affectation dynamique d'exemple
La codeunit 5138174 "SIM_DPS Sample Dyn. Mapping CU" montre comment une logique AL personnalisée peut fournir une valeur à une affectation de données Simova CORE utilisée par Business Portals.
Elle utilise SIM_CORE Temp Table comme table source. Le moteur transmet le contexte via cet enregistrement temporaire, exécute la fonction sélectionnée et utilise Dyn Mapping Return Value.
Quand utiliser une codeunit d'affectation
Une ligne normale obtient une valeur depuis un champ, une constante, un filtre ou une fonction prédéfinie. Utilisez CODEUNIT lorsque la valeur nécessite une logique AL pour combiner des enregistrements, effectuer des calculs ou résoudre une valeur impossible à exprimer avec les lignes standard.
Voir Création d'affectations de données.
Découverte et distribution
Lors du lookup du paramètre, Rec.Param est vide. OnRun utilise GETFUNCTIONS et renvoie Execute dans Rec."Function List".
Pendant l'exécution, CORE copie Execute Codeunit Param dans Rec.Param. L'exemple distribue Execute à la procédure publique Execute. Ajoutez toute fonction supplémentaire à Function List et à case.
Contexte d'exécution
| Champ | Objectif |
|---|---|
RecID |
Identifie l'enregistrement source. |
Company |
Identifie la société Business Central. |
Param |
Contient le nom de fonction, tel que Execute. |
Function List |
Renvoie les fonctions proposées lors de la configuration. |
Dyn Mapping Return Value |
Renvoie le résultat sous forme de texte. |
Le champ de retour est Text[250]. Convertissez les autres types dans une représentation texte adaptée.
Comportement de l'exemple
L'exemple renvoie THIS RETURN WILL BE SHOWN ON PAGE, ce qui confirme uniquement l'appel et le chemin de retour.
LocalRecordId n'est jamais affecté avant LocalRecordRef.Get(LocalRecordId) ; l'enregistrement du contexte n'est donc pas chargé. Une implémentation réelle doit utiliser ParamRecordSIMCORETempTable.RecID, éventuellement ParamRecordSIMCORETempTable.Company, vérifier la table et calculer la valeur.
Configuration
- Ouvrez CORE Data Mapping et créez ou ouvrez l'affectation utilisée par Business Portals.
- Ajoutez une ligne et définissez Type sur
CODEUNIT. - Définissez Execute Codeunit sur
5138174ou sur la copie personnalisée. - Ouvrez Execute Codeunit Param et sélectionnez
Execute. - Affectez le code au champ, field mapping, espace réservé ou autre configuration concernée.
- Testez des enregistrements et sociétés représentatifs.
La codeunit doit appartenir aux jeux d'autorisations de l'utilisateur ou du compte de service. L'exemple standard est déjà inclus dans les autorisations Business Portals.
Considérations d'implémentation
- Conservez
TableNo = "SIM_CORE Temp Table". - CORE transmet le contexte d'affectation via
Rec. - Lisez l'ID dans
Rec.RecID, et non dans uneRecordIdlocale non initialisée. - Respectez
Rec.Companyet utilisezRecordRef.Openavec la société requise. - Vérifiez
RecID.TableNo, les enregistrements absents et la limite de 250 caractères. - Formatez les valeurs de façon cohérente.
- Évitez les appels d'interface, confirmations et actions de page.
- N'accordez que les autorisations de lecture nécessaires.
Code d'exemple complet
codeunit 5138174 "SIM_DPS Sample Dyn. Mapping CU"
{
TableNo = "SIM_CORE Temp Table";
trigger OnRun()
var
LocalParamText: Text;
begin
LocalParamText := 'GETFUNCTIONS';
if (Rec.Param <> '') then
LocalParamText := Rec.Param;
case LocalParamText of
'Execute':
Execute(Rec);
'GETFUNCTIONS':
Rec."Function List" := 'Execute';
end;
end;
procedure Execute(var ParamRecordSIMCORETempTable: Record "SIM_CORE Temp Table")
var
LocalRecordRef: RecordRef;
LocalRecordId: RecordId;
begin
if LocalRecordRef.Get(LocalRecordId) then;
ParamRecordSIMCORETempTable."Dyn Mapping Return Value" := 'THIS RETURN WILL BE SHOWN ON PAGE';
end;
}