(ou par un menu contextuel obtenu par clic droit) à partir d'une clé de l'objet. Ce comportement est standard dans le progiciel, dès lors qu'on ne passe pas d'une fonction d'exploitation vers une fonction de paramétrage ou de développement. Par exemple, en saisie de commande, sur une zone de type code client, on passe en gestion des clients, ce qui permet de visualiser la fiche client courante ou d'en créer une à la volée. Par contre, en saisie de natures analytiques, on ne passe pas en tunnel sur la gestion des pyramides de natures (elles sont considérées comme faisant partie du paramétrage).
Il est à noter que l'ouverture d'une fonction dans une session secondaire par l'intermédiaire de l'appui combiné des touches à (touches de fonctions paramétrables par le biais de la personnalisation utilisateur) n'est pas considéré comme un tunnel et ne peut de ce fait faire l'objet d'un passage de contexte.
Par ailleurs, les navigations sont à considérer comme du développement spécifique, et non du paramétrage. Ceci signifie notamment :
Reportez-vous à la documentation de Mise en oeuvre
Présentation
La définition d'une condition de navigation se fait dans une fiche en deux onglets nommés Filtres et Création.
Fermer
Champs
Les champs suivants sont présents dans cet onglet :
Bloc numéro 1
| Identifiant de la navigation. Les navigations normalisées livrées dans le standard sont identifiées par un code commençant par 2 ou 3 caractères identifiant le module auquel est rattaché la fonction de départ (ces codes sont normalisés dans la table diverse no 901). Toute navigation spécifique devra commencer par une des lettres X, Y, ou Z, et être protégée par un code activité. |
| Destiné à figurer sur les états et les écrans dans lesquels le code de la fiche peut être saisi ou sélectionné. Ce texte permet de donner une description de la fiche concernée. |
Bloc numéro 2
| Le nom de la fonction appelante (ie. celle à partir de laquelle le tunnel est déclenché). |
| On définit ici le nom de l'objet appelé par le tunnel. Il est à noter qu'il est possible de définir une condition de navigation d'un objet XXX sur lui-même, en mettant comme fonction appelante la fonction GESXXX, et en objet appelé le code XXX. Ces conditions de navigation sont appelées si l'objet est appelé directement depuis un menu (hors de tout tunnel). Ceci permet de définir facilement des valeurs par défaut en cas de création d'une fiche dans un objet hors tunnel. |
| Module d'appartenance du paramétrage. Ce champ permet de renseigner si l'écran doit être créé dans la base de données du dossier. Il l'est si le module auquel l'écran est rattaché est actif pour le dossier. |
| Cette case à cocher permet d'activer ou de désactiver la fiche courante sans pour autant perdre son contenu. Une fiche désactivée ne peut pas être utilisée (par appel de son code) dans d'autres fiches (documents, paramétrages...), ou lors de traitements de masse. Les habilitations sur une fonction donnée peuvent interdire la création d'une fiche active. Dans ce cas, la case est désactivée par défaut, et est modifiable uniquement par un utilisateur autorisé, ou via un circuit de signature défini par Workflow. |
| Un code activité permet :
Ainsi, si le code activité est non actif, l'élément marqué ne sera pas utilisable, et le code associé (s'il y en a) ne sera pas généré ni activable. |
Fermer
Présentation
Le premier onglet permet alors de définir des filtres contextuels qui vont s'appliquer sur toutes les listes gauches de l'objet, afin de ne faire apparaître qu'une partie des enregistrements de la table gérée par l'objet. Pour ce faire, on saisit dans le tableau du premier onglet d'une part des conditions, d'autre part des filtres. Dès lors que la condition est remplie, le filtre s'applique.
Fermer
Champs
Les champs suivants sont présents dans cet onglet :
| Filtres contextuels s'appliquant sur toutes les listes gauches de l'objet, afin de ne faire apparaître qu'une partie des enregistrements de la table gérée par l'objet. Dès lors que la condition est remplie, le filtre s'applique. |
|   |
Fermer
Présentation
Le second onglet permet de définir des valeurs par défaut qui seront utilisées si on crée une fiche dans le contexte du tunnel. On précise alors, dans le deuxième onglet, les variables à renseigner (ce sont des variables issues d'un masque, on les définit donc avec la syntaxe [M:xxx]VARIABLE), et une expression calculée pouvant faire intervenir des variables issues du contexte, des constantes, des fonctions, et des opérateurs.
Les valeurs par défaut sont affectées, dans la logique de l'objet, juste avant l'action RAZCRE. Si des valeurs par défaut autres ont été définies dans l'objet, ce sont les valeurs de navigation qui sont prioritaires (le champ étant considéré comme initialisé, l'initialisation standard de l'objet n'a pas lieu sur ces champs). Attention, il faut aussi noter que ces valeurs par défaut ne peuvent pas non plus être utilisées pour les champs saisis dans des tableaux à nombre variable de lignes.
Fermer
Champs
Les champs suivants sont présents dans cet onglet :
| Variables masques à renseigner. On les définit donc avec la syntaxe [M:xxx]VARIABLE) |
| Expression calculée pouvant faire intervenir des variables issues du contexte, des constantes, des fonctions, et des opérateurs. Sa valeur alimentera le champ précisé sur la ligne, en création enregistrement dans le contexte d'un tunnel, sur lequel s'applique la navigation. |
Fermer
Certaines variables du contexte peuvent être intéressantes à connaître :
La variable GNAVIG (1.. ) contient les codes fonctions empilées. On testera, par exemple, cette variable pour affecter des valeurs par défaut, en plus de celle définie par le paramétrage des navigations, en cas de création d'enregistrement. Attention, la fonction déclenchée du menu occupe deux postes; cela permet de définir une navigation quand on vient du menu (exemple : GESBPC => Objet BPC).
La variable GPILNAV est le nombre de fonctions empilées.
La variable TUNNEL vaut 1 si on est dans un contexte de tunnel (ce sera normalement toujours le cas si la navigation ne se fait pas de la fonction vers son objet)
La variable TUNCLE contient le code de la clé courante au moment du déclenchement d'un tunnel ; cette zone est toujours alphanumérique, et de longueur maximale égale à 30 (une zone numérique a été convertie par la fonction num$).
La variable GPILLNK, si elle est non nulle, signale que le tunnel s'est fait par l'explorateur de liens.
Dans le contexte de l'objet, le code de la transaction se trouve dans la variable GFLAG, et le nom de la fenêtre dans GBOITE. Ceci permet de faire éventuellement dépendre les filtres de navigation de la variante de l'objet.
Les variables qui sont en ligne sont toutes celles issues du contexte appelant (c'est-à-dire au minimum les variables des masques en ligne).
La variable NAVIG peut être alimentée par traitement pour forcer une fonction dans la pile. En effet, lorsque le traitement déclencheur de la navigation n'est pas appelé par une fonction, on créera une fonction correspondante dans le dictionnaire et on affecte cette fonction à la pile dès l'entrée dans ce traitement. Exemple : navigation HDK00007, avec pour fonction de départ FUNDSC1.
Un exemple d'utilisation pratique (non livré en standard), pourrait être le suivant. On suppose qu'un utilisateur TOTO donné, en saisie d'écriture, doit fréquemment créer des comptes. Il saisit un numéro de compte, valide le champ, et obtient le message Compte inexistant. On suppose qu'il déclenche alors un tunnel et veut pouvoir créer le plus facilement possible le compte qu'il vient de taper. Mais, afin d'éviter qu'il ne crée par défaut un compte déjà existant, on va également lui présenter dans la liste gauche tous les comptes ayant la même racine que celui tapé (les 4 premiers caractères). Ceci peut aisément être obtenu en définissant la navigation suivante :
code = X00001, un code activité XNA protégeant la fiche (par exemple).
fonction appelante = GESGAS ; objet appelé = GAC
filtre déclenché sur la condition suivante : TUNCLE<>"" & GPILLNK=0 & GUSER="TOTO", avec l'expression de filtre suivante : ACC>=left$(TUNCLE,4) & ACC<=left$(TUNCLE+"000",4)+"999999"
affectation de [M:GAC0]ACC à l'aide de la formule string$(GUSER="TOTO" & GPILLNK=0,TUNCLE)
Un autre exemple d'utilisation pratique (non livré en standard), pourrait être le suivant. On suppose qu'en cas de création de commande (hors tunnel), le champ Référence de la commande doit être initialisé avec le nom de l'utilisateur ayant créé la commande, suivi d'un tiret et de la date sous la forme YYMMDD. Ceci peut aisément être obtenu en définissant la navigation suivante :
code = X00002, un code activité XNA protégeant la fiche (par exemple).
fonction appelante = GESSOH ; objet appelé = SOH
affectation de [M:AOH0]CUSORDREF à l'aide de la formule GUSER+"-"+format$("D :YYMMDD",date$)
Les champs suivants sont présents dans la fenêtre ouverte par ce bouton : Bloc numéro 1
Bloc numéro 2
Fermer Ce bouton permet de recopier la définition de la fiche depuis ou vers un autre dossier. |
Outre les messages génériques, les messages d'erreur suivants peuvent apparaître lors de la saisie :
On a déjà saisi une navigation pour la fonction et l'objet correspondants (seule une navigation peut être saisie).
Une navigation ne peut être faite que vers un objet de type simple ou combiné (les objets browser et tableau sont exclus).