Paramétrage > Exploitation > Imports/Exports > Modèles import/export 

Cette fonction permet de définir les formats de fichiers utilisés par les fonctions d'import et d'export d'objet afin d'intégrer des données dans la base du progiciel, ou au contraire de les extraire.

Un fichier utilisable par le module import et généré par le module export est à la base un fichier avec une structure de l'un des types suivants :

  • fichier plat avec champs en longueur fixe.
  • fichier plat avec séparateur entre les champs (et enregistrements).
  • fichier XML.

Le module d'import / export utilise la notion d'objet pour permettre la mise à jour de données dans la base. Un objet étant défini par un ensemble de tables et d'écrans, ainsi que des actions standard associées soit aux champs et à la mise à jour, on garantit ainsi que l'ensemble des contrôles et des actions nécessaires lors de la mise à jour de la base sont effectués, puisque une seule description de l'objet permet à la fois de générer le code relatif à une mise à jour en conversationnel et la mise à jour par import.

Lorsqu'un objet ne met à jour qu'une seule table, le modèle d'import décrit la liste des champs de la table à intégrer, sachant qu'un bloc de données du fichier à importer ou exporter contient les données d'un enregistrement. Lorsque plusieurs tables sont mises à jour par un objet (par exemple l'en-tête et les lignes), on retrouvera plusieurs blocs de données pour une instance de l'objet à intégrer (un bloc définissant l'en-tête et N blocs définissant chacun une ligne).

Il est à noter qu'il est également possible d'importer une table sans l'associer à une notion d'objet. On laisse pour cela le champ objet vide, et on se contente de donner dans le tableau  du second onglet la table et les champs concernés. L'import se fait alors sans aucun autre contrôle que ceux induits par les formats associés aux types de données des champs de la table.

Pré-requis

SEEREFERTTO Reportez-vous à la documentation de Mise en oeuvre

Gestion de l'écran

En-tête

Présentation

Un modèle d'import export s'identifie par un code alphanumérique. Outre un intitulé, on définit, sur deux onglets, les caractéristiques techniques du modèle.

Fermer

 

Champs

Les champs suivants sont présents dans cet onglet :

Code qui identifie le modèle d'import-export.

  • Intitulé (champ INTIT)

Permet de définir un intitulé associé à chaque fiche.

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

Fermer

 

Onglet Entête

Présentation

Cet onglet définit les caractéristiques générales du modèle, c'est-à-dire :

  • les données qui doivent être exportées
  • la structure générale du fichier (format, codage, définition de groupes de données)
  • des paramètres complémentaires

Fermer

 

Champs

Les champs suivants sont présents dans cet onglet :

Général

Définit le code de l'objet a importer ou exporter. Dans le cas de l'export, cette zone est facultative; le nom de la table principale à exporter est indiqué dans le bloc des identificateurs.

Permet d'initialiser le contexte (notamment si un même objet est utilisé par plusieurs fonctions) et de vérifier les droits d'accès. En effet, les utilisateurs doivent avoir les droits d'accès idoines à la fonction pour pouvoir se servir du modèle.

Ce champ est obligatoire.

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

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.

Ce code d'accès permet de restreindre l'accès à la fiche courante à certains utilisateurs.
Si la zone est renseignée, seuls les utilisateurs disposant de ce code d'accès dans leur profil peuvent visualiser et modifier cette fiche.

Le droit d'exécution attaché à un code utilisateur est traité de façon particulière dans le cas des modèles d'import-export : si un utilisateur n'a pas le droit d'exécution, il ne pourra pas utiliser le modèles pour importer ou exporter des données.

  • Script standard (champ TRTIMP)

Définit le traitement standard dans lequel que se trouvent les étiquettes des actions qui sont appelées dans les traitements d'import-export.

Ces traitements permettent de faire des initialisations, des contrôles complémentaires, et des mises à jour si nécessaire. On trouvera en annexe technique la structure d'un tel programme. Il est à noter que des traitements standards nommés en général IMPXXX, XXX étant le code de l'import, sont fournis pour un certain nombre d'imports.

Pour plus d'information sur ces actions, cf. la documentation annexe correspondante.

  • Script spécifique (champ SPEIMP)

Définit le traitement spécifique, qui est appelé avant le traitement standard, et qui permet de réaliser les mêmes actions en désactivant si nécessaire ce que fait le traitement standard.

Les actions possibles sont notamment des initialisations, des contrôles complémentaires, et des mises à jour si nécessaire.

Pour plus d'information sur ces actions, cf. la documentation annexe correspondante.

Structure

  • Type de fichier (champ TYPFIL)

Définit la structure utilisée pour gérer les données dans le fichier à importer ou exporter. Pour plus d'informations, cf. le paragraphe correspondant.

  • Séparateur de champ (champ SEPFLD)

Définit le séparateur entre deux champs.

Pour saisir un caractère non imprimable, il faut entrer un '\' (barre de fraction inversée) suivi de 3 chiffres représentant le code ascii du caractère en base décimale.

  • Sép enregistrement (champ SEPREC)

Définit le séparateur entre deux enregistrements (groupes de données).

Pour saisir un caractère non imprimable, il faut entrer un '\' (barre de fraction inversée) suivi de 3 chiffres représentant le code ascii du caractère en base décimale.

Souvent, on utilise :

  • le caractère line feed (\010), qui correspond à la fin de ligne dans des fichiers textes sous Unix
  • la combinaison des deux caractères carriage return, line feed (\013\010)n qui correspond à la fin de ligne dans des fichiers textes Windows.
  • Délimiteur de champ (champ FLDLIM)

