Vedi anche: Importazione articoli nel magazzino, che funziona allo stesso modo.
La funzione Import anagrafiche soggetti carica in Atlantis Evo i soggetti – contatti, clienti, fornitori – da un file CSV, per esempio un elenco preparato in Excel o esportato da un altro gestionale. Lo stesso file può creare soggetti nuovi e aggiornare quelli già presenti: il soggetto viene riconosciuto dal codice.
Ogni importazione è una definizione salvata, con un codice e una descrizione: dice com’è fatto il file (separatori, riga di intestazione) e cosa contiene ogni colonna. Una volta preparata si riusa quante volte serve, per esempio per riallineare periodicamente le anagrafiche da un altro programma.
Si trova in Archivi → Anagrafiche → Servizi → Import anagrafiche soggetti.

1. Il file da importare
Un file di testo CSV, una riga per soggetto, con le colonne sempre nello stesso ordine. Il modo più semplice è preparare il foglio in Excel e salvarlo in formato CSV.

- Le colonne vengono abbinate per posizione, non per nome: la prima riga della scheda Campi descrive la prima colonna del file, la seconda la seconda, e così via. I titoli scritti nella riga di intestazione del file non vengono letti.
- Ogni riga del file deve avere esattamente tante colonne quante sono le righe della scheda Campi. Se il numero non torna l’importazione si ferma con un messaggio in inglese: “The number of columns to be processed (12) must match the number of CellProcessors (10) …”. Le colonne del file che non interessano vanno comunque dichiarate, con il campo -non definito-.
- La colonna del codice soggetto è obbligatoria (vedi § 4).
- Lettere accentate. Il file viene letto con la codifica predefinita del sistema: con le installazioni attuali (Java 21) è UTF-8. In Excel scegliete “CSV UTF-8”; se dopo l’import le lettere accentate compaiono come simboli strani, il file era salvato in un’altra codifica. Il CSV UTF-8 di Excel comincia con un carattere invisibile: tenete la riga di intestazione, così finisce lì e non sul primo codice.
- Il separatore lo decide Excel in base alle impostazioni internazionali: con Windows in italiano è quasi sempre il punto e virgola. Nel dubbio aprite il file con il Blocco note e guardate.
Esempio, con intestazione e punto e virgola:
Codice;Ragione sociale;Indirizzo;CAP;Città;Prov.;Nazione;Partita IVA;Email;Pagamento
101;Rossi Utensili Srl;Via Emilia 12;47921;Rimini;RN;IT;01234567890;[email protected];RB60
102;Bianchi & C. Snc;Via Verdi 5;40121;Bologna;BO;IT;09876543210;;RB30
2. Scheda Principale
In alto, fuori dalle schede, Codice (numerico, proposto in automatico) e Descrizione identificano la definizione. Accanto c’è il pulsante Esegui (vedi § 5).
| Campo | A cosa serve |
|---|---|
| File predefinito | percorso del file da importare. Il pulsante … apre la finestra di scelta. È il file che viene letto quando si preme Esegui |
| File con intestazioni di colonna | spuntato, la prima riga del file viene saltata. Se il file ha l’intestazione e il flag è spento, la riga dei titoli viene importata come se fosse un soggetto |
| Carattere di quoting campi | il carattere che racchiude un valore contenente il separatore, di solito le virgolette ". Esempio con la virgola come separatore: "Via Verdi 5, int. 3" |
| Delimitatore campi | il separatore fra le colonne: virgola, punto e virgola, pipe |, due punti, tabulatore |
| Delimitatore righe | CR+LF, LF o CR. Oggi non ha effetto: in lettura il file viene interpretato correttamente con qualsiasi tipo di fine riga |
| Script di pre-elab. file | script eseguito prima di leggere il file; riceve il file nella variabile _file. Serve, per esempio, a convertirlo o ripulirlo |
| Script di pre-elab. rec. | script eseguito su ogni riga appena letta, prima che venga importata; riceve i valori delle colonne nell’elenco _datarow e li può modificare |
| Script di post-elab. file | script eseguito dopo l’ultima riga; riceve il file in _file. Serve, per esempio, a spostarlo in una cartella di archivio |
Una definizione nuova parte con intestazione spuntata, virgolette come quoting, virgola come separatore e CR+LF.
Gli script si scelgono con la ricerca fra quelli dell’archivio script di Atlantis (JavaScript). Un esempio di script sulla riga, che toglie il prefisso C dai codici del vecchio gestionale (prima colonna del file):
var cod = _datarow.get(0);
if (cod != null) {
_datarow.set(0, cod.replace("C", ""));
}
⚠️ Uno script che va in errore, o che non esiste più, ferma l’intera importazione: “Errore. Script ‘NOME’ non trovato!”. Non viene salvato niente (vedi § 5).
3. Scheda Campi
Una riga per ogni colonna del file, nello stesso ordine. Ogni riga si conferma con il pulsante Conferma.

| Campo | A cosa serve |
|---|---|
| Campo | il dato che la colonna contiene, scelto dall’elenco (§ 4). -non definito- per le colonne da ignorare |
| Rimuovi riga se vuoto | se la colonna è vuota, l’intera riga del file viene scartata: il soggetto non viene né creato né aggiornato |
| Tipo import | quando la colonna viene scritta sul soggetto |
Tipo import ha quattro valori (una riga nuova parte da Importa):
| Valore | Effetto |
|---|---|
| Importa | la colonna viene sempre scritta |
| Non importare | la colonna viene letta ma non scritta |
| Importa su nuovi record | scritta solo se il soggetto non esisteva |
| Importa solo su aggiornamento | scritta solo se il soggetto esisteva già |
“Nuovo” ed “esistente” si riferiscono sempre al soggetto, cioè al codice. Un contatto già presente a cui l’import aggiunge per la prima volta i dati da cliente è un aggiornamento: le colonne cliente impostate su Importa su nuovi record non vengono scritte.
Rimuovi riga se vuoto funziona anche sulle colonne Non importare: una colonna del file usata solo come filtro (“importa solo le righe con l’email”) si dichiara così, con il campo che contiene e Non importare. Una cella con soli spazi non conta come vuota.
⚠️ Una cella vuota su una colonna importata cancella il dato già presente. In un import di aggiornamento, le colonne che nel file non sono sempre compilate vanno messe su Importa su nuovi record o Non importare, altrimenti svuotano il dato sui soggetti esistenti.
4. I dati importabili
Dati anagrafici
| Campo | Note |
|---|---|
| Cod. soggetto | obbligatorio; vedi sotto |
| Ragione sociale | fino a 100 caratteri |
| Ragione sociale 2 (estensione) | fino a 100 caratteri |
| Indirizzo | fino a 80 caratteri |
| CAP · Città · Provincia | 10, 30 e 3 caratteri |
| Cod. nazione · Descrizione nazione | codice fino a 3 caratteri, in maiuscolo; vedi Archivi collegati |
| Num. telefono · Num. fax · Num. cellulare | fino a 100 caratteri |
| Indirizzo sito web | fino a 100 caratteri |
| Indirizzo email · Indirizzo email PEC | fino a 120 caratteri |
| Cod. fiscale/cod. ISS | fino a 20 caratteri |
| P.IVA/ Cod. Oper. Econ. | fino a 15 caratteri |
| Codice SDI | codice destinatario della fattura elettronica, 7 caratteri |
| Codice valuta · Codice lingua | codici già presenti nei rispettivi archivi |
| Cognome · Nome · Sesso | persona fisica: 25 e 20 caratteri; sesso M o F |
| Note | testo libero |
| *Nome campo utente | i campi utente definiti sull’anagrafica soggetti, preceduti da un asterisco |
Un testo più lungo del limite viene tagliato senza avviso.
Il codice soggetto
Il codice letto dal file viene ripulito dagli spazi, portato in maiuscolo e completato a sinistra con zeri fino a 7 caratteri: 101 diventa 0000101, AB12 diventa 000AB12.
- se il codice esiste, il soggetto viene aggiornato; altrimenti viene creato;
- se il codice è numerico e supera il progressivo dei soggetti, il progressivo viene aggiornato: i soggetti caricati a mano dopo l’import proseguono dal codice più alto importato, senza collisioni.
⚠️ Un codice più lungo di 7 caratteri viene accorciato tenendo gli ultimi 7, senza nessun avviso.
C00012345diventa0012345: due codici diversi del vecchio gestionale possono finire sullo stesso soggetto, e un soggetto già esistente può essere sovrascritto. Accorciate i codici nel file (o con uno script sulla riga) prima di importare.
⚠️ Una riga con il codice vuoto non viene scartata: diventa il soggetto
0000000, e tutte le righe senza codice finiscono sullo stesso soggetto, ciascuna sovrascrivendo la precedente. Se nel file possono esserci codici vuoti, spuntate Rimuovi riga se vuoto sulla colonna del codice.
Dati cliente e dati fornitore
I campi che cominciano con Cliente – scrivono i dati del soggetto come cliente; quelli che cominciano con Fornitore – i dati come fornitore:
- Cliente – Sottoconto, Codice esenzione IVA, Codice pagamento, Codice listino, Codice listino personalizzato, Codice classe sconto, Codice classe sconto personalizzata, Codice ABI, Codice CAB, Codice IBAN, Numero C/C, CIN, Prefisso IBAN, BIC, Codice conto banca azienda, Codice agente 1, Codice agente 2, Cod. categoria, Cod. zona, Partite (S/N);
- Fornitore – Sottoconto, Codice pagamento, Codice ABI, Codice CAB, Codice IBAN, Numero C/C, CIN, Prefisso IBAN, BIC, Cod. categoria, Cod. zona, Partite (S/N).
Basta una colonna Cliente – importata perché il soggetto diventi cliente (e lo stesso per i fornitori). Senza colonne di questo tipo i soggetti vengono creati come semplici contatti, e i dati da cliente o fornitore si aggiungono poi dall’anagrafica.
⚠️ La colonna vale per tutte le righe del file, anche quelle con la cella vuota: se il file mescola clienti e semplici contatti, tutti diventano clienti. Preparate file separati, con due definizioni distinte.
Il sottoconto cliente viene controllato: deve esistere nel piano dei conti, altrimenti l’import si ferma con “Codice sottoconto cliente inesistente: CODICE” – anche quando la cella è vuota. Con la colonna Cliente – Sottoconto ogni riga deve quindi avere un sottoconto valido. Il sottoconto fornitore non viene controllato.
Gli altri codici non vengono controllati: pagamento, listino, classe sconto, esenzione IVA, agenti, banca azienda vengono scritti così come sono. Un codice che non esiste si scopre dopo, quando il soggetto viene usato su un documento: verificate prima che le tabelle siano caricate e che i codici del file corrispondano.
Archivi collegati creati in automatico
Alcuni archivi si popolano da soli durante l’import:
| Colonna | Effetto |
|---|---|
| Cod. nazione (+ Descrizione nazione) | se la nazione non esiste viene creata; se esiste e la descrizione nel file è diversa, la descrizione viene aggiornata |
| Cliente – Cod. categoria (+ Descrizione categoria cliente) | come sopra, sulle categorie clienti |
| Fornitore – Cod. categoria (+ Descrizione categoria fornitore) | come sopra, sulle categorie fornitori |
| Cliente – Cod. zona (+ Descrizione zona) | come sopra, sulle zone |
Le colonne di descrizione servono solo insieme al codice: da sole non fanno nulla. Senza la colonna di descrizione la voce viene creata senza descrizione.
Categorie e zone vengono create come voci di primo livello: se nell’archivio usate una struttura a più livelli, create prima le voci a mano e importate solo il codice. La zona dei fornitori non crea la zona se manca.
⚠️ Una cella vuota su queste colonne crea una nazione, una categoria o una zona con il codice vuoto. Compilate il codice su tutte le righe, oppure usate Importa su nuovi record / Non importare.
La nazionalità IVA non viene impostata. I soggetti creati dall’import hanno Nazionalità IVA = Italia anche quando la nazione è estera: per i soggetti UE ed extra UE va corretta dall’anagrafica (scheda Varie), prima di emettere documenti.
5. Esecuzione
- Salvate la definizione (F10) e richiamatela: Esegui funziona solo in interrogazione, con una definizione caricata. Altrimenti compaiono “Operazione eseguibile solo in modalità interrogazione.” o “Nessuna definizione di importazione caricata.”.
- Premete Esegui. Viene letto il file indicato in File predefinito: per importare un file diverso, entrate in variazione, cambiate il percorso e salvate.
- Due barre di avanzamento – Conteggio righe e Importazione anagrafiche – mostrano il progresso. A fine lavoro compare “Operazione terminata.”.
Prima di leggere le righe vengono controllati la definizione e il file:
- “File import non definito.” – il campo File predefinito è vuoto;
- “File PERCORSO non trovato.” – il percorso non esiste sul computer da cui si lancia l’import;
- “Codice soggetto non definito nei campi di importazione.” – nella scheda Campi manca Cod. soggetto.
L’importazione è tutto o niente. Se una riga va in errore, nessuna riga viene salvata, nemmeno quelle precedenti. Il messaggio indica il motivo e la riga del file:
“Errore. Codice sottoconto cliente inesistente: 1.10.99 – linea n.37”
Si corregge il file e si rilancia da capo. Rilanciare un import già riuscito non duplica niente: i soggetti esistono e vengono semplicemente riaggiornati.
Una volta concluso, invece, non esiste un annullamento: i soggetti creati e i dati sovrascritti restano.
I soggetti importati si trovano in Archivi → Anagrafiche → Soggetti.
6. Promemoria
- Prima prova con poche righe, o su una copia dei dati: un import riuscito non si annulla.
- Una riga di Campi per ogni colonna del file, nello stesso ordine; le colonne da ignorare si dichiarano -non definito-.
- Codici soggetto di 7 caratteri al massimo: quelli più lunghi vengono troncati in silenzio, quelli vuoti finiscono tutti sul soggetto
0000000. - Una cella vuota cancella il dato esistente sulle colonne importate: negli aggiornamenti usate Importa su nuovi record o Non importare.
- Una colonna Cliente – o Fornitore – rende cliente o fornitore ogni riga del file. Clienti, fornitori e contatti vanno in file separati.
- Solo il sottoconto cliente viene verificato. Pagamenti, listini, agenti e gli altri codici devono già esistere e coincidere.
- Controllate nazioni, categorie e zone dopo l’import: quelle mancanti vengono create in automatico, anche con codice vuoto se la cella è vuota.
- Nazionalità IVA resta “Italia”: correggetela sui soggetti esteri.
- Il file deve essere in UTF-8 per non perdere le lettere accentate.
- Esegui lavora sul file salvato nella definizione, e solo in interrogazione.