Se rendre au contenu

Importer et exporter des données

À l'issue de ce chapitre

  • extraire n'importe quel ensemble d'enregistrements vers un tableur ;
  • comprendre l'identifiant externe et ce qu'il permet ;
  • charger des données sans créer de doublons ;
  • rattacher des enregistrements les uns aux autres à l'import ;
  • diagnostiquer un import en échec.

Un mécanisme unique pour toute la base

L'import et l'export ne sont pas des fonctions propres à une application. Ce sont des gestes du socle, disponibles depuis toute vue liste : produits, contacts, factures, tâches, écritures comptables, emplacements de stock. La procédure est la même partout, seuls les champs changent.

Cette généralité en fait l'outil de référence pour trois besoins :

  • la reprise de données à la mise en service, depuis l'ancien système ou depuis des tableurs ;
  • la modification en masse d'enregistrements existants : une hausse tarifaire, un changement de responsable sur trois cents dossiers ;
  • l'extraction vers un tableur, pour une analyse ou une transmission à un tiers.

Astuce

Ces trois usages reposent sur le même aller-retour : on exporte ce qui existe, on le modifie dans un tableur, on le réimporte. C'est le mode opératoire à privilégier, il garantit que le fichier a exactement la forme qu'Odoo attend.

Exporter

  1. Ouvrir la vue liste et appliquer les filtres qui délimitent le périmètre voulu.
  2. Cocher les enregistrements, ou cocher la case d'en-tête pour tout sélectionner.
  3. Cliquer sur Actions puis Exporter.
  4. Composer la liste des Champs à exporter : chercher le champ voulu dans la colonne Champs disponibles, puis cliquer sur le plus à sa droite. Il rejoint la colonne de droite.
  5. Retirer un champ de la sélection par l'icône de corbeille en regard, et modifier l'ordre des colonnes en faisant glisser un champ par sa poignée.
  6. Choisir le Format d'exportation : XLSX ou CSV.
  7. Cliquer sur Exporter.

Astuce

Les champs marqués d'un chevron se déplient : ils désignent un enregistrement lié, et leur contenu donne accès aux champs de celui-ci. C'est ainsi qu'on exporte le pays d'un contact ou le vendeur d'une commande, sans passer par un second export.

La zone de recherche en haut de la colonne évite de parcourir une liste qui compte souvent plusieurs centaines d'entrées.

Assistant d'export de données
Figure 22.1 : Assistant d'export de données

Choisir le format

Format Usage
XLSX Tableur. Lecture, mise en forme, transmission à un tiers. Les colonnes sont typées et les nombres directement exploitables.
CSV Fichier texte. Réimport, traitement automatisé, volumes importants. Format brut, sans mise en forme, mais accepté partout.

Préparer un export réimportable

