Codeunit d'action d'exemple
La codeunit 5138156 "SIM_DPS Sample CU" montre comment une codeunit Business Central peut fournir une logique d'action personnalisée à Business Portals. L'exemple utilise SIM_DPS OL comme table source et couvre la découverte des fonctions, l'exécution des actions, les événements du frontend et la navigation vers les enregistrements sources ou nouvellement créés.
Cette codeunit est une implémentation de référence. Copiez les modèles nécessaires dans une codeunit propre au client et remplacez la logique de vente, les messages, les codes de champs de saisie et les calculs selon les besoins.
Fonctions disponibles
Lorsque Business Portals exécute la codeunit sans contexte d'action, OnRun utilise GETFUNCTIONS et renvoie dans Rec."Function List" les valeurs suivantes, séparées par des virgules :
| Fonction | Objectif |
|---|---|
MakeOrderFromQuote |
Met à jour les lignes du devis à partir des saisies du portail et transforme le devis en commande vente. |
MakeOrderFromItem |
Crée une commande vente avec une ligne pour l'article sélectionné. |
MakeQuoteFromItem |
Crée un devis avec une ligne pour l'article sélectionné. |
Ces valeurs peuvent être sélectionnées comme paramètres lorsque la codeunit est affectée à une action ou à un statut de processus.
Flux d'exécution
Le déclencheur OnRun distribue tous les appels.
- Pour une action normale, il lit l'action de la table de dataset et sa configuration. Une action de processus prend son paramètre dans le statut suivant ; les autres le prennent dans l'action.
- Pour une sous-fonction, il lit l'action affectée à la table d'en-tête et ajoute un suffixe dérivé de
Rec."Sub Function Execute". - La valeur obtenue est traitée par l'instruction
casefinale.
Sub Function Execute |
Suffixe | Utilisation |
|---|---|---|
SAVE |
Save |
Logique d'enregistrement personnalisée. |
CHECK |
Check |
Validation avant exécution. |
EVENT |
Event |
Traiter un événement du frontend et renvoyer des données. |
HASEVENT |
HasEvent |
Indiquer au frontend si l'événement est implémenté. |
OPENDOCPAGE |
OpenDocPage |
Ouvrir l'enregistrement représenté par la ligne. |
OPENNEWPAGE |
OpenNewPage |
Ouvrir l'enregistrement créé par l'action. |
BASKETCHECK |
BasketCheck |
Valider une opération de panier. |
Par exemple, MakeOrderFromQuote et EVENT produisent MakeOrderFromQuoteEvent.
Seuls les gestionnaires suivants contiennent une logique :
MakeOrderFromQuoteEventMakeOrderFromQuoteHasEventMakeOrderFromQuoteOpenDocPageMakeOrderFromQuoteOpenNewPageMakeOrderFromItemOpenDocPageMakeOrderFromItemOpenNewPageMakeQuoteFromItemOpenDocPageMakeQuoteFromItemOpenNewPage
Les branches Save, Check et BasketCheck, ainsi que les événements des fonctions basées sur les articles, sont des espaces réservés.
Exemples de documents vente
Transformer un devis en commande
MakeOrderFromQuote reçoit l'enregistrement courant via un RecordRef. La procédure recherche les lignes associées dans SIM_DPS OL, lit QUANTITY et met à jour les lignes vente. Une quantité vide prend la valeur 1.
Elle exécute ensuite le contrôle d'approbation standard, demande une confirmation si une interface est disponible, exécute Sales-Quote to Order, copie le numéro de commande Business Portals dans Your Reference, puis stocke l'ID du nouvel enregistrement et l'ID de page.
Créer une commande ou un devis depuis un article
MakeOrderFromItem et MakeQuoteFromItem utilisent l'article sélectionné et le numéro d'entreprise associé à la commande du portail. Chaque procédure crée un en-tête et une ligne, lit QUANTITY et utilise 1 si la saisie est vide.
Pour les actions de processus, le lien est enregistré dans SIM_DPS OL Status ; pour les autres types, dans SIM_DPS OL.
Événements du frontend
| Événement | Comportement de l'exemple |
|---|---|
SELECTLINE |
Renvoie les ID des lignes du même document ayant la même quantité. |
UNSELECTLINE |
Renvoie le même groupe afin que le frontend supprime la sélection. |
INPUTLINE |
Lit QUANTITY, BRUTTO, NETTO et PRICE et renvoie les valeurs calculées. |
MakeOrderFromQuoteHasEvent définit Sub Function Has Event sur true pour ces événements.
Le gestionnaire lit le XML du BLOB Sub Function Event Data, extrait EVENTVALUE de ROOT/EVENT et écrit la réponse UTF-8 dans Sub Function Event Return.
Le calcul INPUTLINE est volontairement illustratif : PRICE correspond à la quantité multipliée par le prix unitaire, BRUTTO à la quantité multipliée par 10, NETTO à la quantité multipliée par 5, et les saisies numériques vides valent zéro.
Voir Événement de sélection, Événement de désélection et Événement de saisie.
Ouvrir des pages Business Central
OpenDocPage ouvre l'enregistrement référencé par Dataset Table Record avec la page configurée. OpenNewPage ouvre l'enregistrement créé ; les actions de processus lisent les identifiants dans SIM_DPS OL Status, les autres dans SIM_DPS OL.
Une interface Business Central est requise ; cette fonctionnalité ne convient pas aux sessions en arrière-plan ni aux services web.
Considérations d'implémentation
- Conservez
TableNo = "SIM_DPS OL"; Business Portals transmet le contexte viaRec. - Ajoutez chaque fonction sélectionnable à
GETFUNCTIONSet au distributeur. - Respectez exactement la convention paramètre de base plus suffixe.
- Validez les enregistrements requis ; plusieurs lookups omettent volontairement la gestion explicite des erreurs.
- Remplacez les messages, codes et multiplicateurs
BRUTTO/NETTOcodés en dur. - Utilisez des labels localisés pour les textes visibles.
- Vérifiez la limite de transaction créée par
Commit. - Si de nombreuses lignes correspondent, ne renvoyez que les enregistrements nécessaires.
Résumé de la configuration
- Créez ou sélectionnez les tables de dataset.
- Créez une action ou un statut de processus et affectez la codeunit.
- Sélectionnez un paramètre renvoyé par
GETFUNCTIONS. - Affectez l'action à la table requise.
- Configurez les codes de saisie, les ID de page et les événements.
- Testez l'exécution normale, les sous-fonctions, les statuts, l'accès intersociétés et l'exécution sans interface.