Le délimiteur de champ (généralement le caractère " ) est ajouté en première et dernière position des champs de type alphanumérique. Les champs numériques et dates ne sont pas concernés par ce délimiteur.

Il s'agit fréquemment d'un des caractères suivants :

  • 'simple quote'
  • "double quote"
  • Format fichier (champ CODDBA)

Définit le format des caractères utilisés dans le fichier :

  • ascii est le format classique où un caractère équivaut à un octet dans le fichier. Ce type de format permet de traiter les caractères occidentaux classiques, avec différents jeux de caractères possibles, définis dans le champ correspondant.
  • utf8 correspond à un format UNICODE où le nombre de caractères est variables (il va de 1 à 4, 1 correspondant au jeu de caractère latin non accentués). Ce format permet de gérer tous les types de caractères, et notamment les caractères chinois.
  • ucs2 correspond à un format standard Microsoft, dans lequel les caractères sont systématiquement stockés sur 2 octets.

Export

  • Export (champ EXPORT)

Si cette zone est cochée, il sera possible d'utiliser ce modèle en Export de données.

  • Chrono export (champ CHRNUM)

Ce champ, uniquement affiché, stocke la valeur du numéro de chrono lorsque le dernier export a eu lieu. Ceci permet, lorsqu'on réalise des exports chronologiques, de ne traiter que ce qui a été modifié depuis que le dernier export a eu lieu.

Transcodage

  • Jeu de caractères (champ OPTCHA)

Lorsqu'on utilise le jeu de caractère ascii, il est possible d'utiliser différents formats standardisés :

  • Le code ISO 8859 (qui est par ailleurs le jeu interne d'Adonix lorsqu'on travaille en ascii)
  • Le code IBM PC
  • Le code ASCII 7 bits (sans accents : les lettres accentuées sont converties dans la minuscule correspondante.)
  • Séparateur décimal (champ SEPDEC)

Définit le séparateur décimal utilisé pour les chiffres. Si cette zone est vide, on va considérer que le séparateur décimal est le '.' (point).

  • Format des dates (champ OPTDAT)

Définit la manière dont sont codés les champs de type date (ordre et nombre de caractères pour l'année). 

Seul l'ordre des chiffres et le nombre de caractères de l'année peut ainsi être spécifié. A l'import, d'éventuels caractères de séparation entre champs sont filtrés; ainsi des dates sous la forme 29-05-59, ou 09/04/1991 sont décodés correctement.

Le sous-programme de décodage tient compte de la variable adxdcs du moteur, renseignée par le paramètre DCS se trouvant dans les paramètres généraux pour définir la manière dont est décodée une année sur deux chiffres. DCS représente l'année « pivot » qui définit le changement de siècle.

Par exemple, si DCS vaut 1940, toute année sur deux chiffres inférieure ou égale à 40 sera considérée comme faisant partie du vingt-et-unième siècle, et toute année supérieure sera considérée comme faisant partie du vingtième siècle. On sera ainsi capable d'exprimer les années entre 1940 et 2039 sur deux chiffres.

Le format AAAA-MM-JJ est réservé pour les exports de type XML.

  • champ LIBDAT

Intitulé associé au code précédent.

  • Format menus locaux (champ OPTMNL)

Les champs de type "menu local" sont stockés sous forme d'un nombre représentant leur rang dans la table.

Selon la valeur de cette zone le modèle va exporter (ou s'attendre à trouver en import) :

  • 0 : dans ce cas, on écrit le choix sous la forme d'un chiffre indiquant le rang du menu dans la table : 1 pour le premier choix, 2 pour le deuxième, etc. Ceci correspond d'ailleurs au format interne sous lequel le menu local est stocké dans la base.
  • 1 : on écrit alors le choix en utilisant le code (sur un caractère) associé à chaque choix de menu local. Ce code n'est pas visible en gestion des menus locaux. Il peut être défini dans les fonctions de développement, en gestion des messages : on a la possibilité de saisir ce code interne (qui ne sert qu'à cette fin, ce n'est plus, comme dans d'anciennes versions caractères, un accélérateur de saisie).
  • n : (n>1) les n premiers caractères du libellé affiché en saisie. Lorsqu'on utilise cette option, l'algorithme de reconnaissance recherche sur le premier caractère, puis sur le deuxième, et ainsi de suite, jusqu'à ce qu'un seul intitulé corresponde. Ainsi, si on cherche à reconnaître CHQ dans un menu local dont les intitulés sont Espèces, Virement, Chèque, Traite, Carte Bleue, l'algorithme va reconnaître Chèque (seul intitulé dont les deux premières lettres correspondent).

Compte tenu du fait que les intitulés du menu local ne sont que des libellés utilisés en affichage, la valeur stockée dans la base étant le rang dans la table, il est parfaitement possible de changer l'intitulé des menus locaux le temps d'un import, pour que l'algorithme de reconnaissance fonctionne correctement. Attention toutefois, le fait de changer des intitulés de menus locaux ne peut être fait qu'en mode mono-utilisateur, aussi ceci n'est pas envisageable dans des transferts réguliers ou automatisés.

  • champ LIBMNL

Intitulé associé au code précédent.

Import

  • Import (champ IMPORT)

Si cette zone est cochée, il sera possible d'utiliser ce modèle en Importation de données.

  • Mise à jour autorisée (champ OPTUPD)

Permet d'autoriser la modification d'un enregistrement existant pendant l'import

  • Sas (champ AOWSTA)

Lorsque cette case est cochée, l'import de données alimente le sas d'import-export avec les données erronées. Le fait d'alimenter le sas n'empêche pas par ailleurs de créer un fichier d'erreur.

  • Import spécial (champ OPTSPE)

Signale que l'intégration des données dans la base se fait en utilisant des actions spécifiques définies dans le traitement dont le nom est donné dans la rubrique Traitement import. Ce traitement spécifique possède un nombre restreint de points d'entrée et nécessite donc d'écrire un traitement incluant tous les contrôles que l'on, souhaite faire.

Son intérêt réside dans le fait qu'on peut ainsi regrouper des contrôles afin d'optimiser le programme d'import. La structure des traitements d'imports spécifique est décrite en annexe.On devra notamment y trouver les actions suivantes :

  • une étiquette $RAZCRE qui est directement appelée par l'import.
  • une étiquette $SAIMSK qui est directement appelée par l'import à chaque enregistrement lu et remplace le Call SAIMSK standard (affectation et contrôle des zones du masque à partir de la classe [F])
  • Workflow (champ ENAWRK)

Si cette case n'est pas cochée, les événements de workflow relatifs aux opérations élémentaires (création, modification en gestion d'objet) ne sont plus appelés. Ainsi, si on lance des imports aboutissant à des mises à jour en masse, on évite le déclenchement d'une multitude d'événements de ce type, ce qui peut être préjudiciable aux performances de l'import et provoquer l'envoi de messages en masse.

Pour autant, les événements de workflow relatifs au déclenchement de l'import ne sont pas désactivés.

Tableau Identificateurs

  • No (champ NUMFLG)

 

  • Niveau (champ FLGLEV)

Définit le niveau d'imbrication du groupe. Le niveau 1 est le niveau principal, un niveau N+1 définit un sous-détail du niveau N qui le précède.

  • Indicateur (champ FLGREC)

Identifie le groupe par un code de 5 caractères maximum, code qui sera repris dans le tableau des champs de l'onglet suivant, et dans le fichier lui-même, comme en-tête de groupe.

Ce tableau des indicateurs définit la structure des groupes d'enregistrements. Cf le paragraphe correspondant.

  • Clé (champ FLGKEY)

Définit la clé de la table liée utilisée pour accéder au détail des enregistrement du groupe, à partir de valeurs de champs des tables de niveau supérieur utilisées dans l'expression de lien.

  • Lien (champ FLGLNK)

Définit l'expression de lien, c'est-à-dire une suite de valeurs, séparées par un point-virgule, qui donne les valeurs de clé qui lient la table de détail à l'enregistrement d'en-tête.

  • Longueur (champ RECLEN)

Dans le cas d'un type de fichier de longueur fixe, il faut indiquer le nombre de caractères de chaque enregistrement.

Fermer

 

Onglet Champs

Présentation

Dans ce tableau, on définit les différents champs à importer, organisés en groupes identifiés par la colonne Code, dans laquelle on retrouve l'un des codes définis dans le tableau des indicateurs du premier onglet (le champ peut rester vide si aucune table n'a été définie).