La case Je veux mettre à jour les données (export compatible avec l'import) change la nature du fichier produit. Elle ajoute une colonne d'identifiant externe et n'exporte que les champs qu'Odoo saura relire.

C'est cette case qui distingue un export de consultation d'un export de travail. Sans elle, le fichier se lit mais ne se réimporte pas sans créer de doublons.

Astuce

Lorsqu'une liste de champs doit resservir (un état mensuel, un fichier destiné à un partenaire), enregistrez-la comme modèle. Le champ Modèle, en haut de la colonne de droite, propose Nouveau modèle : nommez la sélection, et elle sera proposée aux exports suivants.

L'identifiant externe

C'est la notion à comprendre avant tout import. Elle explique à la fois pourquoi un import crée des doublons et comment l'empêcher.

Chaque enregistrement d'Odoo porte un numéro interne, invisible et propre à la base. Il ne peut pas servir de repère : le produit numéro 412 d'une base n'est pas le même dans une autre. L'identifiant externe est un second nom, textuel et stable, que l'on choisit soi-même : par exemple produit_vis_m6_inox.

Il sert de clé de rapprochement à l'import :

  • si la valeur de la colonne ID externe est inconnue de la base, Odoo crée l'enregistrement et lui attribue cet identifiant ;
  • si elle est déjà connue, Odoo met à jour l'enregistrement existant au lieu d'en créer un autre.

Pourquoi c'est décisif

Sans identifiant externe, réimporter deux fois le même fichier crée deux jeux d'enregistrements. Avec lui, le second import corrige simplement le premier. C'est ce qui rend une reprise de données reprenable : on peut charger, constater une erreur, corriger le tableur et recharger, autant de fois qu'il le faut, sans jamais polluer la base.

Astuce

Adoptez une convention lisible et durable : la référence du catalogue d'origine, le code client de l'ancien système, le numéro de compte. L'identifiant externe est le pont entre les deux systèmes, et il survit à la reprise.

Importer

  1. Ouvrir la vue liste du type d'enregistrement concerné.
  2. Ouvrir le menu d'actions par l'icône d'engrenage de la barre supérieure, il n'apparaît que si aucun enregistrement n'est coché , puis cliquer sur Importer des enregistrements.
  3. Charger le fichier par Télécharger un fichier de données. Une fois l'aperçu affiché, le bouton devient Charger un fichier de données et sert à remplacer le fichier.
  4. Si le classeur comporte plusieurs onglets, désigner le bon dans Feuille :.
  5. Vérifier que Utiliser la première ligne comme en-tête est coché lorsque le fichier porte une ligne de titres.
  6. Contrôler ligne à ligne la correspondance entre la Colonne de fichier et le Champ Odoo. Odoo propose une association pour chaque colonne, qu'une croix permet de retirer et de refaire.
  7. Lire la colonne Commentaires, qui signale les erreurs mais aussi les conventions de saisie attendues.
  8. Cliquer sur Tester : Odoo analyse la totalité du fichier sans rien écrire.
  9. Corriger les erreurs, retester, puis cliquer sur Importer.

Astuce

Le volet Aide, à gauche, propose un modèle d'importation prêt à l'emploi pour les principaux types d'enregistrement : contacts, produits, commandes, tâches, employés, écritures. Il porte les bonnes colonnes, dans le bon ordre, avec une ligne d'exemple. Les modèles moins courants n'en ont pas. C'est le point de départ le plus sûr, plus encore qu'un export, puisqu'il ne contient que ce qui est réellement importable.

Assistant d'import de données
Figure 22.2 : Assistant d'import de données

Note

Tester n'écrit rien : la base reste intacte, quelles que soient les erreurs rencontrées. Il n'y a donc aucune raison de s'en dispenser.

Le volet Formatage règle l'interprétation du fichier : séparateur de colonnes, séparateur décimal, format de date, encodage. Odoo les détecte seul dans la plupart des cas ; ils se corrigent ici lorsque les nombres ou les dates sortent faux à l'aperçu.

Note

Ce volet n'apparaît que pour les fichiers CSV. Un classeur XLSX porte ses propres types de données, et ces réglages n'auraient pas d'objet : c'est d'ailleurs une raison de préférer le tableur pour une reprise, les erreurs de séparateur décimal étant la première cause de montants faux à l'import.

Rattacher des enregistrements liés

Un produit renvoie à une catégorie, un contact à un pays, une facture à un client. Ces liens se chargent par la valeur qui désigne l'enregistrement visé, selon trois écritures possibles.

Colonne Contenu Quand l'employer
Catégorie Le nom affiché Lisible, mais échoue si le nom est absent ou ambigu.
Catégorie/ID externe L'identifiant externe Le plus sûr. Insensible aux renommages et aux homonymes.
Catégorie/ID base de données Le numéro interne Réservé aux transferts entre deux copies d'une même base.

Point d'attention

Les trois écritures s'excluent : renseigner à la fois le nom et l'identifiant externe pour le même champ fait échouer la ligne, Odoo ne pouvant trancher entre les deux indications.

Pour un champ qui accepte plusieurs valeurs (les étiquettes d'un contact, les taxes d'une ligne) séparez-les par des virgules dans la même cellule : Prospect,Grand compte,Export.

Astuce

Ces colonnes composées sont pénibles à écrire de mémoire. Exportez d'abord deux ou trois enregistrements déjà corrects en cochant la case de mise à jour : les en-têtes obtenus donnent la syntaxe exacte, y compris pour les champs liés.

Mettre à jour en masse

La modification de plusieurs centaines d'enregistrements suit toujours le même aller-retour :

  1. Filtrer la liste sur les enregistrements à modifier.
  2. Les exporter en cochant Je veux mettre à jour les données (export compatible avec l'import).
  3. Ouvrir le fichier dans un tableur et modifier les seules colonnes concernées, sans toucher à la colonne d'identifiant externe.
  4. Réimporter le fichier.

Odoo reconnaît chaque ligne par son identifiant externe et applique les modifications aux enregistrements existants.

Point d'attention

Ne supprimez pas de lignes du fichier pour « ne pas les modifier » : c'est inutile, une ligne inchangée est réécrite à l'identique. Ne supprimez surtout pas la colonne d'identifiant externe, qui transformerait la mise à jour en création de doublons.

Ordonner une reprise de données

Un fichier qui référence une valeur inexistante échoue, ligne par ligne. L'ordre de chargement découle donc des dépendances : ce qui est désigné doit exister avant ce qui le désigne.

  1. Les données de référence : catégories, unités de mesure, conditions de paiement, taxes, étiquettes.
  2. Les tiers : contacts, sociétés, puis leurs adresses de livraison rattachées.
  3. Le catalogue : produits, puis tarifs fournisseurs et listes de prix.
  4. Les données de mouvement : stocks initiaux, commandes en cours, écritures d'à-nouveau.

Astuce

Sur un fichier de plusieurs milliers de lignes, isolez d'abord une vingtaine de lignes représentatives dans un fichier séparé et importez-les. Une erreur de format détectée sur vingt lignes se corrige en quelques minutes ; la même erreur constatée après le chargement complet impose une reprise.

Diagnostiquer un échec

Les erreurs signalées portent le numéro de ligne et le champ en cause. Les plus fréquentes :

Message Cause habituelle
Valeur introuvable Le nom ou l'identifiant désigné n'existe pas encore. Vérifier l'ordre d'import, l'orthographe, les espaces en fin de cellule.
Valeur ambiguë Deux enregistrements portent le même nom. Passer à l'identifiant externe.
Champ inconnu L'en-tête ne correspond à aucun champ. Corriger la correspondance dans l'assistant, ou reprendre l'en-tête d'un export.
Format de date ou de nombre Le fichier n'emploie pas les séparateurs attendus. Les ajuster dans le volet Formatage.

Point d'attention

Un import est atomique par lot, non sur la totalité du fichier. Si une ligne est refusée, aucune ligne du lot en cours n'est écrite et l'import s'arrête , mais les lots déjà traités, de 2 000 lignes par défaut, restent en base. Sur un fichier de moins de 2 000 lignes, tout se passe donc comme si l'import échouait en bloc ; au-delà, un import partiel est possible et c'est précisément ce que le champ Démarrer à la ligne permet de reprendre.

Charger de gros volumes

Au-delà de cent lignes, un volet Importation par lot apparaît dans l'assistant. Il donne accès à la Limitation des lots (le nombre de lignes traitées d'un coup, 2 000 par défaut) et au champ Démarrer à la ligne, qui permet de reprendre un chargement interrompu là où il s'est arrêté.

Note

Un volet Avancé existe également, mais il ne concerne pas les lots : réservé au mode développeur, il ne porte que deux options, le suivi de l'historique pendant l'import et la correspondance sur les sous-champs.

Note

La taille du fichier chargé est plafonnée à 128 Mo, sauf configuration serveur différente.

Astuce

Planifiez les reprises volumineuses hors des heures d'utilisation. Un import massif sollicite la base et ralentit les autres utilisateurs.