Lancer un autre objet depuis le tableur (tableur dynamique, PSD, couplage..)
Lancement d’un autre Tableur Dynamique ou d’une PSD, etc.
Il est possible lors d’actions spécifiques définies sur un Tableur Dynamique de lancer un autre Tableur Dynamique, une PSD, … (voir tableau ci-dessous). Le lancement s’effectue dans la requête RCT de contrôle local par l’initialisation des variables VBP suivantes :
Variable | Valeurs possibles | Commentaire |
IAP_TypeFils | TDY ou PSD ou ENT ou MCO ou AME ou LPA ou COU ou PER ou ARB ou CSY ou DOC ou AGE ou ADG | TDY : tableur dynamique PSD : procédure de saisie dynamique ENT : entité GFD (fiche GFD) MCO : message de confirmation AME : action métier LPA : liste paramétrée COU : couplage PER : diagramme PERT ARB : arbre paramétré CSY : commande système DOC : document AGE : agenda ADG : arbre de définition GED |
IAP_RefFils | Référence existante de Tableur Dynamique ou de PSD, … à afficher La valeur « *REA » permet de lancer un réaffichage du contenu du tableur. | La catégorie de PSD concernée est « IAP ». L’entité GFD ne doit pas être de type « lignes ». |
IAP_ModeAcc | S, V ou C | Mode d’accès S = simple (seulement variables IAP*) V = variables (idem S, avec variables VBP, SCR et VCR) C = complet (idem V, avec WfTabValPere) |
IAP_ModeRet | S, V ou C | Mode de retour S = simple (seulement variables IAP*) V = variables (idem S, avec variables VBP, SCR et VCR) C = complet (idem V, avec WfTabValFils ou variables VSD) |
IAP_SaiCri | VRAI ou FAUX | Ne concerne que les TDY. Si VRAI, la saisie des critères sera effectuée. Lorsqu’on souhaite lancer un TDY via le moteur RCT et que ce TDY a au lancement une PSD critère, pour que celle-ci se lance il faut initialiser la VBP.IAP_SaiCri à OUI. |
IAP_ValActFils | Libre | Valeur retournée dans la RCT au retour du tableur ou de la PSD lancé. Par défaut, est égal à « RETOUR- » + la référence de l’objet lancé. |
IAP_EntCl1 | Clé 1 de l’entité à traiter | Champ correspondant : voir l’application « Intégrité Générale Entités ». |
IAP_EntCl2 | Clé 2 de l’entité à traiter | Champ correspondant : voir l’application « Intégrité Générale Entités ». |
IAP_EntCl3 | Clé 3 de l’entité à traiter | Champ correspondant : voir l’application « Intégrité Générale Entités ». |
IAP_EntAct | Action sur entité | Voir liste (1) ci-dessous. |
IAP_EntPre | Présentation à utiliser |
(1) liste des codes supportés dans la variable VBP.IAP_EntAct :
Code | Action | Commentaire |
CRE | Création | Ne nécessite pas l’initialisation de VBP.IAP_EntCl* |
MOD | Modification | |
DUP | Duplication | |
AMG=xxx | Modification Globale | Déclenche l’action de modification globale xxx. |
DET | Détail | |
DET_ENT | Gestion Lignes | |
DET_ENT_VIS | Consultation Lignes |
L’élément lancé adopte le même comportement que pour un lancement normal. Il est toutefois possible de paramétrer celui-ci en tenant compte des variables SCR suivantes :
IAP_TypePere (TDY)
IAP_TypeFils (TDY ou PSD)
IAP_ModeAcc (S, V ou C)
IAP_ModeRet (S, V ou C)
IAP_RefPere (référence TDY appelant)
IAP_RefFils (référence TDY ou PSD ou GFD appelé)
IAP_ColPere (indice dans WfTabVal avant appel)
IAP_ColFils (indice dans WfTabVal avant validation si TDY)
IAP_LigPere (dernier numéro de ligne avant appel)
IAP_LigFils (dernier numéro de ligne avant validation)
IAP_VarPere (dernière référence colonne avant appel)
IAP_VarFils (dernière référence colonne ou variable VSD avant appel)
IAP_ValPere (dernière valeur avant appel)
IAP_ValFils (dernière valeur avant validation)
IAP_ValActFils (action choisie pour le retour)
IAP_ParActFils (ABA-CRI, ABA ou VAL)
IAP_SaiCri (saisie des critères ?)
Lancement d’une PSD à partir d’une action d’un Tableur Dynamique
Dans la RCT, voici comment gérer l’appel à la PSD. A noter que cette PSD est dans la catégorie : IAP : « Lancement d’Application ».
SI SCR.RCT_TypeAcces = CLO."ACT" /*l’utilisateur a utilisé l’action spécifique du tableur */
SI SCR.RCT_TypeAction = CLO."RefAction" /* référence action indiquée dans la REB */
INIT VBP.IAP_ModeAcc = CLO."V" /* voir les différents niveaux de partage désiré */
INIT VBP.IAP_ModeRet = CLO."V" /* voir les différents niveaux de partage désiré */
INIT VBP.IAP_TypeFils = CLO."PSD" /* indique qu’il s’agit d’une PSD */
INIT VBP.IAP_RefFils = CLO."RefPSD" /* référence de la PSD */
INIT VBP.IAP_ValActFils = CLO."VAL-RefPSD" /* action à recevoir au retour de la PSD */
INIT VBP.Liste = CLO.’’.
FIN_BLOC
FIN_BLOC
SI SCR.RCT_TypeAcces = CLO."IAP" /* lorsque l’on revient sur le tableur principal, la RCT est exécutée , la variable critère RCT_TypeAcces a pour valeur IAP */
SI SCR.RCT_TypeAction = CLO."VAL-RefPSD" /* on revient de la PSD RefPSD */
SI SCR.IAP_ParActFils = CLO."VAL"
/* On veut boucler dans la PSD lors de la validation. */
INIT VBP.IAP_ModeAcc = CLO."V" /* voir les différents niveaux de partage possibles */
INIT VBP.IAP_ModeRet = CLO."V" /* voir les différents niveaux de partage possibles */
INIT VBP.IAP_TypeFils = CLO."PSD" /* indique qu’il s’agit d’une PSD */
INIT VBP.IAP_RefFils = CLO."RefPSD" /* référence de la PSD */
INIT VBP.Liste = VBP.Liste + CLO."," + VCR.Composant /* on concatène cf. NOTE ci-dessous */
FIN_BLOC
SINON
SI SCR.IAP_ParActFils = CLO."ABA"
/* on met à jour la cellule */
VLO.Liste = VBP.VarListe
VLO.Exec = TAB-ACTION( TAB-ACT= MAJ-VAL , LIGNE= LIG-COU ,
COLONNE= COL-COU , TYPE= CARACTERE , VALEUR= VLO.Liste )
FIN_BLOC
FIN_BLOC
FIN_BLOC
FIN_BLOC
NOTE : Pour récupérer la valeur saisie dans la PSD, il faut sur la définition de la procédure, définir la correspondance entre la variable saisie et une variable critère (SCR ou VCR) ; dans notre cas la VCR.Composant est utilisée ; ne pas oublier lors de la saisie de la correspondance de préciser que l’on veut récupérer la valeur en sortie.
Pour concaténer, il faut obligatoirement passer par une VBP ou une VCR/SCR.
Lancement d’une action sur entité à partir d’une action d’un Tableur Dynamique
Rappel : les champs correspondant aux valeurs des IAP_EntCl* sont visibles dans l’application « Intégrité Générale Entités ».
SI SCR.RCT_TypeAcces = CLO."ACT" /*l’utilisateur a utilisé l’action spécifique du tableur */
SI SCR.RCT_TypeAction = CLO."RefAction" /* référence action indiquée dans la REB */
INIT VBP.IAP_ModeAcc = CLO."V" /* voir les différents niveaux de partage désiré */
INIT VBP.IAP_ModeRet = CLO."V" /* voir les différents niveaux de partage désiré */
INIT VBP.IAP_TypeFils = CLO."ENT" /* indique qu’il s’agit d’une GFD */
INIT VBP.IAP_RefFils = CLO."GAD" /* référence entité : ici les articles */
INIT VBP.IAP_EntCl1 = CLO."R" /* clé 1 : pour les articles c’est le type */
INIT VBP.IAP_EntCl2 = CLO."RefArt" /* clé 2 : pour les articles c’est la référence */
INIT VBP.IAP_EntAct = CLO."MOD" /* modification */
INIT VBP.IAP_EntPre = CLO."ISIA" /* présentation à utiliser */
INIT VBP.IAP_ValActFils = CLO."VAL-GFD" /* action à recevoir au retour de la PSD */
FIN_BLOC
FIN_BLOC
SI SCR.RCT_TypeAcces = CLO."IAP" /* lorsque l’on revient sur le tableur principal, la RCT est exécutée , la variable critère RCT_TypeAcces a pour valeur IAP */
SI SCR.RCT_TypeAction = CLO."VAL-GFD" /* on revient de la GFD */
SI SCR.IAP_ParActFils = CLO."VAL"
/* on met à jour la cellule */
VLO.Liste = VBP.VarListe
VLO.Exec = TAB-ACTION( TAB-ACT= MAJ-VAL , LIGNE= LIG-COU ,
COLONNE= COL-COU , TYPE= CARACTERE , VALEUR= VLO.Liste )
FIN_BLOC
SINON
SI SCR.IAP_ParActFils = CLO."ABA"
LC-WARNING = CLO."Vous avez abandonné la mise à jour"
FIN_BLOC
FIN_BLOC
FIN_BLOC
FIN_BLOC
Lancement d’édition, de mise à jour à partir d’une action d’un Tableur Dynamique
Dans la RCT, voici comment gérer une action spécifique.
SI SCR.RCT_TypeAcces = CLO."ACT" /* l’utilisateur à utilisé l’action spécifique du tableur */
SI SCR.RCT_TypeAction = CLO."RefAction" /* référence action indiquée dans la REB */
/* dans ce cas on veut lancer le document ‘NomDocument’ */
VLO.ExecFonction = EXE-DOC( DOCUMENT= REB."NomDocument" , MODE= B ,
IMPRIMANTE= CLO."Fichier" , FICHIER= CLO."NomFichier" , DOC-CAR= CLO."" ,
DOC-MAJ= CLO."" , DOC-CLE= CLO."" )
/* on peut aussi utiliser la fonction TAB-ACTION décrite dans cette documentation. */
FIN_BLOC
FIN_BLOC
Un document peut aussi être lancé en alimentant la VBP.IAP_TypeFils avec “DOC” et la VBP.IAP_RefFils avec la référence du document. C’est intéressant car ça permet une impression écran chose qui n’est pas possible avec un EXE-DOC.
Lancement d’un Tableur Dynamique à partir d’une action d’un Tableur Dynamique
Dans la RCT, voici comment gérer l’appel au nouveau Tableur Dynamique.
SI SCR.RCT_TypeAcces = CLO."ACT" /* l’utilisateur a utilisé l’action spécifique du tableur */
SI SCR.RCT_TypeAction = CLO."RefAction" /* référence action indiquée dans la REB */
INIT VBP.IAP_ModeAcc = CLO."V" /* voir les différents niveaux de partage désiré */
INIT VBP.IAP_ModeRet = CLO."C" /* voir les différents niveaux de partage désiré */
INIT VBP.IAP_TypeFils = CLO."TDY" /* indique qu’il s’agit d’un tableur dynamique */
INIT VBP.IAP_RefFils = CLO."Ref.TableurDyn." /* référence du tableur dynamique */
FIN_BLOC
FIN_BLOC
SI SCR.RCT_TypeAcces = CLO."IAP" /* lorsque l’on revient sur le tableur principal, la RCT est exécutée , la variable critère RCT_TypeAcces a pour valeur IAP */
SI SCR.RCT_TypeAction = CLO."RETOUR-Ref.TableurDyn" /* on revient de ce tableur */
/* ci-dessous, on récupère le montant saisi (contenu dans la 4eme colonne) du tableur fils afin de
mettre à jour la colonne MontantTot de la ligne en cours du tableur père. */
VLO. MontantTot = CLO.0
POUR CHAQUE LST WFTabValFils :
VLO.MontantTot = VLO.MontantTot + DECIMAL( VALEUR= WFTabValFils.ContLig [4] )
FIN_BLOC
VLO.Exec = TAB-ACTION( TAB-ACT= MAJ-VAL , LIGNE= LIG-COU ,
COLONNE=CLO."MontantTot" , TYPE= NUMERIQUE , VALEUR= VLO.MontantTot )
FIN_BLOC
FIN_BLOC
NOTE : Dans le tableur père, la liste WfTabValFils contient les saisies effectuées sur le tableur fils ; dans le tableur fils, la liste WfTabValPere contient les données du père. Pour pouvoir avoir cette visibilité, les variables VBP.IAP_ModeRetour et VBP.IAP_ModeAcc respectivement doivent avoir la valeur « C » qui signifie « complet ».