Principe ENR-ACT-ENT
BUT
Ce mot clé permet d’exécuter des actions de mise à jour par macro-langage sur les entités DIAPASON (informations gérées par GFD), sur certaines informations gérées par GFG, et sur d’autres entités particulières (en-cours de fabrication, etc.).
PRINCIPE
Le principe de mise à jour par macro-langage est de simuler des saisies au clavier, ou plus généralement de remplacer le comportement de la partie « client » (interactive) de DIAPASON. Pour une modification, par exemple, le déroulement va être le même qu’une modification faite manuellement, c’est-à-dire exécution du bloc de mise à jour avant enregistrement, puis prise en compte zone à zone des informations avec contrôle local sur chacune, puis déclenchement du contrôle global et de l’enregistrement. Comme dans une saisie manuelle, le déroulement s’interrompra dès la première erreur.
SYNTAXE
ENR-ACT-ENT( )
EXEMPLE
Cette requête permet de modifier le nom du Client de réseau commercial « 0 » et de référence « Client1 ».
UTILISATION
Cette fonction est accessible dans une requête de type REB (Tableur Dynamique, Document, etc.), dans une requête de type RCT (Tableur Dynamique, etc.) ou dans une requête de type PSD (Procédure de Saisie Dynamique).
L’alimentation de deux listes est nécessaire : WfEntAct contient les actions à réaliser, alors que WfEntVar contient les variables à manipuler. La structure des listes est la suivante :
Structures utilisées
Liste standard : WfEntAct (Liste des actions à réaliser sur des entités)
Champ | Type | Description |
ActNOr | Caractère | Ordre traitement des actions |
Action | Caractère | Action à réaliser (CRE, MOD, DUP, SUP, INI). Il est aussi possible de spécifier une Action de Modification Globale (AMG=xxx, AMGL=xxx) - voir chapitre dédié ci-dessous. |
ActCle | Caractère | Clé de lien avec WfEntVar. Evite de renseigner EntTEn, EntCl1, EntCl2 et EntCl3 sur WfEntVar. Attention, si elle renseignée dans cette liste, elle doit l’être obligatoirement dans la liste WfEntVar et le lien entre les listes ne se fera que par cette clé ! |
ActRes | Caractère | Résultat action |
ActErr | Caractère | Libellé erreur éventuelle |
EntTEn | Caractère | Type Entité |
EntCl1 | Caractère | Clé 1 entité |
EntCl2 | Caractère | Clé 2 entité |
EntCl3 | Caractère | Clé 3 entité |
EntCom | Caractère | Commentaire libre |
GFDPre | Caractère | Présentation associée pour mise à jour, quand il s’agit d’une GFD |
GFDPrV | Logique | Prise en compte valeurs de création de la Présentation spécifiée |
GFDPrFS | Logique | Mise à jour uniquement des champs spécifiques utilisés dans la présentation spécifiée |
DupCl1 | Caractère | Clé 1 entité à dupliquer (idem EntCl1 pour duplication) |
DupCl2 | Caractère | Clé 2 entité à dupliquer (idem EntCl2 pour duplication) |
DupCl3 | Caractère | Clé 3 entité à dupliquer (idem EntCl3 pour duplication) |
Liste standard : WfEntVar (Détail variables entités)
Champ | Type | Description |
EntTEn | Caractère | Type Entité |
ActCle | Caractère | Clé de lien avec WfEntAct |
EntCl1 | Caractère | Clé 1 entité |
EntCl2 | Caractère | Clé 2 entité |
EntCl3 | Caractère | Clé 3 entité |
EntTVa | Caractère | Type variable |
EntVar | Caractère | Nom variable |
EntVaC | Caractère | Valeur variable caractère |
EntVaN | Décimal | Valeur variable numérique |
EntVaL | Logique | Valeur variable logique |
EntVaD | Date | Valeur variable date |
Le principe consiste à initialiser ces listes avant l'utilisation de la fonction; après l'exécution de la fonction, le code erreur par entité peut être récupéré sur la liste WfEntAct dans les zones ActRes et ActErr. La zone ActRes contient dans le cas des créations d’entités avec génération de clé (Commande, Série, etc.) le numéro généré. Ceci est utile pour la création de commande et de lignes rattachées.
Dans le cadre de l'appel de cette fonction dans une boucle, il est nécessaire de supprimer le contenu des listes après chaque utilisation de la fonction.
Exemple :
PC DDArtic AVEC ...
...
CREATION LISTE WfEntAct.
PRENDRE ...
...
CREATION LISTE WfEntVar.
PRENDRE ....
...
VLO.Resultat = ENR-ACT-ENT().
COMMENTAIRE "Traitement Erreur Fonction ou Dans Liste WfEntAct"
EFFACER LISTE WfEntAct
EFFACER LISTE WfEntVar.
FPC
Remarque : Dans le cadre d'une boucle, il vaut mieux sortir la fonction ENR-ACT-ENT.
L'exemple ci-dessus devient alors :
PC DDArtic AVEC ...
...
CREATION LISTE WfEntAct.
PRENDRE ...
...
CREATION LISTE WfEntVar.
PRENDRE ....
...
FPC
VLO.Resultat = ENR-ACT-ENT().
COMMENTAIRE "Traitement Erreur Fonction ou Dans Liste WfEntAct"
Fonctions générales du ENR-ACT-ENT
Actions :
« CRE » pour création,
« MOD » pour modification,
« CMO » pour création ou modification (si l’enregistrement existe déjà).
« AMG=action » ou « AMGL=action » pour des actions de modification globale (voir chapitre dédié ci-dessous),
« DUP » pour duplication,
« SUP » pour suppression,
« REA » pour réactivation,
« RAF » pour ne rien faire sur un enregistrement (supprimer un ordre donné)
« APPROB » pour approbation d’un enregistrement sauvegardé
« INI » permet d’alimenter WfEntVar avec les valeurs d’un enregistrement.
« INI-PRE » lors de l’exécution d’un ENR-ACT-ENT en mode INI, seules les variables ayant une valeur renseignée (type caractère non vide, numérique différent de zéro, etc.) sont récupérées dans la liste WfEntVar. Pour récupérer l’ensemble des données de l’entité, le code « INI-PRE » est disponible. Celui-ci renvoie toutes les variables spécifiées dans la présentation passée en paramètre dans WfEntAct.GFDPre qu’elles soient vides ou non.
« INI-SOC » permet de faire l’équivalent de l’action INI mais pour des données définies sur une autre société de Diapason. Pour cela, il faut créer un élément dans WfEntVar tel que WfEntVar.EntVar = 'RefSocApp' et WfEntVar.EntVaC contient la société dans laquelle on souhaite récupérer les données.
➡️ Il est possible de piloter l’aspect transactionnel des actions, c’est-à-dire de définir des débuts (avec le code DTR) et fin de transaction (avec le code FTR). La notion de transaction permet de gérer l’intégrité de toutes les mises à jour effectuées entre le début transaction et la fin. Si le mot-clé LC-ERREUR est utilisé pendant une transaction, toutes les mises à jour effectuées entre le début et la fin de transaction sont annulées. Ces mots-clés ne sont pas valables sur plusieurs ENR-ACT-ENT.
➡️ Lorsque la fonction ENR-ACT-ENT est exécutée en mode batch (depuis un tableur dynamique, un document, etc.) la trace est présente dans la trace du traitement correspondant (selon le paramètre général TR-ISMLMAJ). Sinon, pour déclencher l'affichage de la trace il faut créer un enregistrement dans WfEntAct tel que WfEntAct.Action = ATR (activation trace) et WfEntAct.EntCl1 contient le nom du fichier trace.
➡️ Entités, Clés : voir tableau des clés entités.
➡️ ActCle : zone de texte libre permettant à la fonction de faire le lien entre une action (WfEntAct) et des variables (WfEntVar). Si ActCle est renseigné, il est inutile d’indiquer EntTEn, EntCl1, EntCl2 et EntCl3 sur WfEntVar. L’utilisation de ActCle permet donc de traiter plusieurs actions sur un même enregistrement (EntCl* identiques) sans mélanger les variables.
➡️ ActRes : vide (OK), *ERR (erreur DIAPASON dans ActErr), *ACT (action inconnue dans WfEntAct.Action), ou *INC (erreur inconnue).
Possibilités supplémentaires pour les GFDs
Il existe 2 modes de création et de modification. Les actions « CRF » et « MOF » permettent respectivement de créer et modifier un enregistrement en mode « forcé », c’est-à-dire sans passer par l’intégrité de chaque zone de DIAPASON. L’usage de ces modes est réservé à des cas particuliers, ils permettent de créer des éléments ne satisfaisant pas à l’intégrité de DIAPASON.
L’action « CMO » demande à DIAPASON de choisir automatiquement entre la création et la modification : si l’enregistrement spécifié avec l’entité + les clés existe, il fera l’objet d’une modification, sinon il sera créé.
Il est possible de spécifier une Présentation dans la zone GFDPre. Cette présentation servira à définir les seules zones qui vont être enregistrées. Il convient donc de l’utiliser pour optimiser le temps de traitement de la fonction si peu de zones doivent être maintenues (par défaut c’est la présentation « ISIA » qui est utilisée). Combinée avec GFDPrV, la présentation permet de définir les valeurs par défaut lors d’une création d’enregistrement.
De plus, une présentation dédiée peut permettre de traiter des variables non incluses par défaut dans la présentation standard « ISIA » : champs spécifiques, champs « masqués » (SDL.CdeLigComDesCFGVal, SDL.CdeLigComDesCFGVar…)
Il est possible d’exécuter les « Actions de Modification Globale » :
« AMG=action » permet d’exécuter une Action de Modification Globale définie sur l’entité.
« AMGL=action » permet d’exécuter une Action de Modification Globale définie sur l’entité liée pour tous les éléments rattachés (toutes les lignes d’une commande par exemple)
Par exemple, pour les commandes et lignes de commande commerciales :
WfEntAct EntTEn | |||
CDC | CDC-LIG | ||
WfEntAct Action | AMG | Permet de lancer une AMG de type « Entête de commande » sur une commande | Permet de lancer une AMG de type « Ligne de commande » sur une seule ligne de la commande |
AMGL | Permet de lancer une AMG de type « Ligne de commande » sur toutes les lignes de la commande | Sans objet |
Exemple :
Instructions permettant de lancer l’AMG « AnnValLig » sur une seule ligne de commande commerciale.
EFFACER Liste WfEntAct
CREATION Liste WfEntAct :
PRENDRE WfEntAct Action = CLO."AMG" + CLO."=AnnValLig"
PRENDRE WfEntAct EntTEn = CLO."CDC-LIG"
PRENDRE WfEntAct EntCl1 = VLO.CdeNumCom
PRENDRE WfEntAct EntCl2 = VLO.CdeNumLig
FIN_BLOC
VLO.EAE = ENR-ACT-ENT( )