Cet onglet contient le tableau définissant la structure détaillée des groupes existants dans le premier onglet. Il est à noter :

  • Qu'il n'est pas obligatoire de définir des champs dans tous les groupes (en effet, certains peuvent n'être que des groupes « techniques » définissant des liens). Imaginons par exemple que l'on veuille exporter des champs de l'en-tête de commande et des champs issus de la fiche du client payeur, et ce dans un seul groupe de données (on ne désire pas avoir de séparateur de groupe de données). On sera dans ce cas amené à définir deux groupes (le premier définissant le parcours sur les commandes, le deuxième associé au client avec le lien approprié). On ne mettra, par contre, dans l'onglet champ, que des lignes associées au deuxième groupe. Ces lignes pourront inclure à la fois des informations extraites du client et de l'en-tête de la commande (puisque les deux sont en ligne).
  • Qu'il est impératif de définir pour chaque groupe la position où se trouve le séparateur de groupe dès lors qu'il s'agit d'un modèle utilisable en import et qu'il y a plusieurs groupes. C'est le pseudo champ / (slash) qui permet de définir ceci.
  • Que les blocs doivent être rangés de façon séquentielle : lorsqu'un bloc de niveau inférieur existe, il doit suivre le bloc auquel il est lié.

Fermer

 

Champs

Les champs suivants sont présents dans cet onglet :

Tableau Champs

  • No (champ NUMLIG)

 

  • Indicateur (champ TYP)

Cette zone, n'est saisie que si le tableau des identificateurs de groupes de l'onglet précédent n'est pas vide. Elle permet de rattacher l'information à exporter ou importer à un groupe de données.

Définit la table de la base de données où est définie la donnée à importer ou exporter. Il est à noter que :

  • Ce champ est obligatoire même s'il ne sert pas forcément (si on est dans un modèle d'export et que l'on définit une expression calculée, celle-ci peut référencer des champs issus de plusieurs tables).
  • La table en question n'est pas forcément la table principale associée au groupe, mais peut être une table liée à la table principale de ce groupe ou d'un des groupes précédents de niveau supérieur. Si aucun lien n'est trouvé, une message d'avertissement est affiché : Lien automatique non géré. Cela signifie qu'il est du ressort du traitement d'import ou d'export (saisi dans le premier onglet) de réaliser ce lien manuellement (en déclarant par exemple la table dans l'action IMP_OUVRE, et la lecture de la table dans l'action IMP_LIENS).
  • Champ (champ FLD)

Permet d'indiquer le nom de la zone de la table à importer ou exporter. Différentes syntaxes sont ici possibles pour définir les informations à extraire ou intégrer :

  • Le caractère /  (slash) signifie qu'un indicateur de groupe est écrit à l'export ou recherché lors de l'import. Dans un modèle permettant l'import, lorsque plusieurs groupes existent, ce séparateur est obligatoire pour chaque groupe. Le séparateur de groupe est censé être un champ normal (encadré par des séparateurs de champs et des délimiteurs si un modèle de type Délimité est utilisé).
  • La syntaxe la plus simple est CHAMP(indice), lorsqu'un champ issu de la table déclarée dans la colonne précédente est importé ou exporté.  Une fenêtre de sélection permet de faire apparaître les champs possibles.
  • Si on saisit ici une constante chaîne de caractères encadrée entre des double-quotes ( " ), le champ sera écrit tel quel dans le fichier en export, et ignoré en import.
  • Si on ne saisit rien, ceci signifie qu'il y aura un champ vide dans le fichier exporté (encadré par des délimiteurs de champ si le modèle est de type Délimité). En import, cela signifie que le champ correspondant doit être ignoré.
  • La syntaxe *N, où N est un nombre compris entre 1 et 99, est également possible. Ceci permet d'affecter (en import) ou de lire (en export) la variable GIMP(N). GIMP est une variable globale, de type chaîne de caractères, de longueur maximale égale à 100, qui devra être affectée dans un traitement spécifique associé à l'import ou à l'export.
  • La dernière possibilité, utilisable uniquement en export, consiste à définir une expression calculée quelconque, précédée du signe égale ( = ). Cette expression, qui peut faire appel à des constantes, des fonctions, des variables, des opérateurs, et des champs issus de tables en ligne, est vérifiée syntaxiquement à la saisie (le contrôle du contexte, en particulier le fait que les variables existent, ne peut bien sûr pas être vérifié).
  • Intitulé (champ COM)

Indiquer un commentaire pour faciliter lacompréhension du paramètrage.

  • Borne (champ SEL)

Trois choix sont possibles dans cette zone :

  • Non saisiesignifie qu'aucune borne de début-fin pour ce champ ne sera saisie au lancement de l'export.
  • Saisiesignifie qu'une borne de début-fin pour ce champ pourra être saisie au lancement de l'export.
  • Non transféréesignifie qu'une borne de début-fin pourra être saisie pour ce champ au lancement de l'export, mais que le champ ne sera pas transféré lors d'un import ou d'un export.
  • Position (champ LOC)

Cette colonne n'est utile que dans le cas d'un format en longueur fixe ; dans ce cas, la position donne le décalage par rapport au début du bloc ou de l'enregistrement ( positions données en nombre d'octets, 1 signifiant que l'on se trouve au début du bloc ou de l'enregistrement). Les positions doivent être compatibles avec la taille de l'enregistrement.

  • Longueur (champ LNG)

Cette zone détermine la longueurdu champ sur le fichier séquentiel.

  • Format (champ FMT)

Cette colonne n'est saisie que si le format est en longueur fixe. Pour les montants numériques, le format saisi est défini sous la forme nnn ou nnn.mmm, sachant que ces chiffres peuvent être préfixés par < ou > (cadrage gauche ou droite en complétant avec des zéros, le formattage droit étant utilisé par défaut), préfixés ou post-fixés par le caractère + (signe obligatoire avant/après le chiffre), et préfixé par le caractère * (le séparateur décimal ne doit pas apparaître). Le tableau ci-dessous montre des exemples, de formattage pour un montant donné (les espaces sont ici remplacés par des # ) :

Format

Montant

Résultat du formattage

7.2

123.456

####123.45

7.2

-123.456

### -123.45

>7.2

123.456

0000123.45

>7.2

-123.456

-000123.45

<7.2

123.456

123.45####

<7.2

-123.456

- 123.45###

6.2+

123.456

###123.45+

>6 .2+

123.456

000123.45+

<6.2+

-123.456

123.45-###

Pour un format alphanumérique, les seules directives de formatage possibles sont < ou > (cadrage à droite ou à gauche, sachant que les chaînes de caractères sont complétées par des espaces).

  • Pattern (champ PATTERN)

Ce champ est utilisé lorsqu'on réalise des imports/exports au format XML.

En effet, lorsqu'un fichier XML est créée, on a besoin de davantage d'informations, notamment pour pouvoir créer un fichier XSD décrivant la structure du fichier XML et ainsi contrôler sa validité avec des outils de vérification de syntaxe intégrés aux différents logiciels ETL.

Ce champ définit si un modèle doit être associé à la description faite dans la description XSD.

Si ce champ est renseigné, le fichier XSD contiendra une spécification de type :

pattern value="valeur_saisie_dans_le champ_pattern"

On retrouvera dans des tutoriels en ligne (tel celui-ci) les syntaxes qui peuvent être utilisées pour les patterns.

  • Balise (champ BAL)

Ce champ est utilisé lorsqu'on réalise des imports/exports au format XML.

En effet, lorsqu'un fichier XML est créée, on a besoin de davantage d'informations, notamment pour pouvoir créer un fichier XSD décrivant la structure du fichier XML et ainsi contrôler sa validité avec des outils de vérification de syntaxe intégrés aux différents logiciels ETL.

Ce champ définit le code de la balise décrivant le champ exporté dans le modèle, telle qu'elle apparaîtra dans le fichier XML.

  • Obligatoire (champ OBL)

Ce champ est utilisé lorsqu'on réalise des imports/exports au format XML.

En effet, lorsqu'un fichier XML est créée, on a besoin de davantage d'informations, notamment pour pouvoir créer un fichier XSD décrivant la structure du fichier XML et ainsi contrôler sa validité avec des outils de vérification de syntaxe intégrés aux différents logiciels ETL.

Ce champ définit si le champ est obligatoire ou non. Si la valeur de ce champ est égal à Oui, le fichier XSL contiendra une spécification de type minOccurs="1"

Ce numéro, s'il existe, fait référence à une table de transcodage utilisable pour transcoder le champ lu et le rendre conforme au format attendu.

Génération du fichier

  • champ TYPEXP

 

  • Fichier de données (champ FILEXT)

Permet de définir le chemin d'un fichier de données par défaut qui sera proposé lors du lancement de l'import ou de l'export (et utilisé de façon automatique en cas de lancement d'un enchaînement d'import ou d'export).  Si le chemin fichier est relatif,  le répertoire de base est supposé être le répertoire de base d'installation du progiciel.

