Moduli richiesti: Modulo Base
Opzioni programma: vai alle opzioni
Le procedure sono delle porzioni di codice in linguaggio VB.NET (o VBScript solo nel caso di precaricate per il CP2) che l'utente può impostare, allo scopo di eseguire delle operazioni sui dati non previste o particolari. Le procedure quì create possono essere usate da:
- Profili di import/export
- attribuire un valore ad un campo nella corrispondenza campi, in questo caso la procedura sarà una Function che restituirà un dato del tipo che il campo di destinazione accetta
- eseguire operazioni particolari prima o dopo aver scritto tutti i record, prima o dopo l'entrata in una relazione fra tabelle oppure prima o dopo la scrittura di un record, in questo caso la procedura sarà una Sub
- Alert
- per attribuire una procedura per condizionare la generazione di un alert
- per attribuire una procedura da eseguire allo scattare di un alert
- Configuratore di prodotto su distinta base neutra (CP2)
1 - Elenco Procedure
Codice
Campo numerico univoco che identifica una procedura. I codici compresi tra 1 e 1000 sono riservati NTS mentre quelli superiori a 1000 sono disponibili all'utente.
Descrizione
Rappresenta la descrizione della procedura, come il codice anche la descrizione della procedura deve essere univoca.
Tipo procedura
Rappresenta il tipo della procedura e può assumere 4 valori:
-
Function: sono procedure, racchiuese fra le parole chiave Function - End Function, devono restituire in uscita un valore.
-
Sub: sono procedure, racchiuse fra le parole chiave Sub - End Sub, che non restituiscono valori ma eseguono solo delle operazioni
-
Expression e SQL Query: non gestiti
Precarica
Flag che indica se precaricare la procedura all'avvio del processo di Import/Export oppure caricare la procedura nello Script Engine immediatamente prima dell'uso. Procedure che hanno un uso frequente è consigliabile precericarle.
Proc. in Vb.Net
Indicare con tale spunta se la procedura è definita in linguaggio VB.NET (o VBScript solo nel caso di precaricate per il CP2).
2 - Corpo Procedura
Normalmente l'editor delle procedure è disabilitato; per abilitarlo premere sul pulsante 'Modifica'. Terminata la modifica o l'inserimento della nuova procedura è possibile salvare o ripristinare il tutto; il pulsante controlla, se abilitato, consente di controllare la sintassi solo per procedure di tipo Sub, Function o Expression.
Import/Export
Negli script, per aggiungere degli 'Imports' e/o dei 'Reference' occore utilizzare la seguente sintassi (devono essere scritti fuori dalle function/sub):
<reference assembly="BN__STD.dll" />
Imports NTSInformatica.CLN__STD
Gli imports passati per default dal framework di busnet sono:
Imports Microsoft.visualbasic
Imports System
Imports System.Collections
Imports System.Data
Imports NTSInformatica
Imports NTSInformatica.CLN__STD
Gli oggetti/variabili pubblici sempre disponibili in tutti gli script .Net sono i seguenti:
- oApp
- oMenu
- oCleComm
- oCleImex
tra le sue funzioni permette di scrivere un messaggio nel file di log del processo di import/export (B?IEIMPO*.LOG) col metodo oCleImex.WriteLog("Messaggio")
- DATAIN
- DATAOU
- VARS
DATAIN (di tipo dataset) che contiene i datatable con i dati di partenza da importare/esportare
DATAOU (di tipo dataset) che contiene i datatable delle tabelle/file che dovranno essere scritti in fase di export
VARS (di tipo hastable) che contiene le variabili globali si accede alle variabili con il comando VARS! ... , che sono (n è il numero di livello di relazione):
- VARS!glProfilo: è una variabile contenente il numero del profilo in esecuzione
- VARS!gnLivRel: è una variabile contenente il numero della relazione attualmente in valutazione del profilo in esecuzione
- VARS!IenNomeTabIn: è una variabile contenente il nome della tabella da cui leggere i datiVARS!IenNomeTabOu: è una variabile contenente il nome della tabella in cui scrivere i dati
- VARS!IeDataIn: datatable dei dati di partenza da importare/esportare, correntemente valutato (contenuto in DATAIN, meglio usare DATAIN.Tables(VARS!IenNomeTabIn.tostring))
- VARS!IenDataTable: datatable della tabella/file che dovrà essere scritto in fase di export correntemente valutato, n è il numero di livello (contenuto in DATAOU, meglio usare DATAOU.Tables(VARS!IenNomeTabOu.tostring))
- VARS!IenNomeFileExt: è una variabile stringa contenente il nome del file ASCII esterno utilizzato per l'import/export; la stringa contiene il nome del file con l'estensione e la path
- VARS!IenSqlWhere: contiene la clausola where quando il tipo filtro impostato per il processo è di tipo "esteso", fornito cioè dell'utente. La variabile di tipo stringa è modificabile unicamente all'interno dello script associato all'evento "Initialize" per sovrascrivere l'eventuale filtro fronito dal cliente. la variabile vale "" (stringa vuota) quando la tipologia di filtro della corrispondenza tabella è diversa da "filtro esteso"
- VARS!IeCancelRow: è una variabile usata in BeforeInsert e BeforeUpdate: se impostata = true, la riga che si sta trattando non verrà salvata nel database
- VARS!IeCancelRel: è una variabile usata in BeforeInsert e BeforeUpdate: se impostata = true, la relazione tra la tabella in analisi e quelle in 'relazioni tabelle' non viene applicata: (ex: relazione testmag -> movmag: non apre il processo di scrittura di movmag)
- VARS!IECancelAll: è una variabile che se in viene impostata = true, al termine della routine Initialize oppure BeforeAll l'importazione termina, nelle altre routine non viene considerata
- VARS!IEExitFalse: è una variabile che se viene impostata = true, al termine dell'importazione termina con messaggio di import terminato non correttamente
Gli oggetti/variabili pubblici disponibili SOLO nella routine TERMINATE in tutti gli script in .NET sono:
- VARS!glRigheTot = righe da elaborare considerando anche le relazioni
- VARS!glRigheElab = righe elaborate considerando anche le relazioni
- VARS!glRigheIns = righe inserite considerando anche le relazioni
- VARS!glRigheUpd = righe aggiornate considerando anche le relazioni
- VARS!glRigheSalt = righe saltate considerando anche le relazioni
- VARS!glRigheErr = righe con errori considerando anche le relazioni
- VARS!lRigheTot = righe da elaborare per singolo livello
- VARS!lRigheElab = righe elaborate per singolo livello
- VARS!lRigheIns = righe inserite per singolo livello
- VARS!lRigheUpd = righe aggiornate per singolo livello
- VARS!lRigheSalt = righe saltate per singolo livello
- VARS!lRigheErr = righe con errori per singolo livello
Un'altra categoria di variabili, utilizzabili all'interno delle procedure, sono quelle che contengono i valori dei campi del record di origine e quelle che contengono i valori dei campi di destinazione, mano a mano che vengono calcolati. Particolare attenzione è da prestare alla validità dei dati contenuti in questi variabili, soprattutto quelle che contengono i valori di destinazione. Queste variabili sono utili per eseguire operazioni particolare mediante le procedure, effettuare dei calcoli fra campi, ecc.
Le variabili che contengono i valori dei campi di origine, sono definite con il nome VARS!IeIn(Livello relazione)Row!(Nome campo) dove (Livello relazione) è un numero che identifica il livello di relazione fra le corrispondenze tabelle (da 1 a 6 possibili livelli di relazione) e (Nome campo) è il nome del campo del record di origine. Le variabili che contengono i valori dei campi di destinazione, sono definite con il nome VARS!IeOu(Livello relazione)Row!(Nome campo) dove (Livello relazione) è un numero che identifica il livello di relazione fra le corrispondenze tabelle e (Nome campo) è il nome del campo di destinazione; ad esempio la variabile contenente il codice del cliente di Business, durante l'esportazione di un documento di magazzino, sarà VARS!IeIn1Row!tm_conto, la variabile che contiene il codice dell'articolo di Business sarà VARS!IeIn2Row!mm_codart mentre la variabile che contiene lo stesso codice articolo, ma sulla destinazione, sarà VARS!IeOu2Row!articolo.
Le variabili di nome VARS!IeIn(Livello relazione)Row!(Nome campo) vengono impostate prima di trattare ogni record di origine e sono valide fino a quando non si passa al record successivo. Le variabili VARS!IeOu(Livello relazione)Row!(Nome campo) vengono impostate dopo le precedenti, nell'ordine indicato nella 'Corrispondenza campi'.
|
(1° record – livello di relazione 1) |
|
ORIGINE |
DESTINAZIONE |
|
NomeCampo |
(ValoreCampo) |
Variabile VARS!Ie... |
NomeCampo |
(ValoreCampo) |
Variabile VARS!Ie... |
1. |
Tipo docum. |
("B") |
VARS!IeIn1Row!tm_tipork |
Tipo docum. |
("B") |
VARS!IeOu1Row!tipo |
2. |
Anno docum. |
(1998) |
VARS!IeIn1Row!tm_anno |
Anno docum. |
(1998) |
VARS!IeOu1Row!anno |
3. |
Numero docum. |
(156) |
VARS!IeIn1Row!tm_numdoc |
Numero docum. |
(156) |
VARS!IeOu1Row!numero |
...
|
(1° record – livello di relazione 2) |
|
ORIGINE |
DESTINAZIONE |
|
NomeCampo |
(ValoreCampo) |
Variabile VARS!Ie... |
NomeCampo |
(ValoreCampo) |
Variabile VARS!Ie... |
1. |
Riga |
(1) |
VARS!IeIn2Row!mm_riga |
Riga |
(1) |
VARS!IeOu2Row!riga |
2. |
Codice articolo |
("A152") |
VARS!IeIn2Row!mm_codart |
Codice articolo |
("PRN34") |
VARS!IeOu2Row!codice |
3. |
Descr. articolo |
("Stamp. HP") |
VARS!IeIn2Row!mm_descr |
Descr. articolo |
("Stamp. HP") |
VARS!IeOu2Row!descr |
4. |
Quantità |
(10) |
VARS!IeIn2Row!mm_quant |
Quantità |
(10) |
VARS!IeOu2Row!quant (*)
|
5. |
Sconto 1 |
(8,50) |
VARS!IeIn2Row!mm_scont1 |
Sconto |
(8,50) |
VARS!IeOu2Row!sconto |
......
|
(2° record – livello di relazione 2) |
|
ORIGINE |
DESTINAZIONE |
|
NomeCampo |
(ValoreCampo) |
Variabile VARS!Ie... |
NomeCampo |
(ValoreCampo) |
Variabile VARS!Ie... |
1. |
Riga |
(2) |
VARS!IeIn2Row!mm_riga |
Riga |
(2) |
VARS!IeOu2Row!riga |
2. |
Codice articolo |
("B153") |
VARS!IeIn2Row!mm_codart |
Codice articolo |
("MOU20") |
VARS!IeOu2Row!codice |
3. |
Descr. articolo |
("Mouse GH") |
VARS!IeIn2Row!mm_descr |
Descr. articolo |
("Mouse GH") |
VARS!IeOu2Row!descr |
4. |
Quantità |
(19) |
VARS!IeIn2Row!mm_quant |
Quantità |
(19) |
VARS!IeOu2Row!quant (**)
|
5. |
Sconto 1 |
(5) |
VARS!IeIn2Row!mm_scont1 |
Sconto |
(5) |
VARS!IeOu2Row!sconto |
......
...
Il flusso del programma, va dall'alto al basso, da destra verso sinistra; nel momento in cui il programma determina il valore di destinazione del campo quantità del primo record (*), tutte le variabili VARS|IeOu1Row!.. (i campi testata) sono impostate come del resto le variabili VARS!IeOu2Row!riga, VARS!IeOu2Row!codice e VARS!IeOu2Row!descr, la variabile VARS!IeOu2Row!sconto NON è ancora impostata perché successiva in questo momento la variabile ha valore Empty. Nel momento (**), invece, le variabile VARS!IeOu2Row!sconto contiene un dato inattendibile perché si riferisce allo sconto attribuito nella riga precedente.
Codice per leggere ed aggiornare il numero ordine/documento:
Dim oCldBase as new Cld__Base
oCldBase.Init(oApp)
Dim numdoc as Integer
numdoc = oCldBase.LegNuma("DITTA", "TIPORK", "SERIE", ANNO, True)
oCldBase.AggNuma("DITTA", "TIPORK", "SERIE", ANNO, numdoc, False, True, "")
Codice per ricalcolare un documento:
'L'ultimo parametro: True se deve ricalcolare anche il valore delle righe prima del totale documento
RicalcolaDoc("PROVA", "B", 2010, " ", 1, True) 'ricalcolo un DDT emesso
per gli ordini analogamente occorre utilizzare RicalcolaOrd
Alert
Vedere per esempio in merito Alert di tipo e-mail per clienti/fornitori.
CP2
Solo per il CP2 è possibile inserire come precaricate delle procedure scritte in VBScript. Vedere le Note di versione in merito.
|