Cette fonction permet de paramétrer le passage d'un contexte entre la fonction appelante et la fonction appelée en tunnel. Ce contexte consiste à la fois en la possibilité de définir des valeurs par défaut, mais également des filtres complémentaires dans les différentes listes de gauche.

Le progiciel permet, de façon très simple, de se dérouter d'une fonction vers une table gérée sous forme d'un objet, sans pour autant ouvrir une session secondaire. Ceci est obtenu par la notion de tunnel.

Un tunnel est l'appel hors menu d'un objet standard par différents moyens :

  • soit par l'appui de la touche  (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).
  • soit par l'appui de  sur un lien exprimé dans l'explorateur de liaisons.
  • soit par l'utilisation d'un déroutement par clic droit sur un plan de travail ou une consultation.
  • soit par l'utilisation, dans une fonction existante, d'un item du menu Fonctions lorsque ce menu existe (c'est notamment le cas dans les fiches de base et dans les fonctions du module CRM).

Remarques importantes

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 :

  • que des zones renseignées incorrectement peuvent provoquer un dysfonctionnement de la fonction à laquelle la navigation s'applique.
  • qu'il faut protéger par un code activité et normaliser le nommage des clés relatives à des navigations spécifiques comme indiqué ci-dessous, sous peine de perdre les navigations créées en cas de changement de version ou de revalidation de dossier.

Pré-requis

SEEREFERTTO Reportez-vous à la documentation de Mise en oeuvre

Gestion de l'écran

En-tête

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é.

  • Intitulé (champ ZDES)

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 (champ MODULE)

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.

  • Actif (champ ENAFLG)

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 :

  • de rendre optionnel un élément du dictionnaire si la valeur associée au code activité est nulle.
  • de signer les éléments spécifiques dès lors qu'ils sont marqués par un code commençant par X, Y ou Z.
  • de dimensionner un nombre de lignes maximum lorsque le code activité marque des éléments d'un tableau.

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

 

Onglet Filtres

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 :

Tableau

  • Condition (champ CND)

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.

  • Filtre (champ FIL)

 

Fermer

 

Onglet Création

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 :

Tableau

  • Champ (champ FLD)

Variables masques à renseigner. On les définit donc avec la syntaxe [M:xxx]VARIABLE)

  • Formule (champ FRM)

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

 

Autres conditions

Eléments du contexte de paramétrage

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$)

Boutons spécifiques

Les champs suivants sont présents dans la fenêtre ouverte par ce bouton :

Bloc numéro 1

  • champ OBJET

 

  • champ CLES

 

Bloc numéro 2

  • Depuis le dossier (champ DOSORG)

Ce champ permet de définir le dossier à partir duquel la fiche va être copiée. Les syntaxes possibles sont décrites dans l'annexe dédiée.

  • Tous dossiers (champ TOUDOS)

Cette option permet de copier la fiche vers tous les dossiers définis dans le dictionnaire (table ADOSSIER de la solution courante).

  • Vers le dossier (champ DOSDES)

Ce champ permet de définir le dossier dans lequel la fiche va être copiée. Les syntaxes possibles sont décrites dans l'annexe dédiée.

Fermer

Ce bouton permet de recopier la définition de la fiche depuis ou vers un autre dossier.

Messages d'erreur

Outre les messages génériques, les messages d'erreur suivants peuvent apparaître lors de la saisie :

Couple fonction/objet déjà défini sur XXXXXXX

On a déjà saisi une navigation pour la fonction et l'objet correspondants (seule une navigation peut être saisie).

Type d'objet incorrect

Une navigation ne peut être faite que vers un objet de type simple ou combiné (les objets browser et tableau sont exclus).

Tables mises en oeuvre

SEEREFERTTO Reportez-vous à la documentation de Mise en oeuvre