Le chemin peut intégrer le caractère #. Si c'est le cas, il y aura gestion des numéros séquentiels :

  • En import, cela signifie que l'on va rechercher tous les fichiers dont le modèle correspond au chemin, avec # représentant 5 chiffres (on intègre ces fichiers dans l'ordre croissant des numéros)
  • En export, cela signifie que l'on crée un fichier intégrant la valeur formattée du compteur [C]EXPORT sur 5 chiffres . Ceci va normalement de pair avec le fait de cocher la case Gestion chrono lors du lancement de la fonction d'export.

Par exemple, si le chrono export est égal à 156, /u/tmp/fic# permet de générer le fichier /u/tmp/fic00156.

  • Répertoire final (champ REPFIN)

Permet d'imposer un répertoire final dans lequel le fichier va être transféré après avoir été importé. En l'absence de valeur, on utilise le répertoire donné dans les paramètres généraux de l'import/export.

Fermer

 

Icône Actions

Sélection d'un champ

Champs

Les champs suivants sont présents dans cette fenêtre :

Bloc numéro 1

Définit la table dont on veut sélectionner les champs à insérer.

Tableau

  • No (champ NUMLIG)

 

  • Zone (champ CODZONE)

On définit dans cette colonne le nom de zone de la table telle qu'elle sera définie dans le progiciel (un champ de nom NOMCHAMP défini dans une table d'abréviation ABV pourra être accédé par la syntaxe [F:ABV]NOMCHAMP ).

