Ignorer une ligne dans un import X3

SOLVED

Bonjour,

J'ai créé un modèle d'import pour intégrer un fichier .txt dans X3.

Cependant ce fichier contient une ligne d'entête qu'il faudrait que j'ignore lors de l'import. Je suppose qu'il faut passer par un traitement spécifique mais je ne sais pas comment exactement.

Est-ce que quelqu'un a déjà réalisé ce genre de chose ?

Merci.

  • 0

    Bonjour,

    Je vois deux façons :

    une un peu compliquée consistant, avant l'import, à lire le fichier à importer et le réécrire à côté sans la ligne d'entête. Il faut donc déclencher l'import par traitement et pas depuis la fonction dédiée.

    une plus simple mais moins élégante, ajouter un GERRTRACE-=1 (ou 2,3..; suivant le nombre d'erreur) encore via traitement, pour ne pas avoir de message d'erreur à la fin. En fait il y aura bien des lignes en erreur, mais la trace globale ne sera pas considérée en erreur.

  • 0

    Vous pouvez éliminez des lignes en utlisant la fonction import mono-ligne (Exploitation > Imports/Exports > Conversion fichiers mono-ligne -AIFIMPGENFIC-) et en mettant un C dans la première colonne devant les lignes à ignorer:

    https://online-help.sageerpx3.com/erp/12/whitepaper/how-to-import-single-line-files/?lang=fr

    Mais si cela doit être fait en automatique pour une interface ou si vous n'avez pas la main sur le contenu du fichier, cela ne marchera pas. 

  • 0 in reply to Julien Patureau

    Merci pour cette proposition, cependant je ne suis pas sur de pouvoir mettre cela en place dans mon cas.

    Cette méthode semble bien fonctionner lorsque l'on fait un import manuel mais dans mon cas il s'agirait d'un import régulier qui est en batch.

  • +1
    verified answer

    Bonjour,

    Je viens de faire un essai qui semble concluant. Je n'ai pas trouvé de variable permettant de bloquer l'import. Je propose donc de forcer le traitement à passer à l'enregistrement suivant dès la première ligne. Je ne trouve pas cela très "propre" dans la mesure où je ne maitrise pas ce qui est shunté mais cela a le mérite de fonctionner et peut être vous faire avancer dans votre étude de cas.

    Voici donc un bout de code à placer dans le traitement spé du modèle d'import :

    $ACTION
        Case ACTION
            When "AP_IMPORT"     : Gosub ZAP_IMPORT
        Endcase
    Return

    $ZAP_IMPORT
        if NOENR = 1
            NOENR+=1
            Gosub SUIVANT From TRTIMPOBJ
        Endif
    Return

    L'action "AP_IMPORT" est le moment où le fichier est lu et chargé mais l'import dans X3 n'est pas encore réalisé.

    X3 passe dans l'action "AP_IMPORT" seulement si les indicateurs sont correctement placés dans le fichier. Et cela est valable aussi pour l'entête. Il faut donc que le fichier ressemble à quelque chose comme cela :

    Si ce n'est pas possible depuis le système source, on peut alors utiliser la structuration tableau/import pour convertir le fichier. Cette fonction est "batchable" mais je ne crois pas souvenir l'avoir déjà fait.

  • Bonjour Delph,

    Faites-nous savoir si la réponse de Billy a été utile en la marquant comme vérifiée . Pour cela, cliquez sur plus au niveau de la réponse. 

    Il semble qu'a priori elle soit batchable, et même si cela n'a jamais été fait, elle pourrait répondre à votre demande.

    Merci de tester et de vérifier la réponse en cliquant dessus afin de faire savoir aux autres membres de la communauté qui ont eux aussi proposé une réponse que cela a fonctionné. 

    Merci!

    Anthony

  • 0 in reply to Fontenay Billy

    Bonjour,

    Merci pour ce bout de code.

    Pour ma part il ne fonctionne pas totalement. La ligne qui doit être exclus est bien ignorée cependant en contre partie la dernière ligne de mon fichier est intégrée en double.