Champ auto-incrément et import CSV

Request description

Bonjour,
J’ai un champ Identifiant paramétré en auto-incrément (valeur par défaut : Auto)

Si j’importe des données par CSV, l’identifiant reste à Auto.

J’ai tenté de contourner en ajoutant le calcul dans le preImport, mais j’ai l’impression que je dois indiquer moi-même la valeur de l’incrément, ce qui fait perdre l’intérêt de l’auto incrément.

	    if (getFieldValue(IDENTIFIER_FIELD).equals("Auto"))
	    {
		    String id = getField(IDENTIFIER_FIELD).increment(this,"1",getField(IDENTIFIER_FIELD).getIncrementPattern());

		    setFieldValue(IDENTIFIER_FIELD, id);
	    }

Auriez vous une solution par paramétrage à me conseiller ?

Merci d’avance !
Emmanuelle

[Platform]
Status=OK
Version=6.3.7
Variant=full
BuiltOn=2026-04-03 09:42

Bonjour Emmanuelle,

Est-ce qu’on parle d’un import CSV standard ?

Normalement les champs avec auto-incrément ne sont pas valorisés pour les batch instances (instance utilisée par l’import CSV) et les instances pour l’historisation.

Oui il s’agit d’un import CSV standard.
Dans ce cas est-ce que je dois “recoder” l’auto-incrément (avec calcul du max etc.) dans le pre-import ?

Je pense que j’ai mal compris, désolé.

Tu souhaites que l’incrément se calcule automatiquement à l’import ?

A priori on peut implémenter ça dans le preCreate pour forcer le caclul de l’incrément.

@Override
public String preCreate() {
    if (isBatchInstance()) { // import CSV
        ObjectField f = getField("incrementField");
        String idNew = getGrant().getNextIdForColumn(this.getTable(), "row_id");
        f.setValue(f.increment(this, idNew, f.getIncrementPattern()));
    }
    return null;
}

Néanmoins, la stratégie varie si le champ auto-incrémenté est clé fonctionnelle de l’objet. Dans ce cas, et c’est pour ça que le code de la plateforme vérifie l’instance, c’est à l’appelant (ici ton fichier CSV) de fournir l’incrément de la ligne.

Non ta réponse faisait sens !
Moi je voudrais que l’import fasse le travail du champ auto-incrément sans passer par du code, à savoir

  • aller chercher le max existant
  • faire + 1
  • mettre pattern + max + 1 dans la valeur du champ

Le rowId ne me convient pas parce que j’ai une table commune pour 4 objets hérités donc je vais avoir des trous de numérotation.
Dans ce cas je vais remplir la colonne identifiant à la main dans le csv, ça suffira pour l’initialisation des données. (c’est en effet ma clé fonctionnelle)