Pour les champs créés en spécifique, le nom de zone doit commencer par X_, Y_ ou Z_.

Dans la base de données, chaque zone correspond à un ou plusieurs champs (selon que la zone est ou non dimensionnée : les champs correspondants s'appellent NOMCHAMP_0, NOMCHAMP_1, NOMCHAMP_2…)

Pour saisir et afficher le champ correspondant dans un écran, on lui donnera le même nom dans le dictionnaire des écrans, et on utilisera simultanément l'écran et la table en gestion d'objet.

  • Intitulé (champ INTITCOURT)

Intitulé associé au code précédent.

  • Sélection (champ SELECT)

Si le champ est égal à Ouila zone est insérée dans le tableau principal. Par défaut, les champs non présents dans le tableau principal sont proposés à Oui, et ceux présents sans le tableau principal sont proposés à Non.

Fermer

Permet d'insérer globalement un ensemble de champs issus d'une table dans un modèle, à partir de la ligne courante du tableau.

Recalcul positions indicateur

Cette fonction n'est présente que pour les modèles avec un type de fichier en longueur fixe. Elle permet de recalculer la position de chacun des champs du groupe de données courant (ayant le même l'indicateur de la ligne). Le recalcul se fait en partant de la position 1 sur le premier champ du groupe, et en y ajoutant la longueur de chaque champ pour obtenir la position du champ suivant.

 

Fermer

 

Etats

Par défaut, les états suivants sont associés à la fonction :

 PRTSCR : Impression écran

Mais ceci peut être modifié par paramétrage.

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.

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

Tableau Bornes

  • Zone (champ BNOM)

Définit le nom du champ pour lequel une borne peut être saisie.

  • Valeur début (champ BDEB)

Permet de saisir des bornes de début et de fin pour chaque champ défini comme critère saisi ou non affiché dans le tableau des champs. Si un champ vide est saisi, on considère qu'il n'y a pas de bornes. Ces bornes seront proposées par défaut lors de l'export.

  • Valeur fin (champ BFIN)

 

Tableau Critères

Les tables mises en oeuvre dans le modèle d'import/export sont listées ici, afin de permettre de définir un filtrage éventuel des données exportées.

  • Critère (champ FLGEXP)

Permet de définir une condition logique mettant en oeuvre les champs de la table. Seules les lignes répondant à cette condition pourront être exportées.

Fermer

Donne accès à un écran dans lequel on peut définir des valeurs par défaut de critères pour filtrer les données exportées. Lorsqu'on lance l'export, les critères sont affichés et peuvent être modifiés ; lorsqu'on lance un enchaînement d'exports, les critères sont automatiquement appliqués sans saisie, sur chacun des modèles pour lesquels ils ont été définis.

Barre de menu

Options / Export schéma d'un modèle

Cette fonction, accessible lorsque le format d'export est XML, permet de produire un fichier XSD décrivant la structure du fichier créé par le modèle. Ce fichier est créé dans le sous-répertoire suivant du répertoire où se trouvent les dossiers sur le serveur d'application :

 X3_PUB/DOSSIER/GEN/ALL/WEBS    (où DOSSIER est le nom du dossier courant)

