Parametrizzazione > Utilizzo > Import/Export > Modelli import/export 

Questa funzione permette di definire i formati dei file utilizzati dalle funzioni di import e di export dell'oggetto, per poter integrare o estrarre i dati nel database del software.

Un file utilizzabile da un modulo import ma generato dal modulo export è alla base di un file con una struttura di uno dei seguenti tipi:

  • file sequenziale con campi a lunghezza fissa.
  • file sequenziale con separatore tra i campi (e record).
  • file XML.

Il modulo di import / export utilizza la nozione di oggetto per permettere l'aggiornamento di dati nel database. Un oggetto è definito da un insieme di tabelle e di videate nonché da azioni standard associate ai campi e all'aggiornamento, garantendo così che vengano effettuati i controlli e le azioni necessarie durante l'aggiornamento del database, in quanto la sola descrizione dell'oggetto permette allo stesso tempo di generare il codice relativo ad un aggiornamento in tempo reale e all'aggiornamento tramite import.

Quando un oggetto aggiorna un'unica tabella, il modello di import descrive l'elenco dei campi della tabella da integrare, dove un blocco di dati del file da importare o da esportare contiene i dati di un record. Quando più tabelle sono aggiornate da un oggetto (per esempio la testata e le righe), si ritroveranno vari blocchi di dati per una richiesta dell'oggetto da integrare (un blocco definisce la testata e N blocchi definiscono ognuno una riga).

E' importante notare che è anche possibile importare una tabella senza associarla ad una nozione di oggetto. Per questo motivo si lascia il campo oggetto vuoto e ci si accontenta di indicare nel riquadro del secondo folder la tabella e i campi interessati. L'import si fa allora senza nessun altro controllo se non quelli indotti dai formati associati ai tipi di dati dei campi della tabella.

Prerequisiti

SEEREFERTTO Riferirsi alla documentazione di Implementazione

Gestione videata

Testata

Presentazione

Un modello import export è identificato da un codice alfanumerico. Oltre alla descrizione, si definiscono su due folder le caratteristiche tecniche del modello.

Chiudi

 

Campi

I seguenti campi sono presenti in questo folder :

Codice che identifica il modello di import-export.

  • Descrizione (campo INTIT)

Permette di definire una descrizione associata ad ogni scheda.

  • Attivo (campo ENAFLG)

Questa casella da contrassegnare permette di attivare o disattivare la scheda corrente senza tuttavia perderne il contenuto.
Una scheda disattivata non potrà venire utilizzata (richiamandone il codice) in altre schede (documenti, parametrizzazioni, ecc.), o durante elaborazioni di massa.
Le abilitazioni su una determinata funzione possono vietare la creazione di una scheda attiva. In questo caso, la casella viene disattivata di default e non è modificabile se non da un utente autorizzato, o attraverso un circuito di firma definito tramite Workflow.

  • Blocco di preimpostazioni (campo AFACTORYOW)

Chiudi

 

Folder Testata

Presentazione

Questo folder definisce le caratteristiche generali del modello, cioè:

  • i dati che devono essere esportati
  • la struttura generale del file (formato, codifica, definizione dei gruppi di dati)
  • dei parametri supplementari

Chiudi

 

Campi

I seguenti campi sono presenti in questo folder :

Generale

Definisce il codice dell'oggetto da importare o esportare. Nel caso dell'export, questo campo è facoltativo; il nome della tabella principale da esportare è indicato nel blocco degli identificatori.

Permette di inizializzare il contesto (generalmente se uno stesso oggetto èutilizzato per più funzioni) e di verificare i diritti d'accesso. Infatti, gli utenti devono avere i diritti di accesso idonei alla funzione per poter servirsi del modello.

Questo campo è obbligatorio.

  • Modulo (campo MODULE)

Modulo di appartenenza della parametrizzazione. Questo campo permette di precisare se la videata deve essere creata nel database del dossier. Lo è se il modulo al quale è collegata la videata è attivo per il dossier.

Un codice attività permette:

  • di rendere opzionale un elemento del dizionario se il valore associato al codice attività è nullo.
  • di approvare gli elementi specifici da quando sono evidenziati da un codice che inizia per X, Y o Z.
  • di dimensionare un numero di righe massimo quando il codice attività evidenzia degli elementi di un riquadro.

Così, se il codice attività non è attivo, l'elemento evidenziato non sarà utilizzabile, e il codice associato (se ne ha) non verrà generato né sarà attivabile.

Questo codice di accesso permette di limitare l'accesso alla scheda corrente ad alcuni utenti.
Se il campo viene indicato, solo gli utenti che dispongono di questo codice di accesso nel loro profilo possono visualizzare e modificare questa scheda.

Il diritto di esecuzione collegato ad un codice utente è trattato in modo particolare nel caso dei modelli di import-export: se un utente non ha il diritto di esecuzione, non potrà utilizzare il modello per importare o esportare dei dati.

  • Script standard (campo TRTIMP)

Definisce il programma standard nel quale si trovano le etichette delle azioni che vengono richiamate nei programmi di import-export.

Questi programmi permettono di effettuare delle inizializzazioni, dei controlli complementari e degli aggiornamenti se necessario. In allegato tecnico, si troverà la struttura di un tale programma. Si noti che diversi programmi standard chiamati in generale IMPXXX, dove XXX è il codice dell'import, vengono forniti per un certo numero di import.

Per maggiori informazioni su queste azioni, si veda la documentazione allegata corrispondente.

  • Script specifico (campo SPEIMP)

Definisce il programma specifico, richiamato prima del programma standard, che permette di realizzare le stesse azioni disattivando se necessario ciò che esegue il programma standard.

Le azioni possibili sono generalmente delle inizializzazioni, dei controlli complementari, e degli aggiornamenti se necessario.

Per maggiori informazioni su tali azioni, vedere la documentazione allegata corrispondente.