Le nom de ce fichier est WWIMPMODELE.xsd  (MODELE étant le nom du modèle d'import-export).

Ce fichier XSD définit le format des données afin de permettre un contrôle préliminaire de validité syntaxique par des outils de type ETL. La syntaxe obtenue intègre (outre des en-têtes standard) des lignes du type :

  • Lignes décrivant les groupes et les lignes (ici un modèle ADI et des champs CODE et NUMTAB, dont les balises sont ADI_CODE et ADI_NUMTAB).

<xs:complexType name="ADI">

<xs:sequence>

<xs:element name="ADI_NUMTAB" type="ADI_NUMTAB" minOccurs="1" maxOccurs="1"/>

<xs:element name="ADI_CODE" type="ADI_CODE" minOccurs="0" maxOccurs="1"/>

...

</xs:sequence>

</xs:complexType>

  • Lignes décrivant les types de données :

<xs:simpleType name="ADI_NUMTAB">

<xs:restriction base="xs:int">

<xs:minExclusive value="-32768"/>

<xs:maxExclusive value="32767"/>

</xs:restriction>

</xs:simpleType>

<xs:simpleType name="ADI_CODE">

<xs:restriction base="xs:string"/>

<xs:maxLength value="5"/>

<xs:pattern value="{[A-Z]}*"/>

</xs:restriction>

</xs:simpleType>

On voit ici des exemples de champs de type numérique, puis alphabétique. Quelques commentaires à propos de la façon dont est générée cette syntaxe :

  • Le nom de chaque champ (ici, ADI_CODE et ADI_NUMTAB) correspond au contenu de la colonne "balise" du modèle.
  • La rubrique pattern est directement issue de la colonne "pattern" dans le modèle (ici, la syntaxe proposée correspond à un nombre quelconque de caractères alphabétiques majuscules)
  • Les rubriques minOccurs et maxOccurs sont renseignées en tenant compte de la colonne "obligatoire" du modèle
  • Les types de données, qui peuvent être, selon les cas, "xs:string", "xs:int", "xs:decimal", "xs:date", "xs:base64Binary","xs:boolean", sont issues du type de données X3 correspondants, ainsi que la rubrique maxLength, et les rubriques maxExclusive, minExclusive, maxInclusive, minInclusive selon les cas.

Documentation / Paragraphes

Cette fonction permet d'accéder à la gestion de la documentation, sur le premier paragraphe de la documentation (si elle existe) associé à la fiche courante.

Documentation / Liens

Cette fonction permet d'accéder à la gestion des liens. Elle permet de définir des liens entre la fiche courante et d'autres fiches (par exemple des liens entre fonctions et paramètres). Ces liens, purement documentaires, permettent d'alimenter la mécanique de génération des squelettes de documentation.

Documentation / Génération

Ce menu permet de lancer une génération de documentation. La génération peut se lancer également à partir du bouton [Génération] dans le bas de la fenêtre.

Trois types de génération peuvent être lancées, séparément ou simultanément :

  • la génération du squelette de documentation à partir du dictionnaire (tables ADOCUMENT, ADOCBLB, ADOCCLB).
  • la génération de la documentation à partir des tables précédentes.
  • la génération de la documentation sur champ.

Les bornes proposées par défaut tiennent compte de la fiche en cours, mais elles peuvent être modifiées au lancement.

Messages d'erreur

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

Import impossible sur cet objet

L'objet n'a pas été défini comme importable (case à cocher Import non cochée dans l'onglet Divers).

Code déjà existant en ligne nnn

On saisit deux fois le même code associé à des groupes différents.

ZZZ zone inexistante (XXXXXX, YYYYY, ... )

Ce message est affiché lorsqu'on exprime un lien dans le tableau des groupes en utilisant un champ ZZZ qui n'est référencé dans aucune des tables (XXXXX, YYYYY, ...) définies dans les lignes précédentes.

G séparateur (/) non référencé dans les champs. Interdit sur un modèle d'import

Dans le tableau des champs, pour le groupe G, on n'a pas de ligne indiquant l'endroit où se trouve l'identificateur de groupe (syntaxe /).

Lien impossible. Interdit sur un modèle d'import

On a tenté, dans le lignes décrivant les champs, d'insérer un champ issu d'une table qui ne peut pas être liée à la table principale du groupe.

Longueur incorrecte nnn<>mmm

La longueur définie par le format numérique (mmm) est différente de la longueur du champ définie dans la colonne précédente (nnn).

Remarque :

Aucun test d'existence de répertoire n'est fait sur le chemin défini par défaut dans le modèle (le répertoire peut très bien ne pas encore exister : ce contrôle ne sera fait qu'au lancement de l'import ou de l'export)

Tables mises en oeuvre

SEEREFERTTO Reportez-vous à la documentation de Mise en oeuvre

Conseils de mise en oeuvre

Principes de base

Lorsque l'on paramètre un modèle d'import, il faut avoir à l'esprit ces quelques principes :

  • L'import permet les actions de création et de modification.
  • Pour déterminer l'action à mener sur un enregistrement importé, le système effectue un test d'existence de l'objet à traiter. Ce test s'effectue en chargeant la clé primaire de l'objet avec les informations de l'enregistrement importé.
  • Par conséquent, si la clé principale n'est pas paramétrée, tous les enregistrements passeront en mode création (et ne fonctionneront que si la clé de l'objet à créer peut être affectée automatiquement, par exemple par le biais d'un compteur).
  • Un import correspond à une simulation de saisie de tous les écrans liés à l'objet importé.
  • Il traite toutes les zones de l'écran en effectuant les mêmes contrôles qu'une saisie interactive.
  • Il ne prend pas en compte les zones non saisissables dans l'écran. (sauf cas particuliers et référencés) . Par conséquent, les zones paramétrées dans un modèle correspondant à une zone non saisissable ne sont pas importées.
  • L'ordre dans lequel sont paramétrées les zones à l'intérieur d'un enregistrement n'a pas d'importance. L'import charge d'abord toutes les zones du fichier puis les importe dans l'ordre des champs dans les écrans.

Modèles standard fournis

Autant l'export de données est toujours possible quel que soit l'objet, autant l'import ne l'est pas toujours. Les mécanismes automatiques de décodage des flux de données et l'appel des contrôles liés à l'objet automatise grandement l'import, mais ne suffit pas pour permettre un import automatique sur les objets complexes. Ainsi, tout objet n'est pas importable.

Dans le dossier de référence, un modèle d'import (modifiable) est fourni pour chaque objet dont l'import est possible. Il peut néanmoins y avoir des spécificités liées à cet import : ceci est défini dans l'aide en ligne associée au modèle d'imports pour lesquels des particularités existent (cette aide est accessible par Alt + F1 lorsque le modèle est chargé).

On trouvera la liste des aides correspondantes (classées par module) à partir du lien suivant.

Tableau des identificateurs

Le choix de la structure des fichiers à importer ou exporter dépend des possibilités d'extraction ou d'intégration que l'on trouve dans le progiciel avec lequel on veut dialoguer.

Dans tous les cas, les données doivent être organisées en groupes logiques de lignes, qui peuvent être de types différents (en-tête, détail, sous-détail, par exemple), ou d'un type unique. L'organisation de ces groupes est définie dans le tableau des identificateurs situé sur le premier onglet du modèle.

Chaque groupe est associé à une des tables de la base de données (la première est forcément la table principale de l'objet, les suivantes sont définies par des liens à partir des précédentes). Lorsqu'on utilise le modèle pour réaliser un export d'objet, il est possible de définir des liens avec n'importe quelle table de la base sur laquelle un lien théorique existe, afin d'extraire des données liées. Par contre, pour un modèle d'import, seules les tables mise à jour par l'objet sont effectivement utilisables : il est par exemple vain d'espérer importer simultanément la commande et le client, l'objet commande n'ayant pas été prévu pour cela.

Il est important de noter que ce tableau peut être vide si une structure de données à importer ou exporter est basée sur le parcours de la seule table principale (dans ce cas, la colonne Code de la page suivante restera vide). Il n'est pas non plus nécessaire de faire plusieurs groupes de données si plusieurs tables liées doivent être exportées simultanément. En effet, si on fait apparaître, dans un même groupe de données, des zones extraites de différentes tables, le traitement d'export va tenter de résoudre les liens entre tables en utilisant la structure des liens décrite dans le dictionnaire. Ceci suppose bien évidemment que l'on n'ait qu'un seul lien possible de la table principale du groupe vers la table décrite (sinon, le premier lien rencontré va être utilisé, et il se peut que ce ne soit pas le bon).

Il y a un cas particulier où il est nécessaire de créer au moins un groupe : si le modèle est défini en longueur fixe (dans ce cas, il est en effet nécessaire que l'on définisse quelque part une longueur d'enregistrement, et ceci se fait dans le tableau des groupes). Si on ne désire pas que l'indicateur de groupe soit obligatoirement présent dans la liste des champs, il suffit de définir ce groupe avec un code vide : seul un groupe pourra alors être défini, et la colonne Code ne sera plus saisie dans l'onglet suivant.

Le tableau des identificateurs n'est accessible en saisie que si l'objet est de type simple. Si on définit des identificateurs de groupe, on associe à chaque identificateur un niveau, une table, et des conditions de liens qui permettent relier les lignes entre elles.

Le niveau vaut 1 pour la table principale à importer ou exporter (qui n'est pas saisie dans le tableau, mais déduite de l'objet associé au modèle).

Pour toute table liée à une table précédente, le niveau est égal au niveau de la table précédente si un lien biunivoque existe entre les deux tables, et vaut ce niveau plus un si plusieurs enregistrements sont liés à un enregistrement de la table précédente. Le lien est caractérisé par la clé de la table destination à lire, et par l'expression des segments de clés dont la valeur définit les lignes liées.

Imaginons par exemple que l'on définisse des groupes selon l'exemple ci-dessous :

Niveau

Groupe

1

A

2

B

2

C

3

D

On obtiendra alors l'imbrication suivante d'informations :

Groupe A enregistrement 1

 

 

 

Groupe B enregistrement 1.1

 

 

Groupe B enregistrement 1.2

 

 

...

 

 

Groupe B enregistrement 1.N

 

 

Groupe C enregistrement 1.1

 

 

 

Groupe D enregistrement 1.1.1

 

 

Groupe D enregistrement 1.1.2

 

 

...

 

 

Groupe D enregistrement 1.1.M

 

Groupe C enregistrement 1.2

 

 

 

Groupe D enregistrement 1.2.1

 

 

...

 

Groupe C enregistrement 1.Q

 

 

 

Groupe D enregistrement 1.Q.1

 

 

...

 

 

Groupe D enregistrement 1.Q.R

Groupe A enregistrement 2

 

 

 

Groupe B enregistrement 2.1

 

 

...

 

Exemple de groupes

Pour illustrer ce paramétrage, on peut prendre l'exemple d'un modèle (d'export uniquement) mettant en jeu les sociétés et sites :

  • La table principale, qui s'appelle COMPANY, est au niveau 1.
  • Imaginons que l'on désire intégrer des informations liées à la devise comptable (champ ACCCUR) dans le fichier exporté. Dans ce cas, il est possible de ne pas définir de nouveau groupe lié à la table société, mais simplement de définir des champs de la table TABCUR dans le groupe. Le moteur d'export va alors parcourir le dictionnaire pour chercher un lien entre la table COMPANY et la table TABCUR.  Comme il y en a plusieurs, c'est le premier qui va être utilisé (dans notre cas, c'est le lien qui nous intéresse).
  • Si on avait voulu exporter des informations liées à la devise du capital social (champ RGCCUR), il aurait fallu créer un deuxième groupe de  données, de niveau 1 également, basé sur la table TABCUR, en donnat RGCCUR dans la colonne lien. C'est également ce que l'on serait amené à faire si le lien n'était pas explicite; par exemple, le champ CREUSR, qui correspond au code de l'utilisateur ayant créé la fiche, utilise un type générique (A) qui ne permet pas de faire le lien de façon automatique. Si donc on avait voulu faire figurer des informations relatives à l'utilisateur ayant créé la fiche, il aurait fallu définir le lien par un groupe.
  • Supposons qu'ensuite on veuille faire apparaître la liste des sites rattachés à la société. On va alors créer un groupe de niveau 2, utilisant la table FACILITY, avec un lien basé sur l'index FCY0 prenant comme valeur le champ CPY de la table principale.
  • Enfin, si on désire extraire les valeurs de paramètres directement rattachées à chaque société, on va créer un deuxième groupes de données de niveau 2, utilisant la table ADOVAL, avec un lien basé sur l'index ADW0 prenant comme valeur le champ CPY de la table principale.

Le tableau ci-dessous résume le tableau des Identificateurs tels qu'il serait saisi :

Niveau

Code

Table

Clé

Lien

1

CPY

COMPANY

CPY0

 

 enregistrement principal du groupe

1

CUR

TABCUR

TCU0

[CPY]RGCCUR

 1 enregistrement lié

2

FCY

FACILITY

FCY1

[CPY]CPY

 N enregistrements liés

2

ADP

ADOVAL

ADW0

[CPY]CPY

 M enregistrements liés

Les différents formats de fichier

Les formats de fichier sont déterminés par le type, qui peut prendre l'une des valeurs ci dessous.

Séparateur de champ

Il s'agit d'un fichier en longueur variable, dont tous les champs sont séparés par un séparateur (le séparateur de champ noté SC).

Champ 1 enregistrement 1

SC

Champ 2 enregistrement 1

SC

...

Champ N enregistrement 1

SC

Champ 1 enregistrement 2

SC

Champ 2 enregistrement 2

SC

...

Champ N enregistrement 2

SC

Séparateur d'enregistrement

Il s'agit d'un fichier en longueur variable, dont tous les champs sont séparés par un séparateur (le séparateur de champ). Lorsqu'un enregistrement est terminé, un autre séparateur (le séparateur de ligne noté SL) vient remplacer le séparateur de champ.

Champ 1 enregistrement 1

SC

Champ 2 enregistrement 1

SC

...

Champ N enregistrement 1

SL

Champ 1 enregistrement 2

SC

Champ 2 enregistrement 2

SC

...

Champ N enregistrement 2

SL

Format Délimité

Il s'agit d'un fichier en longueur variable de même type que le fichier 'séparateur d'enregistrement' (deux séparateurs distincts). Mais en plus, les champs de type chaîne de caractères sont encadrés par un délimiteur de champ (noté DC, dans l'exemple ci-dessous, le deuxième champ est de type alphanumérique).

Champ 1 enregistrement 1

SC

DC

Champ 2 enregistrement 1

DC

SC

...

Champ N enregistrement 1

SL

Champ 1 enregistrement 2

SC

DC

Champ 2 enregistrement 2

DC

SC

...

Champ N enregistrement 2

SL

Format en longueur fixe

Il s'agit d'un fichier dont les champs sont définis en longueur fixe, sans séparateur de champ. La longueur totale de l'enregistrement doit alors être donnée en paramètre. Il peut y avoir un séparateur de ligne. Si c'est le cas, sa longueur ne doit pas être décomptée dans la longueur de l'enregistrement.

On définit de même la longueur de chaque groupe lorsque des groupes de données sont définis dans le tableau des indicateurs.

Chp 1 enreg 1

< ---------Champ 2 enregistrement 1------------ >

...

< --Champ N enregistrement 1-- >

SL

Chp 1 enreg 2

< ---------Champ 2 enregistrement 2------------ >

...

< --Champ N enregistrement 2-- >

SL

Format XML

Il s'agit d'un format où les données sont définies dans des balises au format XML.

A l'export, on retrouve un ensemble d'informations important liées à la fois au modèle et à l'extraction. Le menu Options / Export schéma d'un modèle permet par ailleurs d'exporter un fichier XSD décrivant la structure du fichier créé par le modèle.
A l'import, les données utiles sont plus restreintes, on peut donc limiter celles-ci dans le fichier que l'on cherche à importer.

Format A plat

Ce format est le format variable 'Séparateur d'enregistrement' ou le format délimité (si le champ Délimiteur de champ est renseigné).

Si dans le modèle d'import/export plusieurs niveaux sont définis, une seule ligne est générée.

Indicateur niveau 1

Champ 1 enreg 1

SC

DC

Champ 2 enreg 1

DC

SC

...

Indicateur niveau 2

Champ 1 enreg 2

 

SC 

DC

Champ 2 enreg 2 

SL

Lors de l'import, l'utilisation de ce type de format a pour conséquence un regroupement de toutes les lignes de détail d'un niveau donné sous le même en-tête dès lors que tous les champs répétés dans l'en-tête sont strictement identiques.

Format entête

Ce format est le même format que le format 'A plat' plus une ligne entête supplémentaire correspondant aux intitulés des champs du modèle.

Ce format est notamment utilisé en Allemagne, pour les fichiers de type GDPDU.

Annexes techniques

On trouvera des informations complémentaires dans les annexes techniques suivantes :