Struttura

  • Tipo file (campo TYPFIL)

Definisce la struttura utilizzata per gestire i dati nel file da importare o esportare. Per maggiorni informazioni, si veda il corrispondente paragrafo.

  • Separatore di campo (campo SEPFLD)

Definisce il separatore tra due campi.

Per inserire un carattere non stampabile, occorre inserire un '\' (backslash) seguito da 3 cifre che rappresentano il codice ascii del carattere su base decimale.

  • Separatore record (campo SEPREC)

Definisce il separatore tra due record (gruppi di dati).

Per inserire un carattere non stampabile, occorre inserire un '\' (backslash) seguito da 3 cifre che rappresentano il codice ascii del carattere su base decimale.

Spesso si utilizza:

  • il carattere line feed (\010), che corrisponde alla fine della riga nei file di testo sotto Unix
  • la combinazione dei due caratteri carriage return, line feed (\013\010) che corrispondono alla fine della riga nei file di testo Windows.
  • Delimitatore di campo (campo FLDLIM)

Il delimitatore di campo (generalmente il carattere ") viene aggiunto in prima ed ultima posizione dei campi di tipo alfanumerico. I campi numerici e le date non sono interessati da tale delimitatore.

Si tratta spesso di uno dei seguenti caratteri:

  • 'singolo apice'
  • "doppio apice"
  • Formato file (campo CODDBA)

Definisce il formato dei caratteri utilizzati nel file:

  • ascii è il formato classico dove un carattere equivale ad un byte nel file. Questo tipo di formato permette di elaborare i caratteri occidentali classici, con diversi set di caratteri possibili, definiti nel campo corrispondente.
  • utf8 corrisponde ad un formato UNICODE dove il numero di caratteri è variabile (da 1 a 4, dove 1 corrisponde al set di caratteri latini non accentati). Questo formato permette di gestire tutti i tipi di caratteri, e generalmente i caratteri cinesi.
  • ucs2 corrisponde ad un formato standard Microsoft, nel quale i caratteri sono sistematicamente memorizzati su 2 byte.

Export

  • Export (campo EXPORT)

Se questo campo è contrassegnato, sarà possibile utilizzare questo modello in Export di dati.

  • Crono export (campo CHRNUM)

Questo campo, soltanto visualizzato, memorizza il valore del numero crono di quando è avvenuto l'ultimo export. Ciò permette, quando si realizzano degli export cronologici, di elaborare soltanto ciò che è stato modificato da quando è avvenuto l'ultimo export.

Trascodifica

  • Set di caratteri (campo OPTCHA)

Quando si utilizza il set di caratteri ascii, è possibile utilizzare diversi formati standardizzati:

  • Il codice ISO 8859 (che è inoltre il set interno di Sage quando si lavora in ascii)
  • Il codice IBM PC
  • Il codice ASCII 7 bit (senza accenti: le lettere accentate sono convertite nella minuscola corrispondente).
  • Separatore decimale (campo SEPDEC)

Definisce il separatore decimale utilizzato per le cifre. Se questo campo è vuoto, si considererà che il separatore decimale è il '.' (punto).

  • Formato date (campo OPTDAT)

Definisce il modo in cui sono codificati i campi di tipo data (ordine e numero di caratteri per l'anno). 

E' possibile specificare soltanto l'ordine delle cifre ed il numero di caratteri dell'anno. All'import, vengono filtrati eventuali caratteri di separazione tra campi; così vengono decodificate correttamente delle date nel formato 29-05-59 o 09/04/1991.

Il sotto-programma di decodifica considera la variabile adxdcs del motore, indicata dal parametro DCS che si trova nei parametri generali per definire il modo in cui viene decodificato un anno su due cifre. DCS rappresenta l'anno "pilota" che definisce il cambio di secolo.

Ad esempio, se DCS vale 1940, ogni anno su due cifre inferiore o uguale a 40 verrà considerato come facente parte del ventunesimo secolo, e ogni anno maggiore verrà considerato come facente parte del ventesimo secolo. Si sarà così in grado di esprimere gli anni tra 1940 e 2039 su due cifre.

Il formato AAAA-MM-GG è riservato agli export di tipo XML.

  • campo LIBDAT

Descrizione associata al codice precedente.

  • Formato menu locali (campo OPTMNL)

I campi di tipo "menù locale" vengono memorizzati nel formato di un numero che rappresenta la loro posizione nella tabella.

A seconda del valore di tale campo il modello esporterà (o attende di trovarsi in import):

  • 0 : in questo caso, si scrive la scelta nel formato di una cifra che indica la posizione del menù nella tabella: 1 per la prima scelta, 2 per la seconda, ecc. Ciò corrisponde al formato interno sotto il quale il menù locale viene memorizzato nel database.
  • 1 : si scrive la scelta utilizzando il codice (su un carattere) associato ad ogni scelta di menù locale. Questo codice non è visibile nella gestione dei menù locali. Può essere definito nelle funzioni di sviluppo, nella gestione dei messaggi: si ha la possibilità di inserire questo codice interno (che serve solo a tale scopo, non è più, come in vecchie versioni caratteri, un acceleratore di inserimento).
  • n: (n>1) i primi n caratteri della descrizione visualizzata in inserimento. Quando si utilizza tale opzione, l'algoritmo di riconoscimento ricerca sul primo carattere, poi sul secondo e così di seguito, fino a quando non corrisponde una sola descrizione. Così, se si cerca di riconoscere ASS in un menù locale le cui descrizioni sono Contanti, Giroconto, Assegno, Tratta, Carta di Credito, l'algoritmo riconoscerà Assegno (solo la descrizione le cui prime due lettere corrispondono).

Tenuto conto del fatto che le descrizioni del menù locale sono semplicemente delle descrizioni utilizzate in visualizzazione, poiché il valore memorizzato nel database è il range nella tabella, è assolutamente possibile cambiare la descrizione dei menù locali il tempo di un import, affinché l'algoritmo di riconoscimento funzioni correttamente. Attenzione tuttavia, il fatto di cambiare delle descrizioni di menù locali può essere effettuato solo in modalità mono-utente, e ciò è sconsigliato in trasferimenti regolari o automatizzati.

  • campo LIBMNL

Descrizione associata al codice precedente.

Import

  • Import (campo IMPORT)

Se questo campo è contrassegnato, sarà possibile utilizzare questo modello nell'Import di dati.

  • Aggiorn. autorizzato (campo OPTUPD)

Permette di autorizzare la modifica di un record esistente durante l'import

  • Transito (campo AOWSTA)

Quando questo check-box è contrassegnato, l'import di dati alimenta il transito import-export con i dati errati. Il fatto di alimentare il transito non impedisce di creare un file di errore.

  • Import speciale (campo OPTSPE)

Segnala che l'integrazione dei dati nel database si effettua utilizzando delle azioni specifiche definite nel programma il cui nome viene fornito nel campo Programma di import. Questo programma specifico possiede un numero ristretto di entry point e necessita quindi di scrivere un programma che includa tutti i controlli che si intendono effettuare.

Il suo interesse risiede nel fatto che è possibile così raggruppare dei controlli al fine di ottimizzare il programma di import. La struttura dei programmi di import specifici è descritta in allegato. Si dovranno generalmente trovare le seguenti azioni:

  • un'etichetta $RAZCRE che è richiamata direttamente dall'import.
  • un'etichetta $SAIMSK che è richiamata direttamente dall'import ad ogni record letto e sostituisce la Call SAIMSK standard (assegnazione e controllo dei campi della videata a partire dalla classe [F])
  • Workflow (campo ENAWRK)

Se questa casella non è contrassegnata, gli eventi di workflow relativi alle operazioni elementari (creazione, modifica in gestione di oggetto) non vengono più chiamati. Così, se si lanciano import comportanti aggiornamenti di massa, si evita l'attivazione di una moltitudine di eventi di questo tipo, il che può degradare le performance dell'import e provocare l'invio di messaggi in massa.

Tuttavia, gli eventi di workflow relativi all'attivazione dell'import non sono disattivati.

Riquadro Identificatori

  • N° (campo NUMFLG)

Riga corrente del riquadro

  • Livello (campo FLGLEV)

Definisce il livello del gruppo. Il livello 1 è il livello principale, un livello N+1 definisce un sotto-dettaglio del livello N che lo precede.

  • Flag (campo FLGREC)

Identifica il gruppo da un codice di massimo 5 caratteri, codice che sarà ripreso nel riquadro dei campi del folder successivo, e nello stesso file, come testata del gruppo.

Questo riquadro degli indicatori definisce la struttura dei gruppi di record. Vedere il relativo paragrafo.

  • Chiave (campo FLGKEY)

Definisce la chiave della tabella collegata utilizzata per accedere al dettaglio dei record del gruppo, a partire dai valori dei campi delle tabelle di livello superiore utilizzate nell'espressione di legame.

  • Legame (campo FLGLNK)

Definisce l'espressione di legame, ovvero una serie di valori, separati da un punto e virgola, che fornisce i valori di chiave che legano la tabella di dettaglio al record di testata.

  • Lunghezza (campo RECLEN)

Nel caso di un tipo di file di lunghezza fissa, occorre indicare il numero di caratteri di ogni record.

Chiudi

 

Folder Campi

Presentazione

In questo riquadro, si definiscono i diversi campi da importare, organizzati in gruppi identificati dalla colonna Codice, in cui si ritrova uno dei codici definiti nel riquadro dei flag del primo folder (il campo può rimanere vuoto se non è stata definita nessuna tabella).

Questo folder contiene il riquadro che definisce la struttura dettagliata dei gruppi presenti nel primo folder. Occorre sapere:

  • Che non è obbligatorio definire i campi in tutti i gruppi (infatti, alcuni possono essere solo dei gruppi « tecnici » che definiscono dei legami). Si immagini per esempio che si vogliano esportare dei campi della testata dell'ordine e dei campi della scheda del cliente pagatore, ciò in un solo gruppo di dati (non si vogliono avere dei separatori di gruppo dei dati). In questo caso si sarà portati a definire due gruppi (il primo che definisce il percorso sugli ordini, il secondo associato al cliente con il legame appropriato). In compenso, nel folder campi, si metteranno solo delle righe associate al secondo gruppo. Queste righe potranno includere allo stesso tempo delle informazioni estratte dal cliente e dalla testata dell'ordine (poichè sono entrambe in linea).
  • E' obbligatorio definire per ogni gruppo la posizione in cui si trova il separatore di gruppo se si tratta di un modello utilizzabile in import e se ci sono più gruppi. Lo pseudo campo / (slash) permette di definirlo.
  • Che i blocchi devono essere posizionati in maniera sequenziale: se esiste un blocco di livello inferiore, deve seguire il blocco al quale è collegato.

Chiudi

 

Campi

I seguenti campi sono presenti in questo folder :

Riquadro Campi

  • N° (campo NUMLIG)

Riga corrente del riquadro

  • Flag (campo TYP)

Questo campo viene inserito soltanto se non è vuoto il riquadro degli identificatori di gruppi del folder precedente. Permette di collegare l'informazione da esportare o importare ad un gruppo di dati.

Definisce il riquadro del database in cui viene definito il dato da importare o esportare. Si noti che:

  • Questo campo è obbligatorio anche se non serve necessariamente (se si è in un modello di export e se si definisce un'espressione calcolata, questa può far riferimento a dei campi provenienti da più tabelle).
  • La tabella in oggetto non è necessariamente la tabella principale associata al gruppo, ma può essere una tabella collegata alla tabella principale di questo gruppo o di uno dei gruppi precedenti di livello superiore. Se non è stato trovato alcun legame, viene visualizzato un messaggio di avvertimento: Legame automatico non gestito. Ciò significa che dipende dal programma di import o d'export (inserito nel primo folder) realizzare questo legame manualmente (dichiarando per esempio la tabella nell'azione IMP_OUVRE, e la lettura della tabella nell’azione IMP_LIENS).
  • Campo (campo FLD)

Permette di indicare il nome del campo della tabella da importare o esportare. Sono possibili diverse sintassi per definire le informazioni da estrarre o integrare:

  • Il carattere / (slash) significa che un indicatore di gruppo è scritto nell'export o ricercato durante l’import. In un modello che permette l’import, quando esistono più gruppi, questo separatore è obbligatorio per ogni gruppo. Si presume che il separatore di gruppo sia un campo normale (incorniciato da separatori di campi e dei delimitatori se si utilizza un modello di tipo Delimitato).
  • La sintassi più semplice è CAMPO(indice), quando un campo dalla tabella dichiarata nella colonna precedente è importato o esportato. Una finestra di selezione permette di far apparire i campi possibili.
  • Se si inserisce qui una costante stringa di caratteri tra doppi apici ("), il campo sarà scritto tale e quale nel file in export ed ignorato in import.
  • Se non si inserisce nulla, significa che ci sarà un campo vuoto nel file esportato (tra delimitatori di campo se il modello è di tipo Delimitato). In import, significa che il campo corrispondente deve essere ignorato.
  • E' inoltre possibile la sintassi *N, dove N è un numero compreso tra 1 e 99. Questo permette di alimentare (in import) o di leggere (in export) la variabile GIMP(N). GIMP è una variabile globale, di tipo stringa di caratteri, di lunghezza massima uguale a 100, che dovrà essere alimentata in un programma specifico associato all'import o all'export.
  • L'ultima possibilità, utilizzabile esclusivamente in export, consiste nel definire un'espressione calcolata qualsiasi, preceduta dal segno uguale (=). Questa espressione, che può richiamare delle costanti, delle funzioni, delle variabili, degli operatori e dei campi di tabelle in linea, viene verificata sintatticamente all'inserimento (il controllo del contesto, in particolare il fatto che le variabili esistano, non può ovviamente essere verificato).
  • Descrizione (campo COM)

Indicare un commento per facilitare la comprensione della parametrizzazione.

  • Intervallo (campo SEL)

Sono possibili tre scelte in questo campo:

  • Non inseritosignifica che per tale campo non verrà inserito alcun intervallo di inizio-fine al lancio dell'export.
  • Inseritosignifica che per tale campo potrà essere inserito un intervallo di inizio-fine al lancio dell'export.
  • Non trasferitosignifica che per tale campo potrà essere inserito soltanto un intervallo di inizio-fine al lancio dell'export, ma che il campo non verrà trasferito durante un import o un export.
  • Posizione (campo LOC)

Questa colonna è utile solo nel caso di un formato in lunghezza fissa; in questo caso, la posizione fornisce lo slittamento rispetto all'inizio del blocco o del record (posizioni fornite in numero di byte, dove 1 significa che ci si trova all'inizio del blocco o del record). Le posizioni devono essere compatibili con la dimensione del record.

  • Lunghezza (campo LNG)

Questo campo determina la lungheza del campo sul file sequenziale.

  • Formato (campo FMT)

Questa colonna viene inserita soltanto se il formato è in lunghezza fissa. Per gli importi numerici, il formato inserito viene definito nel formato nnn o nnn.mmm, sapendo che queste cifre possono essere prefissate da < o > (allineamento a destra o a sinistra completato da zeri, formattazione a destra utilizzata di default), prefissate o post-fissate dal carattere + (segno obbligatorio prima/dopo la cifra), e prefissato dal carattere * (il separatore decimale non deve apparire). Il riquadro sottostante mostra degli esempi di formattazione per un determinato importo (gli spazi sono qui sostituiti da #):

Formato 

Importo

Risultato della formattazione

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-###

Per un formato alfanumerico, le uniche direttive di formattazione possibili sono < o > (allineamento a destra o a sinistra, sapendo che le stringhe di caratteri sono completate da spazi).

  • Pattern (campo PATTERN)

Questo campo viene utilizzato quando si effettuano degli import/export in formato XML.

Infatti, quando viene creato un file XML, si ha bisogno di informazioni iniziali, in particolare per poter creare un file XSD che descriva la struttura del file XML e controllare così la sua validità con strumenti di verifica di sintassi integrati ai vari software ETL.

Questo campo definisce se un modello deve essere associato alla descrizione fatta nella descrizione XSD.

Se questo campo viene valorizzato, il file XSD conterrà uno specifica di tipo:

pattern value="valore_inserito_nel_campo_pattern"

Nei tutorial on line (come questo) sono disponibili le sintassi che è possibile utilizzare per i pattern.

  • Tag (campo BAL)

Questo campo viene utilizzato quando si effettuano degli import/export in formato XML.

Infatti, quando viene creato un file XML, si ha bisogno di informazioni iniziali, in particolare per poter creare un file XSD che descriva la struttura del file XML e controllare così la sua validità con strumenti di verifica di sintassi integrati ai vari software ETL.

Questo campo definisce il codice del tag che descrive il campo esportato nel modello, così come apparirà nel file XML.

  • Obbligatoria (campo OBL)

Questo campo viene utilizzato quando si effettuano degli import/export in formato XML.

Infatti, quando viene creato un file XML, si ha bisogno di informazioni iniziali, in particolare per poter creare un file XSD che descriva la struttura del file XML e controllare così la sua validità con strumenti di verifica di sintassi integrati ai vari software ETL.

Questo campo definisce se il campo è obbligatorio o meno. Se il suo valore è uguale a Si, il file XSL conterrà una specifica di tipo minOccurs="1"

Questo numero, se esiste, fa riferimento ad una tabella di trascodifica utilizzabile per trascodificare il campo letto e renderlo conforme al formato atteso.

Generazione del file

  • campo TYPEXP
  • Archivio di dati (campo FILEXT)

Permette di definire il percorso di un file di dati di default che verrà proposto durante il lancio dell'import o dell'export (e utilizzato in modo automatico in caso di lancio di un concatenamento di import o di export). Se il percorso file è relativo, la directory di base considerata è quella di base d'installazione del software.

Il percorso può integrare il carattere #. Se questo è il caso, vi sarà una gestione dei numeri sequenziali:

  • In import, significa che si ricercheranno tutti i file il cui modello corrisponde al percorso, sapendo che # che rappresenta 5 cifre (si integrano questi file in ordine crescente dei numeri)
  • In export, significa che si crea un file che integra il valore formattato del contatore [C]EXPORT su 5 cifre. Normalmente ciò accompagna la contrassegnazione della casella Gestione crono durante il lancio della funzione di export.

Ad esempio, se il chrono export è uguale a 156, /u/tmp/fic# permette di generare il file /u/tmp/fic00156.

  • Directory finale (campo REPFIN)

Permette di imporre una directory finale nella quale il file verrà trasferito dopo essere stato importato. In assenza di valore, si utilizza la directory indicata nei parametri generali dell'import/export.

Chiudi

 

Funzioni accessibili tramite click destro sul riquadro

Selezione di un campo

Campi

I seguenti campi sono presenti su questa finestra :

Blocco numero 1

Definisce la tabella di cui si vogliono selezionare i campi da inserire.

Riquadro

  • N° (campo NUMLIG)

Riga corrente del riquadro

  • Campo (campo CODZONE)

In questa colonna si definisce il nome del campo della tabella così come sarà definito nel software (un campo di nome NOMECAMPO definito in una tabella con abbreviazione ABV potrà essere letto con la sintassi [F:ABV]NOMECAMPO ).

Per i campi creati in specifico, il nome del campo deve iniziare con X_, Y_ o Z_.

Nel database, ogni campo corrisponde ad uno o più campi (a seconda che il campo sia o meno dimensionato: i campi corrispondenti si chiamano NOMECAMPO_0, NOMECAMPO_1, NOMECAMPO_2…)

Per inserire e visualizzare il campo corrispondente in una videata, gli si darà lo stesso nome nel dizionario delle videate e si utilizzerà simultaneamente la videata e la tabella nella gestione oggetti.

  • Descrizione (campo INTITCOURT)

Descrizione associata al codice precedente.

  • [Sélection] (campo SELECT)

Se il campo è uguale a Siil campo viene inserito nel riquadro principale. Di default, i campi non presenti nel riquadro principale vengono proposti a Si, mentre quelli presenti senza il riquadro principale vengono proposti a No.

Chiudi

Permette di inserire globalmente un insieme di campi derivanti da una tabella in un modello a partire dalla riga corrente del riquadro.

Ricalcolo posizioni flag

Questa funzione è presente solo per i modelli con un tipo di file a lunghezza fissa. Permette di ricalcolare la posizione di tutti i campi del gruppo di dati corrente (che hanno lo stesso flag della riga). Il ricalcolo si fa partendo dalla posizione 1 sul primo campo del gruppo e aggiungendovi la lunghezza di ogni campo per ottenere la posizione del campo successivo.

 

Chiudi

 

Stampe

Di default, le seguenti stampe sono associate alla funzione :

 PRTSCR : Stampa Videata

Ma ciò lo si può modificare tramite parametrizzazione.

Bottoni specifici

I seguenti campi sono presenti sulla finestra aperta da questo bottone :

Blocco numero 1

  • campo OBJET

 

  • campo CLES

 

Blocco numero 2

  • Dal dossier (campo DOSORG)

Questo campo permette di definire il dossier a partire dal quale sarà copiata la scheda. Le sintassi possibili sono descritte nell'allegato dedicato.

  • Tutti i dossiers (campo TOUDOS)

Questa opzione permette di copiare la scheda verso tutti i dossier definiti nel dizionario (tabella ADOSSIER della soluzione corrente).

  • Al dossier (campo DOSDES)

Questo campo permette di definire il dossier nel quale sarà copiata la scheda. Le sintassi possibili sono descritte nell'allegato dedicato.

Chiudi

Questo bottone permette di copiare la definizione della scheda da o verso un altro dossier.

I seguenti campi sono presenti sulla finestra aperta da questo bottone :

Riquadro Intervallo

  • Campo (campo BNOM)

Indica il nome del campo per cui può essere inserito un intervallo.

  • Valore inizio (campo BDEB)

Permette di inserire dei limiti di inizio e di fine per ogni campo definito come criterio inserito o non visualizzato nei riquadri dei campi. Se viene inserito un campo vuoto, si considera che non vi sono intervalli. Tali intervalli verranno proposti di default durante l'export.

  • Valore fine (campo BFIN)

 

Riquadro Criteri

Le tabelle utilizzate nel modello import/export sono qui elencate, per permettere di definire un eventuale filtro dei dati esportati.

  • Criterio (campo FLGEXP)

Permette di definire una condizione logica che utilizza i campi della tabella. Solo le righe che soddisfano questa condizione potranno essere esportate.

Chiudi

Dà accesso ad una videata in cui è possibile definire i valori di default dei criteri per filtrare i dati esportati. Quando si lancia l'export, i criteri sono visualizzati e possono essere modificati; quando si lancia una concatenazione di export, i criteri sono applicati automaticamente senza inserimento su ognuno dei modelli per i quali sono stati definiti.

Barra di menù

Opzioni / Export schema di un modello

Questa funzione, accessibile quando il formato di export è XML, permette di produrre un file XSD che descrive la struttura del file creato dal modello. Tale file viene creato nella sotto-directory a seconda della directory in cui si trovano i dossier sul server applicativo:

 X3_PUB/DOSSIER/GEN/ALL/WEBS    (dove DOSSIER è il nome del dossier corrente)

Il nome di questo file è WWIMPMODELLO.xsd  (MODELLO è il nome del modello di import-export).

Questo file XSD definisce il formato dei dati allo scopo di permettere un controllo preliminare di validità sintattica utilizzando tool di tipo ETL. La sintassi ottenuta integra (oltre a testate standard) delle righe del tipo:

  • Righe che descrivono i gruppi e le righe (qui un modello ADI e dei campi CODE e NUMTAB, i cui tag sono ADI_CODE e 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>

  • Righe che descrivono i tipi di dati:

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

Si possono vedere qui degli esempi di campi di tipo numerico, poi alfabetico. Qualche commento riguardo alla maniera in cui viene generata questa sintassi:

  • Il nome di ogni campo (qui, ADI_CODE e ADI_NUMTAB) corrisponde al contenuto della colonna "tag" del modello.
  • Il campo pattern proviene direttamente dalla colonna "pattern" nel modello (qui, la sintassi proposta corrisponde ad un numero qualunque di caratteri alfabetici maiuscoli)
  • I campi minOccurs e maxOccurs vengono alimentati tenendo conto della colonna "obbligatorio" del modello
  • I tipi di dati, che possono essere, secondo i casi, "xs:string", "xs:int", "xs:decimal", "xs:date", "xs:base64Binary","xs:boolean", provengono dai tipi di dati X3 corrispondenti, così come il campo maxLength ed i campi maxExclusive, minExclusive, maxInclusive, minInclusive a seconda dei casi.

Documentazione / Paragrafi

Questa funzione permette di accedere alla gestione della documentazione, sul primo paragrafo della documentazione (se esiste) associato alla scheda corrente.

Documentazione / Legami

Questa funzione permette di accedere alla gestione dei legami. Questa permette di definire dei collegamenti tra la scheda corrente ed altre schede (ad esempio dei collegamenti tra funzioni e parametri). Questi collegamenti, puramente informativi, permettono di alimentare il meccanismo di generazione degli scheletri di documentazione.

Documentazione / Generazione

Questo menù permette di lanciare una generazione di documentazione. La generazione può essere lanciata anche partendo dal bottone [Generazione] nella parte inferiore della finestra.

Possono essere lanciati tre tipi di generazione, separatamente o simultaneamente:

  • la generazione dello scheletro di documentazione partendo dal dizionario (tabelle ADOCUMENT, ADOCBLB, ADOCCLB).
  • la generazione della documentazione partendo dalle tabelle precedenti.
  • la generazione della documentazione su campo.

Gli intervalli proposti di default tengono conto della scheda in corso, ma possono essere modificati in fase di lancio.

Messaggi di errore

Oltre ai messaggi generici, i seguenti messaggi d'errore possono apparire al momento dell'inserimento :

Import impossibile su questo oggetto

L’oggetto non è stato definito come importabile (casella da contrassegnare Import non contrasssegnata nel folder Diversi).

Codice già esistente nella riga nnn

Si inserisce due volte lo stesso codice associato a dei gruppi diversi.

ZZZ campo inesistente (XXXXXX, YYYYY, ... )

Questo messaggio è visualizzato quando si esprime un legame nel riquadro dei gruppi utilizzando un campo ZZZ che non è referenziato in nessuna delle tabelle (XXXXX, YYYYY, ...) definite nelle righe precedenti.

G separatore (/) non referenziato nei campi. Vietato su un modello di import

Nel riquadro dei campi, per il gruppo G, non esiste la riga che indica il posto in cui si trova l'identificatore di gruppo (sintassi /).

Legame impossibile. Vietato su un modello di import

Nelle righe che descrivono i campi, si è tentato di inserire un campo di una tabella che non può essere collegata alla tabella principale del gruppo.

Lunghezza errata nnn<>mmm

La lunghezza definita dal formato numerico (mmm) è diversa dalla lunghezza del campo definita nella colonna precedente (nnn).

Osservazione:

Non è effettuato nessun test di esistenza di directory sul percorso definito di default nel modello (la directory può non ancora esistere: questo controllo sarà effettuato solo al lancio dell'import o dell'export)

Tabelle utilizzate

SEEREFERTTO Riferirsi alla documentazione di Implementazione

Istruzioni di utilizzo

Principi di base

Quando si parametrizza un modello di import, occorre aver presente alcuni principi:

  • L’import permette le azioni di creazione e di modifica.
  • Per determinare l'azione da eseguire su un record importato, il sistema effettua un test di esistenza dell'oggetto da elaborare. Questo test viene effettuato caricando la chiave primaria dell'oggetto con le informazioni del record importato.
  • Di conseguenza, se la chiave principale non è parametrizzata, tutti i record passeranno in modalità creazione (e funzioneranno solo se la chiave dell'oggetto da creare può essere assegnata automaticamente, ad esempio tramite un contatore).
  • Un import corrisponde ad una simulazione di inserimento di tutte le videate collegate all'oggetto importato.
  • Elabora tutti i campi della videata effettuando gli stessi controlli di un'inserimento interattivo.
  • Non prende in considerazione i campi non inseribili nella videata. (salvo casi particolari e referenziati). Di conseguenza, i campi parametrizzati in un modello che corrisponde ad un campo non inseribile non sono importati.
  • L'ordine in cui sono parametrizzati i campi in una registrazione non è importante. L'import carica dapprima tutti i campi del file e poi li importa nell'ordine dei campi nelle videate.

Modelli standard installati

L'export di dati è sempre possibile a prescindere dall'oggetto, mentre l'import non sempre lo è. I meccanismi automatici di decodifica dei flussi di dati e il richiamo dei controlli collegati all'oggetto automatizza enormemente l'import, ma non è sufficiente per permettere un import automatico sugli oggetti complessi. Infatti, non tutti gli oggetti sono importabili.

Nel dossier di riferimento viene fornito un modello di import (modificabile) per ogni oggetto che è possibile importare. Vi possono anche essere delle specificità collegate a questo import: ciò viene definito nell'help on line associato al modello di import per cui esistono delle particolarità (questo help è accessibile da Alt + F1 quando il modello è caricato).

Si troverà l'elenco degli help corrispondenti (suddivisi per moduli) a partire dal seguente legame.

Riquadro degli identificatori

La scelta della struttura dei file da importare o da esportare dipende dalle possibilità di estrazione o di integrazione che si trovano nel software con cui si vuole dialogare.

In ogni caso, i dati devono essere organizzati in gruppi logici di righe, che possono essere di tipi diversi (testata, dettaglio, sotto-dettaglio, per esempio), o di un solo tipo. L'organizzazione di questi gruppi è definita nel riquadro dei flag situato sul primo folder del modello.

Ogni gruppo è associato ad una delle tabelle del database (la prima è obbligatoriamente la tabella principale dell'oggetto, le successive sono definite da dei legami partendo dalle precedenti). Quando si utilizza il modello per realizzare un export di oggetto, è possibile definire dei legami con qualsiasi tabella del database sulla quale esiste un legame teorico, per estrarre dei dati collegati. In compenso, per un modello di import, sono effettivamente utilizzabili solo le tabelle aggiornate dall'oggetto: E' impensabile sperare di importare simultaneamente l'ordine ed il cliente, poichè l'oggetto ordine non è stato previsto per ciò.

Si noti inoltre che questo riquadro può essere vuoto se una struttura di dati da importare o da esportare è basata sul percorso della sola tabella principale (in questo caso la colonna Codice della pagina successiva rimarrà vuota). Non è inoltre necessario realizzare vari gruppi di dati se più tabelle collegate devono essere esportate contemporaneamente. Infatti, se si fanno apparire, in uno stesso gruppo di dati, i campi estratti da tabelle diverse, il programma di export tenterà di risolvere i legami tra tabelle utilizzando la struttura dei legami descritta nel dizionario. Questo ovviamente suppone che si abbia un solo legame possibile della tabella principale del gruppo verso la tabella descritta (altrimenti, sarà utilizzato il primo legame incontrato, rischiando che non sia quello giusto).

Esiste un caso particolare in cui è necessario creare almeno un gruppo: se il modello è definito in lunghezza fissa (in questo caso, è infatti necessario che si definisca da qualche parte una lunghezza di record, e questo si effettua nel riquadro dei gruppi). Se non si desidera che il flag di gruppo sia obbligatoriamente presente nella lista dei campi, basta definire questo gruppo con un codice vuoto: solo un gruppo potrà essere definito e la colonna Codice non verrà più inserita nel folder seguente.

Il riquadro degli identificatori è accessibile in inserimento se l'oggetto è di tipo semplice. Se si definiscono degli identificatori di gruppo, viene associato ad ogni identificatore un livello, una tabella e delle condizioni di legami che permettono di collegare le righe tra loro.

Il livello vale 1 per la tabella principale da importare o da esportare (che non viene inserita nel riquadro ma dedotta dall'oggetto associato al modello).

Per ogni tabella collegata ad una tabella precedente, il livello è uguale al livello della tabella precedente se esiste un legame biunivoco tra le due tabelle, e vale questo livello più uno se più record sono legati ad un record della tabella precedente. Il legame è caratterizzato dalla chiave della tabella di destinazione da leggere e dall'espressione dei segmenti di chiave il cui valore definisce le righe collegate.

Si immagini per esempio che si definiscano dei gruppi secondo l'esempio qui in basso:

Livello

Gruppo

1

A

2

B

2

C

3

D

Allora si otterrà il seguente intreccio di informazioni:

Gruppo A record 1

 

 

 

Gruppo B record 1.1

 

 

Gruppo B record 1.2

 

 

...

 

 

Gruppo B record 1.N

 

 

Gruppo C record 1.1

 

 

 

Gruppo D record 1.1.1

 

 

Gruppo D record 1.1.2

 

 

...

 

 

Gruppo D record 1.1. M

 

Gruppo C record 1.2

 

 

 

Gruppo D record 1.2.1

 

 

...

 

Gruppo C record 1.Q

 

 

 

Gruppo D record 1.Q.1

 

 

...

 

 

Gruppo D record 1.Q.R

Gruppo A record 2

 

 

 

Gruppo B record 2.1

 

 

...

 

Esempio di gruppi

Per illustrare questa parametrizzazione, è possibile prendere l'esempio di un modello (solo di export) utilizzando le società e i siti:

  • La tabella principale, che si chiama COMPANY, è a livello 1.
  • Immaginiamo che si desideri integrare delle informazioni collegate alla valuta contabile (campo ACCCUR) nel file esportato. In questo caso, è possibile non definire un nuovo gruppo collegato alla tabella società, ma semplicemente definire dei campi della tabella TABCUR nel gruppo. Il motore di export analizzerà il dizionario per cercare un legame tra la tabella COMPANY e la tabella TABCUR. Siccome ce ne sono diversi, il primo sarà quello ad essere utilizzato (nel nostro caso, è il collegamento che ci interessa).
  • Se si fossero volute esportare delle informazioni collegate alla valuta del capitale sociale (campo RGCCUR), sarebbe stato necessario creare un secondo gruppo di dati, sempre di livello 1, basato sulla tabella TABCUR, indicando RGCCUR nella colonna legame. E' comunque quello che si sarebbe portati a fare se il legame non fosse esplicito; per esempio il campo CREUSR, che corrisponde al codice dell'utente che ha creato la scheda, utilizza un tipo generico (A) che non permette di effettuare il legame in maniera automatica. Se si fosse voluto far figurare delle informazioni relative all'utente che ha creato la scheda, sarebbe stato necessario definire il legame utilizzando un gruppo.
  • Si supponga che in seguito si voglia far apparire l'elenco dei siti collegati alla società. Si dovrà allora creare un gruppo di livello 2, che utilizza la tabella FACILITY, con un legame basato sull'indice FCY0 prendendo come valore il campo CPY della tabella principale.
  • Infine, se si desidera estrarre i valori dei parametri direttamente collegati ad ogni società, si creerà un secondo gruppo di dati di livello 2, utilizzando la tabella ADOVAL, con un legame basato sull'indice ADW0 che prende come valore il campo CPY della tabella principale.

Il riquadro qui di seguito riassume il riquadro degli Identificatori così come se fossero inseriti:

Livello

Codice

Tabella

Chiave

Legame

1

 CPY

COMPANY

CPY0

 

record principale del gruppo

1

CUR

TABCUR

TCU0

[CPY]RGCCUR

1 record collegato

2

FCY

FACILITY

FCY1

[CPY]CPY

N record collegati

2

ADP

ADOVAL

ADW0

[CPY]CPY

M record collegati

I vari formati di file

I formati di file sono determinati dal tipo, che può assumere uno dei valori qui di seguito.

Separatore di campo

Si tratta di un file di lunghezza variabile, in cui tutti i campi sono divisi da un separatore (il separatore di campo indicato come SC).

Campo 1 record 1

SC 

Campo 2 record 1

SC 

...

Campo N record 1

SC 

Campo 1 record 2

SC 

Campo 2 record 2

SC 

...

Campo N record 2

SC 

Separatore di record

Si tratta di un file di lunghezza variabile in cui tutti i campi sono divisi da un separatore (il separatore di campo). Quando una record termina, un altro separatore (il separatore di riga definito come SL) sostituirà il separatore di campo.

Campo 1 record 1

SC 

Campo 2 record 1

SC 

...

Campo N record 1

SL

Campo 1 record 2

SC 

Campo 2 record 2

SC 

...

Campo N record 2

SL

Formato Delimitato

Si tratta di un file di lunghezza variabile dello stesso tipo del file 'separatore di record' (due diversi separatori). Ma in più, i campi di tipo stringa di caratteri sono inquadrati da un delimitatore di campo (definito come DC, nell'esempio qui sotto, il secondo campo è di tipo alfanumerico).

Campo 1 record 1

SC 

DC

Campo 2 record 1

DC

SC 

...

Campo N record 1

SL

Campo 1 record 2

SC 

DC

Campo 2 record 2

DC

SC 

...

Campo N record 2

SL

Formato di lunghezza fissa

Si tratta di un file i cui campi sono definiti in lunghezza fissa senza separatore di campo. La lunghezza totale del record deve allora essere indicata in parametro. Ci può essere un separatore di riga. Se è il caso la sua lunghezza non deve essere detratta dalla lunghezza del record.

Si definisce comunque la lunghezza di ogni gruppo, se i gruppi di dati sono definiti nel riquadro dei flag.

Campo 1 record 1

< ---------Campo 2 record 1------------ >

...

< --Campo N record 1-- >

SL

Campo 1 record 2

< ---------Campo 2 record 2------------ >

...

< --Campo N record 2-- >

SL

Formato XML

Si tratta di un formato in cui i dati sono definiti nei tag in formato XML.

In export, si ritrovano una serie di importanti informazioni collegate contemporaneamente al modello e all'estrazione. In import, i dati utili sono più limitati, si possono quindi limitare quelli nel file che si cerca di importare.

Passata la testata xml, un tag iniziale permette di precisare le condizioni dell'export:

 <EXP MOD="modello" OBJ="oggetto" FOL="dossier" DAT="data" TIM="ora" USR="utente" CHR="crono">

modello, oggetto che sono rispettivamente il codice del modello e del relativo oggetto, dossier il codice del dossier data, ora, e utente che sono le caratteristiche delle condizioni dell'estrazione.

Nell'import, il tag iniziale può essere semplicemente <EXP>

Si trovano in seguito, all'occorrenza, dei tag che permettono di definire i parametri e i loro valori:

 <PAR NAM="nome" FST="primo valore" LST="ultimo valore" >

Questi tag sono opzionali

In seguito, si ritrova per ogni gruppo di dati, una testata che si presenta nella seguente forma:

 <GRP LEV="livello" TAB="tabella" KEY="chiave" LNK="legame">

GRPé il codice del gruppo, livello il livello di questo gruppo, tabella, chiave, e legamesono gli altri elementi inseriti nel riquadro dei legami.

Ogni campo è definito da una riga del tipo:

 <FLD NAM="nome_campo" TYP="tipo_dati" LEN="lunghezza" VAL="valore" </FLD>

nome_champo è il nome del campo che si esporta, tipo_dati e lunghezza le sue caratteristiche, valore ne definisce il valore.

Ogni gruppo termina con un tag </GRP>, ed un tag </EXP> deve chiudere il file.

Formato Flat file

Questo formato è il formato variabile 'Separatore di record' o il formato delimitato (se il campo Delimitatore di campo è indicato).

Se nel modello di import/export sono definiti più livelli, viene generata una sola riga.

Flag livello 1

Campo 1 record 1

SC 

DC

Campo 2 record 1

DC

SC 

...

Flag livello 2

Campo 1 record 2

 

SC 

DC

Campo 2 record 2

SL

In fase di import, l'utilizzo di questo tipo di formato ha come conseguenza un raggruppamento di tutte le righe di dettaglio di un determinato livello sotto la stessa testata, non appena tutti i campi ripetuti nella testata sono esattamente identici.

Formato testata

Questo formato è lo stesso del formato 'Flat file' con in più una riga di testata supplementare corrispondente ai titoli dei campi del modello.

Tale formato viene utilizzato generalmente in Germania, per i file di tipo GDPDU.

Allegati tecnici

Si troveranno informazioni complementari negli allegati tecnici seguenti: