Funzioni

La piattaforma mette a disposizione diverse procedure che consentono al programmatore di interagire con l’interfaccia di QualiWare e con il database.

Le funzioni elencate sono utilizzabili in ogni script input all’interno di QualiWare – fatta eccezione per quelle che richiedono un parametro relativo al form di partenza, che si possono usare solamente all’interno degli eventi del Form Designer o alle personalizzazioni delle pagine standard.

Manipolazione dati nativi

Le seguenti funzioni sono semplici metodi per la manipolazione di tipi di dato nativi di Visual Basic e della libreria di QualiWare.

Array2String

Function Array2String(ByVal a As DBArray, Optional ByVal separator As String = ",") As String

Ritorna una stringa ottenuta concatenando gli elementi dell’oggetto DBArray specificato nel primo parametro, e utilizzando il separator specificato.

String2Array

Function String2Array(ByVal s As String, Optional ByVal separator As String = ",", Optional ByVal noRemoveEmpty As Boolean = True) As DBArray

Ritorna un oggetto di tipo DBArray ottenuto dividendo la stringa s sulla base della stringa separator specificata. Se il terzo parametro è True, lascia eventuali elementi vuoti.

ctod

Function ctod(ByVal dateValue As String As String) As Date

Converte una stringa in una data, utilizzando il formato della lingua corrente.

dtoc

Function dtoc(ByVal dateValue As Date, Optional ByVal fmt As String = Nothing) As String

Converte una data in una stringa, utilizzando il formato della lingua corrente o quello specificato nel secondo parametro, che è opzionale.

Empty

Function Empty(ByVal expression As Object) As Boolean

Restituisce True se l’espressione specificata (che può essere anche una variabile) è “vuota”. Il concetto di “vuoto” è diverso a seconda del tipo, come dal seguente schema:

  • Stringa: "" o Nothing
  • Numerico: 0
  • Data: data vuota
  • Booleano: False
  • Oggetto: Nothing

max

Function max(ByVal a As Object, ByVal b As Object) As Object

Ritorna il maggiore tra due valori.

min

Function min(ByVal a As Object, ByVal b As Object) As Object

Ritorna il minore tra due valori.

replicate

Function replicate(ByVal str As String, ByVal n As Integer) As String

Ritorna una stringa ottenuta replicando la stringa str per un totale di n volte.

Str

Function Str(ByVal num As Object, Optional ByVal nChars As Integer = 15, Optional ByVal ndec As Integer = 0) As String

Ritorna una stringa ottenuta trasformando num in una stringa di nChars caratteri con un numero di decimali pari a ndec

Val

Function Val(ByVal s As String) As Double

Converte la stringa s in un numero. N.B. il punto decimale deve sempre essere “.”

ValDecimal

Function ValDecimal(byval s As String, byval DecimalSeparator As string) As DoubleFunction Val(ByVal s As String) As Double

Converte la stringa s in un numero. Nel parametro DecimalSeparator è possibile specificare il separatore decimale da considerare

Gestione dei codici di documenti e registrazioni

QualiWare gestisce diverse tipologie di documenti e registrazioni, che hanno rappresentazioni molto differenti fra loro in termini di tabelle del database e di chiavi primarie. E’ pertanto necessario potere identificare ciascun documento o registrazione in modo assoluto, attraverso una coppia di campi, che verranno utilizzati per fare riferimento ad esse nelle tabelle che contengono informazioni comuni a tutte le tipologie, come ad esempio la tabella LINKDOC che contiene i collegamenti, o la tabella DESCDOC che contiene le descrizioni.

Della coppia di campi fanno parte il cosiddetto “IDDOC” che è la tipologia del documento o registrazione, definita nella tabella TIDOCREG (es. “MN” sono i moduli non conformità, “DW” i documenti gestiti nel modulo documentale) , e “CODDOC”, che rappresenta il vero e proprio codice che identifica univocamente il documento o la registrazione all’interno della sua tipologia, ed è composto dalla concatenazione delle componenti della chiavi primaria separate dal carattere “|”.

Tramite le seguenti due funzioni è possibile determinare il codice assoluto a partire dalla tipologia e dai valori delle chiavi primarie, ed effettuare l’operazione contraria, determinando i valori delle chiavi primarie a partire dal codice assoluto.

PackCode

Function PackCode(ByVal IdDoc as String, Byval Fld1 as object, Optional Byval Fld2 as object=nothing, Optional Byval Fld3 as object=nothing, Optional Byval Fld4 as object=nothing, Optional Byval Fld5 as object=nothing, Optional Byval Fld6 as object=nothing) As String

Questa funzione restituisce il codice assoluto a partire dalle chiavi primarie del documento o della registrazione.

Parametri:
IdDoc-> Codice della tipologia del documento o della registrazione
Par1-Par6 -> Componenti della chiave primaria

Ritorna: il codice assoluto.

Esempi:
PackCode(“MN”,”2021   3″) ritorna “20210003|”;
PackCode(“A”,”2021   20″,2) ritorna “202100020|2|”;
PackCode(“DW”,”P”,”2021″,”00004″,1) ritorna “P|2021|00004|1|”.

UnPackCode

Sub UnPackCode(ByVal pTipoDoc As String, ByVal pCodDoc As String, ByRef fld1 As Object, Optional ByRef fld2 As Object = Nothing, Optional ByRef fld3 As Object = Nothing, Optional ByRef fld4 As Object = Nothing, Optional ByRef fld5 As Object = Nothing, Optional ByRef fld6 As Object = Nothing)

Questa funzione restituisce le componenti della chiave primaria del documento o della registrazione a partire dal codice assoluto.

Parametri:
IdDoc -> Codice della tipologia del documento o della registrazione
CodDoc -> Codice assoluto del documento
Par1-Par6 -> Variabili di output che conterranno le componenti della chiave primaria

Esempi:
UnPackCode(“MN”,”20210003|”, fld1) ritorna fld1=”2021   3″;
UnPackCode(“A”,”202100020|2|”,fld1,fld2) ritorna fld1=”2021   20″ e fld2=2;
UnPackCode(“DW”,”P|2021|00004|1|”,fld1,fld2,fld3,fld4) ritorna fld1=”P”, fld2=”2021″, fld3=”00004″ e fld4=1.

Gestione delle tabelle

OpenTable

OpenTable(ByVal DB As QWDatabase, ByVal sql As String, ByVal parameters As AssocArray, ByVal all_records As Boolean, ByVal in_scrittura As Boolean, Optional ByRef errmsg As String = Nothing) As QWTable

Questa funzione restituisce un oggetto di tipo recordset QualiWare per la lettura oppure la scrittura di dati da o nel database.

Parametri:
DB –> Riferimento all’oggetto QWDatabase che rappresenta la connessione al database
SQL -> È necessario specificare l’esatta stringa SQL di lettura/scrittura. Eventualmente comprensiva di parametri per la selezione dei record (essi dovranno essere preceduti dal carattere “:” ed il nome utilizzato per la loro identificazione sarà case sensitive).
PARAMETERS -> È un array associativo gestito per mezzo di un campo chiave il cui nome è il nome del parametro di selezione record da utilizzare ed il cui valore è appunto il valore da ricercare.
ALL_RECORDS -> Questo parametro ha significato solo se la query SQL non ha clausola where. In questo caso, normalmente l’oggetto QWTable è utilizzato non per recuperare tutti i record, ma per effettuare ricerche mirate utilizzando i metodi FindKey e SetRange dell’oggetto rowset. Per evitare di recuperare tutti i record, il parametro è impostato a False di default. Così facendo, nel momento in cui la tabella viene aperta, l’oggetto RowSet non conterrà record, e verrà alimentato dalle registrazioni rilevanti solo dopo l’uso di FindKey e SetRange. Se, invece, si desidera recuperare tutti i record della tabella fin dall’apertura, mettere il parametro a “True”.
IN_SCRITTURA -> Di default è impostato a FALSE e così viene utilizzato nella maggior parte dei casi. Se viene impostato a TRUE l’oggetto recordset QualiWare restituito sarà in grado di effettuare l’inserimento di nuovi record nella tabella, la modifica di record esistenti oppure la cancellazione di essi.
ERRMSG -> Nel caso in cui si verificasse qualche errore, il testo di quest’ultimo sarebbe reperibile all’interno di questa variabile.

CloseTable

Sub CloseTable(ByRef recordset As QWTable)

Queste routine provvedono alla chiusura ed alla distruzione di un oggetto recordset generato per mezzo della funzione “OpenTable“.
Deve sempre essere utilizzata al termine dell’utilizzo della funzione “OpenTable“.
Non viene restituito alcun valore.

Parametri:
RECORDSET -> Oggetto da distruggere generato da “OpenTable“.

Elaborazione grafica

DiagramBuilder

Sub DiagramBuilder(ByVal PostbackProcedure As qwWebControls.QWWebProcedureCode, ByVal Diagram As String, Optional ByVal ExportPNG As Boolean = False, Optional ByVal ExportSVG As Boolean = False)

Questa funzione attiva il Diagram Builder. Il suo funzionamento è spiegato qui.

ImageEditor

Sub ImageEditor(Byval Image As QWWebImage, ByVal PostbackProcedure As qwWebControls.QWWebProcedureCode)

Questa funzione attiva l’editor di immagini. Il suo funzionamento è spiegato qui.

Archiviazione di documenti

DW_Archivia

Function DW_Archivia(ByVal QWSess As QWSession, ByVal pTipo As String, ByVal pTipo_Cont As String, ByRef pNumero As String, ByVal pInd_Rev As Integer, ByVal pTitolo As String, ByVal Campi As AssocArray, ByVal pPubblica As Boolean, ByVal pNomeFile As String, optional ByVal pData as object=nothing,Optional Byval pSovrascrivi As Boolean=false, Optional ByVal pNoAuditTrail As Boolean=false, Optional ByVal pResetWorkFlow As Boolean = False) As String

Questa funzione consente di archiviare un documento.

Parametri:
QWSess –> Oggetto sessione (es. form.GetSession())
pTipo –> Tipo del documento (codice categoria)
pTipo_Cont –> Tipo_Cont del documento
pNumero –> Numero del documento. Se lasciato vuoto, il numero verrà assegnato automaticamente come numero progressivo in base al contenuto del campo pTipo_Cont, con le stesse regole utilizzate per la scheda “Nuovo documento”. Il numero assegnato verrà restituito nel parametro pNumero stesso.
pInd_rev –> Indice di revisione
pTitolo –> Titolo del documento
campi –> Array associativo contenente i valori degli altri campi del record di DOCUMENT. E’ possibile specificare il valore le righe del documento in un campo chiamato “DOC_ROWS”. E’ possibile anche specificare i Tag in un campo chiamato “TAG”. Vedere l’esempio riportato qui.
pPubblica –> True = il documento viene pubblicato
pNomefile –> Nome del file che costituisce il modello. Può essere il nome di un modello locale alla categoria di destinazione, senza il percorso. Nel caso la categoria sia di tipo FORM, ed esista un template di stampa HTML, questo parametro può essere lasciato vuoto.
pData -> Data di redazione e di pubblicazione
pSovrascrivi –> True = sostituisce il file se esiste una versione non pubblicata (opzionale, non specificato equivale a false)
pNoAuditTrail –> True = non salva copia del documento nell’AuditTrail (opzionale, non specificato equivale a false)
pResetWorkFlow-> True = resetta il workflow (opzionale, non specificato equivale a false)
 
Ritorna: stringa vuota se l’operazione è andata a buon fine, il messaggio d’errore altrimenti.
 
Per un esempio di utilizzo, vedere qui.

DW_Crea

Sub DW_Crea(ByVal Page As Object, ByVal pTipo As String, ByVal pTipo_Cont As String, ByVal pNumero As String, ByVal pInd_Rev As Integer, ByVal pTitolo As String, ByVal pNote As String, Optional ByVal pCampi As AssocArray = Nothing)
 
Parametri:
Page –> Oggetto che indica la pagina in cui si trova lo script che attiva la procedura
pTipo –> Tipo del documento (codice categoria)
pTipo_Cont –> Tipo_Cont del documento
pNumero –> Numero del documento
pInd_rev –> Indice di revisione
pTitolo –> Titolo del documento
pNote -> Note relative al documento
campi –> Array associativo contenente i valori degli altri campi del record di DOCUMENT
 
Questa funzione consente di aprire il form di creazione di un nuovo documento. Quando si attiverà, nel browser dell’utente verrà aperta una nuova finestra che mostra la categoria documentale indicata da pTipo e la scheda di creazione di un nuovo documento. Tramite il parametro campi si possono specificare i valori che dovranno apparire di default in specifici input fields del form. Per fare in modo che sia l’utente (o appositi script del form di creazione) a dover specificare Tipo_Cont, numero, indice di revisione e titolo del documento, basta assegnare il valore Nothing ai rispettivi parametri.

DW_Pubblica

Function DW_Pubblica(ByVal DB As QWDataBase, ByVal pCodDoc As String, ByVal pData_Pubbl As DateTime, Optional ByVal UpdateFields As Boolean = False, Optional ByVal CreatePdf As Boolean = False) As String

Questa funzione consente di pubblicare un documento.

Parametri:
DB –> Oggetto database
pCodDoc -> Codice univoco documento
pData_Pubbl -> Data pubblicazione
UpdateFields -> True=aggiorna i campi nel documento
CreatePDF -> True=crea il PDF
Ritorna: stringa vuota se l’operazione è andata a buon fine, il messaggio d’errore altrimenti.
 
Per un esempio di utilizzo, vedere qui.
 
NOTA IMPORTANTE: l’aggiornamento del documento è effettuato tramite QWay Office. Pertanto eventuali formattazioni presenti nei file di tipo Word ed Excel non compatibili con QWay Office verranno perse.

DW_AggiornaCampi

Function DW_AggiornaCampi(ByVal DB As QWDataBase, ByVal pCodDoc As String) As String

Questa funzione consente di aggiornare il documento o il report del form per riflettere il contenuto dei campi del database, in modo che, al momento della consultazione, mostri i dati aggiornati.

Parametri:
DB –> Oggetto database
pCodDoc -> Codice univoco documento da aggiornare
Ritorna: stringa vuota se l’operazione è andata a buon fine, il messaggio d’errore altrimenti.
 
NOTA IMPORTANTE: l’aggiornamento del documento è effettuato tramite QWay Office. Pertanto eventuali formattazioni presenti nei file di tipo Word ed Excel non compatibili con QWay Office verranno perse.

DW_Elimina

Function DW_Elimina(ByVal DB As QWDatabase, ByVal pTipo As String, ByVal pTipo_Cont As String, ByVal pNumero As String) As String

Questa funzione consente di eliminare tutte le revisioni di un documento.

Parametri:
DB –> Oggetto database
pTipo –> Tipo del documento (codice categoria)
pTipo_Cont –> Tipo_Cont del documento
pNumero –> Numero del documento
 
Ritorna: stringa vuota se l’operazione è andata a buon fine, il messaggio d’errore altrimenti.

DW_Clona

Function DW_Clona(ByVal DB As QWDataBase, ByVal pTipo1 As String, ByVal pTipo_Cont1 As String, ByVal pNumero1 As String, ByVal pTipo2 As String, ByVal pTipo_Cont2 As String, ByVal pNumero2 As String, ByVal pPubblica As Boolean, Optional ByVal pData As Object = Nothing, Optional ByVal pTitolo As String = Nothing, Optional ByVal Campi As AssocArray = Nothing) As String

Questa funzione consente di clonare un documento.

Parametri:
DB –> Oggetto database

pTipo1 -> Tipo del documento d’origine
pTipo_Cont1 -> Tipo_Cont del documento d’origine
pNumero1 -> Numero del documento d’origine
pTipo2 -> Tipo del documento di destinazione
pTipo_Cont2 -> Tipo_Cont del documento di destinazione
pNumero2 -> Numero del documento di destinazione
pPubblica -> True = il documento viene pubblicato
pData -> Data di redazione e di pubblicazione
pTitolo -> Titolo (opzionale)
Campi -> Campi da sostituire a quelli del documento origine (opzionale)
Ritorna: stringa vuota se l’operazione è andata a buon fine, il messaggio d’errore altrimenti.

DW_Ricodifica

Function DW_Ricodifica(ByVal DB As QWDataBase, ByVal old_tipo As String, ByVal old_tipo_cont As String, ByVal old_numero As String, ByVal new_tipo As String, ByVal new_tipo_cont As String, ByVal new_numero As String) As String

Questa funzione consente di archiviare un documento.

Parametri:
DB-> Oggetto database (es. form.GetDatabase())
old_tipo-> Tipo del documento da ricodificare (codice categoria)
old_tipo_cont –> Tipo_Cont del documento da ricodificare
old_numero –> Numero del documento da ricodificare
new_tipo-> Tipo del documento ricodificato (codice categoria)
new_tipo_cont –> Tipo_Cont del documento ricodificato
new_numero –> Numero del documentoricodificato
 
Ritorna: stringa vuota se l’operazione è andata a buon fine, il messaggio d’errore altrimenti.

DW_Replace

Function DW_Replace(ByVal DB As QWDataBase, Byval Path As String, Byval Search As String, Byval Replace As String, Optional ByVal CaseSensitive As Boolean=false) As String

Questa funzione consente di sostituire un testo con un altro in un documento in formato DOC o DOCX.

Parametri:
DB –> Oggetto database
Path -> Percorso del file
Search -> Testo da sostituire
Replace -> Testo in sostituzione
CaseSensitive -> True = il testo viene confrontato rispettando maiuscole e minuscole
 
Ritorna: stringa vuota se l’operazione è andata a buon fine, il messaggio d’errore altrimenti.
 
N.B. Se il documento è in formato DOC l’elaborazione avviene usando librerie non native, e potrebbero verificarsi alterazioni nel layout

GetDocumentTags

Function GetDocumentTags(ByVal DB As QWDatabase, ByVal iddoc As String, ByVal coddoc As String) As DBArray

Questa funzione consente di recuperare i tag attribuiti ad un documento.

Parametri:
DB –> Oggetto database

IdDoc -> Tipo di documento o di registrazione da condividere
CodDoc -> Codice del documento o della registrazione da condividere
 
Ritorna: un oggetto di tipo DBArray contenente i tag attribuiti al documento specificato.

SetDocumentTags

Function SetDocumentTags(ByVal DB As QWDatabase, ByVal iddoc As String, ByVal coddoc As String, Byval Tags As DBarray) As String

Questa funzione consente di assegnare i tag ad un documento.

Parametri:
DB –> Oggetto database

IdDoc -> Tipo di documento o di registrazione da condividere
CodDoc -> Codice del documento o della registrazione da condividere
Tags –> Oggetto di tipo DBArray contenente i tag da attribuire al documento specificato
 
Ritorna: stringa vuota se l’operazione si è conclusa con successo, altrimenti il messaggio d’errore.

Collegamento tra documenti

Function Link_Doc(ByVal DB As QWDatabase, ByVal IDDOC1 As String, ByVal CODDOC1 As String, ByVal IDDOC2 As String, ByVal CODDOC2 As String, ByVal tipo_operazione As Integer, Optional ByRef record_set As QWTable = Nothing, Optional ByRef errmsg As String = Nothing, Optional ByVal nomefile As String = Nothing, Optional ByVal importa_nel_DB As Boolean = False) As Boolean

Questa primitiva permette di effettuare un’operazione di collegamento tra due documenti. Ritorna True se l’operazione va a buon fine. In tal caso, all’interno del riquadro dei documenti collegati di ciascuno dei due documenti comparirà un riferimento all’altro.

Parametri:

DB -> Riferimento all’oggetto QWDatabase che rappresenta la connessione al database
IDDOC1 -> campo _IDDOC del primo documento coinvolto nell’operazione
CODDOC1 -> campo _CODDOC del primo documento coinvolto nell’operazione
IDDOC2 -> campo _IDDOC del secondo documento coinvolto nell’operazione (se presente)
CODDOC2 -> campo _CODDOC del secondo documento coinvolto nell’operazione (se presente)
tipo_operazione -> indica il tipo di operazione da effettuare, e può assumere valori da 1 a 5 compresi:

  • 1 -> INSERIMENTO COLLEGAMENTO -> inserisce il collegamento al documento di QualiWare identificato da IDDOC2 e CODDOC2 nella lista di documenti collegati a quello identificato da IDDOC1 e CODDOC1. È possibile usare questa operazione anche per inserire un link ad una pagina esterna al sistema. In questo caso, al posto di IDDOC2 va utilizzata la stringa wildcard **, e al posto di CODDOC2 la url al sito esterno. NOTA: i CODDOC dei documenti di QualiWare vanno passati senza la parte relativa all’indice di revisione.
  • 2 -> RIMOZIONE COLLEGAMENTO SPECIFICO -> rimuove il collegamento tra il documento identificato da IDDOC1 e CODDOC1 e quello identificato da IDDOC2 e CODDOC2
  • 3 -> RIMOZIONE MASSIVA -> rimuove tutti i collegamenti al documento identificato da IDDOC1 e CODDOC1
  • 4 -> QUERY -> ricava la lista di tutti i documenti collegati a quello identificato da IDDOC1 e CODDOC1
  • 5 -> INSERIMENTO FILE -> serve a collegare un file al documento identificato da IDDOC1 e CODDOC1. In questo caso, similmente all’operazione 1, IDDOC2 deve equivalere alla stringa **, mentre il CODDOC2 al percorso del file all’interno del file system. Impostanto il parametro importa_nel_DB a False o a True, il file verrà salvato rispettivamente nella cartella documentale di QualiWare, o in base64 all’interno del DB. Il nome che si vuole dare al file una volta che esso sarà stato salvato va specificato nel posto del parametro nomefile. In caso di salvataggio del file nel DB, il codice in base64 viene memorizzato nella colonna _FILE della tabella LINK_DOC. Si tenga presente che la suddetta colonna, per ragioni di performance, non compare all’interno delle query di selezione fatte tramite l’editor SQL di QualiWare.

record_set -> oggetto di tipo QWTable che, in seguito ad una chiamata con tipo_operazione = 4, riporterà la lista di documenti collegati a quello identificato da IDDOC1 e CODDOC1
errmsg -> stringa che riporta un eventuale messaggio di errore
nomefile -> nome da dare al file una volta che sarà memorizzato nella directory documentale di QualiWare (vedere operazioni 1 e 5)
importa_nel_DB -> se True, il file verrà memorizzato nel database in formato base64 (vedere operazione 5)

Condivisione di documenti e registrazioni

Function Make_HyperLink(ByVal QWSess As QWSession, ByVal pTipoDoc As String, ByVal pCodDoc As String, Optional byval Action as integer=0, Optional byval id_activity as string=nothing, optional byval user as string=nothing, Optional byval tipo_ente As String=Nothing, Optional ByVal ente As String=nothing) As String

Questa funzione consente di creare link che consentono di accedere ad un documento o ad una registrazione, oppure di approvarlo.

Parametri:
QWSess -> Oggetto sessione (es. form.GetSession())
pTipoDoc -> Tipo di documento o di registrazione da condividere
pCodDoc -> Codice del documento o della registrazione da condividere
Action-> Tipo di link da produrre:
0 = Link di apertura semplice
1 = Link di apertura del documento o del form in scrittura–> Valido solo per categorie documentali
2 = Link a pagina semplificata per Visto OK –> Valido solo per workflow BPM
3 = Link a pagina semplificata per Visto KO –> Valido solo per workflow BPM
4 = Link di condivisione, anche per distribuzione (vedere parametro tipo_ente ed ente)
5 = Link per la firma autografa
6 = Link di apertura del form dei dati –> Valido solo per categorie documentali di tipo File
7 = Link di apertura della scheda DOCUMENT97.ASPX per modifica e approvazione documento con funzionalità ristrette (ONLYFORM=1)
id_activity -> ID dell’attività BPM per la quale si deve dare il visto (valido se Action=2 o Action=3 o Action=5)
user -> codice dell’utente che deve dare il visto (valido se Action=2 o Action=3), oppure nome utente ed e-mail dell’utente che deve apporre la firma autografa nella forma “Nome utente <email>” (valido se Action=5), oppure codice dell’utente che deve modificare il documento (valido se Action=7).
tipo_ente -> tipo di destinatario del documento (valido se Action=4 e il documento è stato distribuito). Può essere “P” se è una persona, “E” se è un ente, “C” se è un cliente/fornitore
ente -> codice del destinatario (persona, ente o cliente/fornitore)

N.B. nel caso Action=4 e i parametri tipo_ente ed ente siano specificati, al momento dell’apertura del link viene attivato il flag LISTDIST.RICEVUTO.

ShareDocument

Function ShareDocument(Byval QWSess As QWSession,ByVal IdDoc As String, ByVal CodDoc As String,Byval share As Boolean, optional Byval Expires As DateTime=nothing) As String

Questa funzione consente di creare o revocare la condivisione di un documento, restituendo il link per visualizzare il documento stesso.

Parametri:
QWSess -> Oggetto sessione (es. form.GetSession())
IdDoc -> Tipo di documento o di registrazione da condividere
CodDoc -> Codice del documento o della registrazione da condividere
Share -> True=attiva condivisione, False=revoca condivisione
Expires -> Data di termine della condivisione. Il parametro è valido solo se Share=True, e può essere omesso, nel qual caso la condivisione sarà valida per 7 giorni a partire dalla data del richiamo della funzione.

Chat

OpenChat

Sub OpenChat(ByVal Form As QWWebControls.QWWebPage, ByVal IdDoc As String,ByVal CodDoc As String, Byval Recipients As DBArray)

Questa funzione consente di aprire la chat per un determinato documento specificando una lista di destinatari permessi.

Parametri:
Form -> riferimento al form
IdDoc -> Tipo di documento o di registrazione da condividere
CodDoc -> Codice del documento o della registrazione da condividere
Recipients -> Array dei codici dei destinatari. Il primo codice specificato comparirà come destinatario predefinito all’apertura della finestra

NOTA: questa funzione non è disponibile sulla piattaforma mobile.

Esempio

OpenChat(form,"MN","20210001|",new dbarray("GC","AQ2"))

Apertura di pagine interne ed esterne a QualiWare

BrowserDo

Sub BrowserDo(ByVal Form, ByVal URL As String)–> Versione desktop
Sub BrowserDoMobile7(ByVal Form, ByVal URL As String)–> Versione mobile

Questa funzione consentono di  consente di aprire una funzione interna a QualiWare

Parametri:
Form -> riferimento al form
URL-> nome della pagina ed eventuali parametri

Esempio desktop

BrowserDo(form,"CAUSPAR.ASPX")

Esempio mobile

BrowserDoMobile7(form.page,"MOBILE7_DOCUMENT97.ASPX?CODDOC=" + escape(<coddoc del documento>))

BrowserOpen

Sub BrowserOpen(ByVal Form, ByVal URL As String)–> Versione desktop
Sub BrowserOpenMobile7(ByVal Form, ByVal URL As String)–> Versione mobile

Questa funzione consentono di  consente di aprire una pagina esterna a QualiWare

Parametri:
Form -> riferimento al form
URL-> indirizzo della pagina

Esempio

BrowserOpen(form,"https://www.google.com")

Apertura di documenti e registrazioni

OpenDocument

Sub OpenDocument(ByVal Form, ByVal IdDoc As String, ByVal CodDoc As String)

Questa funzione consente di aprire un documento o una registrazione rispettando i diritti di modifica e lettura impostati.

Parametri:
Form -> riferimento al form
IdDoc -> Tipo di documento o di registrazione da aprire
CodDoc -> Codice del documento o della registrazione da aprire

Interazione con files

File

Function File(ByVal path As String) As Boolean

Ritorna True se esiste il file con il path specificato.

Sane_FileName

Function Sane_FileName(ByVal s As String) As String

Restituisce una stringa corrispondente al nome passato come argomento, con tutti i simboli vietati sostituiti da _ (underscore) e troncamento a 150 caratteri.

CreatePreviewRequest

Sub CreatePreviewRequest(ByVal QWSess As QWSession, ByVal Filename As String, Optional ByVal name As String = Nothing, Optional ByVal share As Boolean = False, Optional ByVal title As String = Nothing, Optional Byval ForceBrowserPreview As Boolean=false, Optional Byval PageNo As Integer=0, Optional Byval Text As String=Nothing) As String

Questa funzione restituisce la URL che consente di visualizzare l’anteprima di un file.

Parametri:
QWSess -> oggetto “sessione” che può essere recuperato con il metodo form.GetSession() nei form e DB.QWSession negli altri tipi di script.
Filename -> Percorso del file
Name -> Nome del file da visualizzare nel download
Share -> Se True l’anteprima verrà mostrata nella finestra di condivisione
Title -> Titolo della finestra di anteprima (opzionale)
ForceBrowserPreview -> Se True l’anteprima verrà visualizzata usando il visualizzatore PDF del browser (opzionale)
PageNo -> Se specificato, l’anteprima si posizionerà sulla pagina specificata
Text -> Se specificato, l’anteprima si posizionerà sulla prima occorrenza del testo specificato

CreateEditRequest

Sub CreateEditRequest(ByVal Filename As String, Optional ByVal Name As String=Nothing, Optional Byval CodDoc As String=Nothing) As String

Questa funzione restituisce la URL che  consente di aprire un file in modifica con QWay Office.

Parametri:
Filename -> Percorso del file da modificare
Name-> Nome del file da visualizzare nel titolo della finestra di editing (opzionale)
CodDoc -> Codice del documento da editare (opzionale). Se specificato, viene presentato il menu “Campi” che consente di inserire nel documento i “Campi QualiWare”.

Esempio di utilizzo:

Dim CodDoc as string=PackCode("DW","P", "ARC","005",9)
Dim path as string=form.GetSession().GetDocumentPath(CodDoc)
Dim url as String =CreateEditRequest(path,"File da editare.docx")

BrowserOpen(form,url)

EditDocumentCC

Sub EditDocumentCC(ByVal form As QWWebPage, ByVal coddoc As String)

Questa funzione consente di aprire un file in modifica usando i Cloud Components

Parametri:
Form -> riferimento al form dal quale si richiama la funzione (N.B. è utilizzabile solo in un form)
CodDoc -> Codice del documento da editare, comprensivo di indice di revisione

Esempio di utilizzo:

EditDocumentCC(form, "P|0|00002|2|")

CreateDownloadRequest

Sub CreateDownloadRequest(ByVal Filename As String, Optional ByVal inline As Boolean = False, Optional ByVal name As String = Nothing) As String

Questa funzione restituisce la URL che consente di effettuare il download di un file

Parametri:
Filename -> Percorso del file da scaricare
inline -> lasciare false
Name-> nome del file scaricato

PrintExcelQuery

Function PrintExcelQuery(ByVal session As QWSess, ByVal queryname As String, ByVal parameters As AssocArray, ByRef xlspath As String, ByRef htmpath As String) As String

Questa funzione genera il report della query specificata in formato .xlsx (o .xls) e la salva nel path specificato.

Ritorna un messaggio di errore se l’operazione non va a buon fine.

Parametri:
session -> sessione corrente
queryname -> nome della query fatta con l’Esperto SQL (va inclusa anche l’estensione .sql)
parameters -> array associativo con i valori degli eventuali parametri richiesti dalla query
xlspath -> path e nome del file con cui verrà salvato il report (va inclusa anche l’estensione)
htmpath -> path e nome del file HTML contenente il grafico

Gestione del workflow BPM

BPMWorkflowAddPersons

Function BPMWorkflowAddPersons(ByVal DB As QWDatabase, ByVal tipo As String, ByVal tipo_cont As String, ByVal numero As String, ByVal ind_rev As Integer, ByVal ActivityID As Integer, ByVal persons As DBArray, ByVal gg_rit As Integer) As String

Function BPMWorkflowAddPersons(ByVal DB As QWDatabase, ByVal coddoc As String, ByVal ActivityID As Integer, ByVal persons As DBArray, ByVal gg_rit As Integer) As String

Questa funzione inserisce nello stesso tempo uno o più utenti all’interno di una specifica attività di workflow di un qualsiasi documento QualiWare in una categoria BPM.
Le persone vengono aggiunte alla fase specificata solamente se risultano già come utenti coinvolgibili all’interno della fase in questione.
La funzione restituisce il messaggio d’errore in caso di fallimento.

Parametri:
DB -> Oggetto database
TIPO -> Codice della Categoria Documentale di QualiWare in cui risiede il documento target.
TIPO_CONT -> Codice del documento target.
NUMERO -> Numero del documento target.
IND_REV -> Indice di Revisione del documento target.
CODDOC -> codice univoco del documento.
ACTIVITYID -> ID dell’attività in cui inserire l’elenco degli utenti specificati.
PERSONS -> Array ad una sola dimensione che contiene l’elenco dei CODICI univoci degli utenti QualiWare da inserire nella fase di workflow.
GG_RIT -> Giorni da aggiungere alla data corrente per calcolare la data di richiesta di completamento dell’attività.

BPMWorkflowDeletePersons

Function BPMWorkflowDeletePersons(ByVal DB As QWDatabase, ByVal tipo As String, ByVal tipo_cont As String, ByVal numero As String, ByVal ind_rev As Integer, ByVal ActivityID As Integer, ByVal persons As DBArray, ByVal all_not_signed As Boolean) As String

Function BPMWorkflowDeletePersons(ByVal DB As QWDatabase, ByVal coddoc As String, ByVal ActivityID As Integer, ByVal persons As DBArray, ByVal all_not_signed As Boolean) As String

Questa funzione effettua l’eliminazione dell’elenco degli utenti specificato dalla attività di workflow specificata. Se il dettaglio degli utenti non viene invece specificato, è possibile cancellare da una attività solo coloro i quali non hanno ancora espresso il proprio benestare o rifiuto.
Se il parametro ALL_NOT_SIGNED che per default è FALSE viene impostato a TRUE, l’array dei CODICI utente non sarò in alcun modo preso in considerazione.
La funzione restituisce il messaggio d’errore in caso di fallimento.

Parametri:
DB -> Database
TIPO -> Codice della Categoria Documentale di QualiWare in cui risiede il documento target.
TIPO_CONT -> Codice del documento target.
NUMERO -> Numero del documento target.
IND_REV -> Indice di Revisione del documento target.
CODDOC -> codice univoco del documento.
ACTIVITYID -> ID dell’attività dalla quale eliminare le persone.
PERSONS -> Array ad una sola dimensione contenente i CODICI univoci degli utenti QualiWare da cancellare.
ALL_NOT_SIGNED -> Di default è impostato a FALSE e così viene utilizzato l’array PERSONS. Può essere impostato a TRUE nel caso in cui si voglia cancellare tutti gli utenti che, come detto, ancora non hanno espresso alcuna preferenza.

BPMWorkflowGetPersons

Function BPMWorkflowGetPersons(ByVal DB As QWDatabase, ByVal tipo As String, ByVal tipo_cont As String, ByVal numero As String, ByVal ind_rev As Integer, ByVal ActivityID As Integer) As DBArray

Function BPMWorkflowGetPersons(ByVal DB As QWDatabase, ByVal coddoc As String, ByVal ActivityID As Integer) As DBArray

Questa funzione restituisce un Array ad una sola dimensione per la lettura dell’elenco degli utenti presenti all’interno della attività di workflow specificata.

Parametri:
DB -> Database
TIPO -> Codice della Categoria Documentale di QualiWare in cui risiede il documento target.
TIPO_CONT -> Codice del documento target.
NUMERO -> Numero del documento target.
IND_REV -> Indice di Revisione del documento target.
CODDOC -> codice univoco del documento.
ACTIVITYID -> ID dell’attività della quale recuperare le persone coinvolte.

BPMWorkflowSign

Function BPMWorkflowSign(ByVal DB As QWDatabase, ByVal tipo As String, ByVal tipo_cont As String, ByVal numero As String, ByVal ind_rev As Integer, ByVal ActivityID As Integer, ByVal name As String, ByVal date_sf As Date, ByVal sign As Boolean, ByVal refuse As Boolean, ByVal refuse_reason As String) As String

Function BPMWorkflowSign(ByVal DB As QWDatabase, ByVal coddoc As String, ByVal ActivityID As Integer, ByVal name As String, ByVal date_sf As Date, ByVal sign As Boolean, ByVal refuse As Boolean, ByVal refuse_reason As String) As String

Questa funzione appone il visto di benestare, oppure di rifiuto (con motivazione), di UN utente all’interno di una specifica attività di workflow in una categoria BPM
È quindi possibile, partendo da una categoria documentale X, apporre visti di persone all’interno del workflow di un documento della categoria documentale Y.
La funzione restituisce il messaggio d’errore in caso di fallimento

Parametri:
FORM -> Oggetto chiamante.
TIPO -> Codice della Categoria Documentale di QualiWare in cui risiede il documento target.
TIPO_CONT -> Codice del documento target.
NUMERO -> Numero del documento target.
IND_REV -> Indice di Revisione del documento target.
CODDOC -> codice univoco del documento.
ACTIVITYID -> ID dell’attività in cui inserire il visto dell’utente specificato.
NAME -> CODICE univoco dell’utente QualiWare per cui inserire il visto nella fase di workflow specificata.
DATE_SF -> Data di apposizione del visto.
SIGN -> Benestare.
REFUSE -> Rifiuto.
REFUSE_REASON -> Motivazione del Rifiuto.

BPMWorkflowWriteEvent

Sub BPMWorkflowWriteEvent(ByVal DB As QWDatabase, ByVal CODDOC As String, ByVal ActivityID As Integer, ByVal Description As String, Optional ByVal OTLP_TraceId As String=Nothing, Optional ByVal OTLP_SpanId As String=Nothing, Optional ByVal Level As Int16=0)

Questa funzione registra un evento utente nella tabella degli eventi del Workflow WF_EVENTS e nella tabella LOGDOC

Parametri:
DB -> Database
CODDOC -> Codice del documento
ActivityId -> ID dell’attività alla quale si riferisce la registrazione nel log.
Description -> Descrizione dell’evento
OTLP_TraceID -> TraceID del protocollo OTLP (opzionale)
OTLP_SpanID -> SpanID del protocollo OTLP (opzionale)
Level-> Livello di gravità della registrazione. 0=Informazione (default), 1=Warning, 2=Error (opzionale)

BPMProcessWorkflow

Function BPMProcessWorkflow(ByVal DB As QWDataBase, ByVal CODDOC As String) as String

Questa funzione elabora il workflow di un documento, effettuando eventuali transizioni di stato e le azioni conseguenti

Parametri:
DB -> Database
CODDOC -> Codice del documento

Ritorna: l’eventuale messaggio di errore.

BPMRemoveWorkflow

Sub BPMRemoveWorkflow(ByVal DB As QWDataBase, ByVal CODDOC As String)

Questa funzione effettua il reset del workflow di un documento

Parametri:
DB -> Database
CODDOC -> Codice del documento

BPMGetCurrentWorkflowActivity

Sub BPMGetCurrentWorkflowActivity(ByVal DB As QWDataBase, ByVal CODDOC As String, ByRef ActivitiesLabel As DBArray, ByRef ActivitiesDescription As DBArray)

Questa funzione determina le attività in corso restituendone le lettere identificative e le descrizioni in altrettanti array

Parametri:
DB -> Database
CODDOC -> Codice del documento
ActivitiesLabel -> Oggetto DBArray contenente le lettere identificative delle attività aperte
ActivitiesDescription -> Oggetto DBArray contenente le descrizioni delle attività aperte

Gestione del workflow documentale di tipo classico

WorkflowAddPersons

Function WorkflowAddPersons(ByVal form As Object, ByVal tipo As String, ByVal tipo_cont As String, ByVal numero As String, ByVal ind_rev As Integer, ByVal phase As String, ByVal persons As DBArray, ByVal gg_rit As Integer) As Boolean

Questa funzione inserisce nello stesso tempo uno o più utenti all’interno di una specificata fase di workflow di un qualsiasi documento QualiWare.
È quindi possibile, partendo da una categoria documentale X, inserire persone all’interno del workflow di un documento della categoria documentale Y.
La funzione restituisce TRUE in caso di successo e FALSE in caso di fallimento.

Parametri:
FORM -> Oggetto chiamante.
TIPO -> Codice della Categoria Documentale di QualiWare in cui risiede il documento target.
TIPO_CONT -> Codice del documento target.
NUMERO -> Numero del documento target.
IND_REV -> Indice di Revisione del documento target.
PHASE -> Fase del documento target in cui inserire l’elenco degli utenti specificati.
PERSONS -> Array ad una sola dimensione che contiene l’elenco dei CODICI univoci degli utenti QualiWare da inserire nella fase di workflow.
GG_RIT -> Giorni da aggiungere alla data corrente per calcolare la data di richiesta di completamento dell’attività.

WorkflowSign

Function WorkflowSign(ByVal form As Object, ByVal tipo As String, ByVal tipo_cont As String, ByVal numero As String, ByVal ind_rev As Integer, ByVal phase As String, ByVal name As String, ByVal date_sf As Date, ByVal sign As Boolean, ByVal refuse As Boolean, ByVal refuse_reason As String) As Boolean

Questa funzione appone il visto di benestare, oppure di rifiuto (con motivazione), di UN utente all’interno di una specificata fase di workflow.
È quindi possibile, partendo da una categoria documentale X, apporre visti di persone all’interno del workflow di un documento della categoria documentale Y.
La funzione restituisce TRUE in caso di successo e FALSE in caso di fallimento.

Parametri:
FORM -> Oggetto chiamante.
TIPO -> Codice della Categoria Documentale di QualiWare in cui risiede il documento target.
TIPO_CONT -> Codice del documento target.
NUMERO -> Numero del documento target.
IND_REV -> Indice di Revisione del documento target.
PHASE -> Fase del documento target in cui inserire il visto dell’utente specificato.
NAME -> CODICE univoco dell’utente QualiWare per cui inserire il visto nella fase di workflow specificata.
DATE_SF -> Data di apposizione del visto.
SIGN -> Benestare.
REFUSE -> Rifiuto.
REFUSE_REASON -> Motivazione del Rifiuto.

WorkflowGetPersons

Function WorkflowGetPersons(ByVal form As Object, ByVal tipo As String, ByVal tipo_cont As String, ByVal numero As String, ByVal ind_rev As Integer, ByVal phase As String) As DBArray

Questa funzione restituisce un Array ad una sola dimensione per la lettura dell’elenco degli utenti presenti all’interno della fase di workflow specificata.

Parametri:
FORM -> Oggetto chiamante.
TIPO -> Codice della Categoria Documentale di QualiWare in cui risiede il documento target.
TIPO_CONT -> Codice del documento target.
NUMERO -> Numero del documento target.
IND_REV -> Indice di Revisione del documento target.
PHASE -> Fase del documento target in cui inserire il visto dell’utente specificato.

WorkflowDeletePersons

Function WorkflowDeletePersons(ByVal form As Object, ByVal tipo As String, ByVal tipo_cont As String, ByVal numero As String, ByVal ind_rev As Integer, ByVal phase As String, ByVal persons As DBArray, ByVal all_not_signed As Boolean) As Boolean

Questa funzione effettua l’eliminazione dell’elenco degli utenti specificato dalla fase di workflow specificata. Se il dettaglio degli utenti non viene invece specificato, è possibile cancellare da una fase solo coloro i quali non hanno ancora espresso il proprio benestare o rifiuto.Se il parametro ALL_NOT_SIGNED che per default è FALSE viene impostato a TRUE, l’array dei CODICI utente non sarò in alcun modo preso in considerazione. La funzione restituisce TRUE in caso di successo e FALSE in caso di fallimento.

Parametri:
FORM -> Oggetto chiamante.
TIPO -> Codice della Categoria Documentale di QualiWare in cui risiede il documento target.
TIPO_CONT -> Codice del documento target.
NUMERO -> Numero del documento target.
IND_REV -> Indice di Revisione del documento target.
PHASE -> Fase del documento target in cui inserire il visto dell’utente specificato.
PERSONS -> Array ad una sola dimensione contenente i CODICI univoci degli utenti QualiWare da cancellare.
ALL_NOT_SIGNED -> Di default è impostato a FALSE e così viene utilizzato l’array PERSONS.  Può essere impostato a TRUE nel caso in cui si voglia cancellare tutti gli utenti che, come detto, ancora non hanno espresso alcuna preferenza.

Invio di e-mail

SendMail

Function SendMail(ByVal DB As Object, ByVal TipoDoc As String, ByVal CodDoc As String, ByVal aDest As DBArray, ByVal aDestCC As DBArray, ByVal aDestBCC As DBArray, ByVal Subj As String, ByVal Txt As String, ByVal show As Boolean, optional ByVal sender As String=Nothing) As Boolean

Questa funzione effettua l’invio di una email agli utenti oppure all’elenco di indirizzi di posta elettronica specificati.
Se i parametri TIPODOC e CODDOC vengono specificati, allora saranno aggiunti all’email i riferimenti QualiWare (allegato per la versione client/server ed hyperlink per la versione web server) al documento referenziato da TIPODOC e CODDOC.
La funzione restituisce TRUE in caso di successo e FALSE in caso di fallimento.

Parametri:
DB -> Database corrispondente alla sessione corrente.
TIPODOC -> Codice del Modulo di QualiWare in cui risiede il documento target.
CODDOC -> Codice univoco del documento target.
ADEST -> Array ad una sola dimensione contenente: l’elenco degli indirizzi email OPPURE i CODICI univoci degli utenti QualiWare OPPURE l’elenco dei NOMI (Cognome + Nome oppure Nome + Cognome) degli utenti QualiWare a cui inviare l’email. Questi saranno i destinatari diretti dell’email (A).
ADESTCC -> Array ad una sola dimensione contenente: l’elenco degli indirizzi email OPPURE i CODICI univoci degli utenti QualiWare OPPURE l’elenco dei NOMI (Cognome + Nome oppure Nome + Cognome) degli utenti QualiWare a cui inviare l’email. Questi saranno i destinatari in copia carbone dell’email (CC).
ADESTBCC -> Array ad una sola dimensione contenente: l’elenco degli indirizzi email OPPURE i CODICI univoci degli utenti QualiWare OPPURE l’elenco dei NOMI (Cognome + Nome oppure Nome + Cognome) degli utenti QualiWare a cui inviare l’email. Questi saranno i destinatari in copia carbone nascosta dell’email (CCN o BCC).
SUBJ -> Oggetto dell’email. Se lasciato vuoto, sarà inserito un oggetto standard con il riferimento univoco QualiWare al documento.
TXT -> Testo dell’email.
SHOW -> Di default è impostato a FALSE e così l’email viene inviata automaticamente e silenziosamente senza alcun intervento da parte dell’utente. Può essere impostato a TRUE nel caso in cui si voglia delegare l’invio dell’email ad un intervento da parte dell’utente.
SENDER -> indirizzo del mittente (opzionale, se non specificato viene usato l’indirizzo e-mail specificato nel campo “Mittente e-mail” della scheda “Dati di configurazione generale”).

CheckMail

Function CheckMail(ByVal address As String) As Boolean

Questa funzione verifica la validità del formato di un indirizzo e-mail, ritornando TRUE se è valido, FALSE altrimenti.

Machine learning

Prediction

Function Prediction(ByVal QWSess As QWSession, ModelCode As string, Byval Values As assocarray, optional byref errmsg As String="", Optional ByRef Score As Single=0) As object

Effettua la stima di un valore a partire dal modello con codice ModelCode e utilizzando i valori presenti nell’array associativo Values. Eventuali errori sono restituiti nella variabile errmsg, mentre i il parametro opzionale Score rappresenta la “probabilità” del valore ed è assegnata solo per Classificazione Multiclasse e Binaria. QWSess rappresenta l’oggetto “sessione” che può essere recuperato con il metodo form.GetSession() nei form e DB.QWSession negli altri tipi di script.

Barcode

ReadBarcode

Function ReadBarcode(nomefile As String, TypeToFind As Integer, Orientation As Integer, ScanArea As Integer, NMaxBarcode As Integer, ByRef errmsg As String) As DBArray 

Effettua il riconoscimento di uno o più barcode a partire da un file PDF o da un’immagine contenuta nel file il cui percorso è contenuto nel parametro nomefile.
La funzione restituisce un array contenente tutti i barcode individuati nell’immagine.
Il parametro TypeToFind contiene il tipo di barcode da riconoscere, e può assumere i seguenti valori:

  • 0=Tutti
  • 1=EAN8
  • 2=EAN13
  • 4=UPCE
  • 8=UPCA
  • 16=Interleaved2of5
  • 32=Code39
  • 64=Code128
  • 128=EAN2
  • 256=EAN5
  • 512=GS1
  • 1024=Codabar
  • 10001=DataMatrix
  • 10002=PDF417
  • 10003=QRCode
  • 10004=Aztec
  • 10005=MaxiCode
  • 10006=MICR
  • 10007=CodablockF
  • 10008=Code16K
  • 10009=MicroPDF

La specifica di un tipo da riconoscere rende l’elaborazione più rapida.

Il parametro Orientation consente di specificare l’orientamento dei barcode nell’immagine. Può assumere i seguenti valori:

  • 0=Qualsiasi
  • 1= Orizzontale da sinistra a destra
  • 2=Verticale dall’alto al basso
  • 4=Diagonale dall’angolo superiore a sinistra all’angolo in basso a destra
  • 8=Diagonale dall’angolo in basso a sinistra all’angolo in alto a destra
  • 16=Orizzontale da destra a sinistra
  • 32768=Verticale dal basso in alto

La specifica di un orientamento rende l’elaborazione più rapida.

Il parametro ScanArea permette di specificare l’area della pagina nella quale effettuare il riconoscimento. Può assumere i seguenti valori:

  • 0=Intera pagina
  • 1=Quadrante in alto a sinistra
  • 2=Quadrante in alto a destra
  • 3=Metà superiore
  • 4=Quadrante in basso a destra
  • 8=Quadrante in basso a sinistra
  • 12=Metà inferiore

NOTA: questo parametro non è più utilizzato dalla versione 2021.06+4. La scansione avviene sempre sull’intera pagina.

Il parametro NMaxBarcode contiene il numero massimo di barcode da restituire.

Nel parametro errmsg vengono restituiti eventuali messaggi d’errore (vuoto=nessun errore).

Ad esempio, il seguente codice può essere inserito in un oggetto “Procedura” che viene specificato come parametro nella chiamata di una funzione “form.AcquirePicture”.

dim err as string dim barcodes as dbarray 
barcodes=ReadBarcode(Parameter1, 0, 0, 0, 1, err) 
form.alert(Array2String(barcodes)) 
form.alert(err)

GenerateBarCode

Function GenerateBarCode(ByVal BarcodeType As Integer, ByVal value As string, Optional ByVal ShowText As Boolean=false) As String 

Genera un’immagine contenente il barcode specificato e ritorna il nome del file che la contiene.
Il parametro BarCodeType contiene il tipo di barcode da generare, e può assumere i seguenti valori:

  • 1=QRCode
  • 2=Code39
  • 3=Code128
  • 4=EAN8
  • 5=EAN13

Il parametro value contiene il testo da riportare nel barcode.
Il parametro opzionale ShowText se assegnato a true consente di visualizzare il testo sotto il barcode.

Traduzione di testi

QWTranslateBing

Function QWTranslateBing(ByVal s As String, ByVal lang As String) As String

Questa funzione consente di tradurre un testo specificato nel parametro s nella lingua specificata nel parametro lang.

Il parametro lang contiene il codice della lingua (culture), che può essere uno dei seguenti:

it = italiano
en = inglese
de = tedesco
fr = francese
es = spagna
ro = rumeno
pt = portoghese
bg = bulgaro
el = greco
zh = cinese
cs = ceco

Accesso alla rete

ConnectToShare

Function ConnectToShare(ByVal resource As String, ByVal user As String, ByVal password As String, ByVal domain As String) As String

Questa funzione consente di aprire la connessione verso una share di rete presente su un altro dominio, specificando utente, password e dominio, e ritornando l’eventuale messaggio d’errore nel caso la connessione fallisca.

DisconnectFromShare

Function DisconnectFromShare(ByVal path As String) As Boolean

Questa funzione chiude la connessione, ritornando “true” se la disconnessione è riuscita.

Il seguente frammento di codice mostra un esempio di come sia possibile enumerare i file contenuti in una share utilizzando queste due primitive.

dim err as string
err=ConnectToShare("\\server\share","utente","password","dominio")

if err<>""
   form.alert(err)
   return
End If

dim f as new dbarray()
f.dir("\\server\share\sottocartella\*.*")

dim i as integer
dim files as string=""
for i=1 to f.size
    files+=f(i)+vbCr
next

DisconnectFromShare("\\server\share")

form.alert(files)

Firma digitale (P7M)

P7MExtract

Function P7MExtract(ByVal filename As string, Optional ByRef signer As string=nothing) As String

Questa funzione estrae e ritorna il percorso del file contenuto in un file P7M firmato digitalmente, il cui percorso è specificato nel parametro “filename”. Nel parametro opzionale “signer” è contenuta la descrizione delle firme digitali presenti nel file specificato.

Crittografia

Encrypt

Function Encrypt(ByVal s As String) As String

Questa funzione consente di crittografare la stringa passata nel parametro “s”.

Decrypt

Function Decrypt(ByVal s As String) As String

Questa funzione consente di decrittografare la stringa passata nel parametro “s”.

Codifica_PW

Function Codifica_PW(ByVal CodiceUtente As String, ByVal password As String) As String

Questa funzione restituisce la versione criptata della password specificata. Va passato anche il codice utente in quanto parte della chiave di codifica.

Decodifica_PW

Function Decodifica_PW(ByVal CodiceUtente As String, ByVal password As String) As String

Questa funzione restituisce la versione decriptata della password specificata. Va passato anche il codice utente in quanto parte della chiave di codifica.

Logging

WriteLog

Sub WriteLog(ByVal message As String)

Effettua il log del messaggio passato come argomento all’interno del file error.log.

È possibile trovare il suddetto file all’interno della directory principale di installazione di QualiWare. Di base la directory è chiamata QualiWare Web Server.

Write_LogDoc

Function Write_LogDoc(ByVal QWSess As QWSession, ByVal iddoc As String, ByVal coddoc As String, ByVal top As Integer, ByVal note As String, Optional ByVal usercode As String = Nothing, Optional ByVal deleted_data As String = Nothing, Optional ByVal OTLP_TraceId As String=Nothing, Optional ByVal OTLP_SpanId As String=Nothing, Optional ByVal Level As Int16=0) As Boolean

Questa funzione consente di registrare una voce di log nella tabella LOGDOC.

Parametri:
QWSess -> Riferimento alla sessione (es. reperita con form.GetSession() o DB.QWSession)
iddoc -> IdDoc del documento, oppure “**”
coddoc -> CodDoc del documento, oppure un valore arbitrario per registrare operazioni non legate ad un documento specifico
top -> codice tipo operazione. Usare valori superiori a 100 – vedere nota.
note -> testo da riportare nella registrazione.
usercode -> codice dell’utente al quale attribuire l’operazione. Se non specificato, viene usato il codice dell’utente autenticato.
deleted_data -> uso interno, lasciare a nothing se si specificano i due parametri successivi.
OTLP_TraceID -> TraceID del protocollo OTLP (opzionale)
OTLP_SpanID -> SpanID del protocollo OTLP (opzionale)
Level-> Livello di gravità della registrazione. 0=Informazione (default), 1=Warning, 2=Error (opzionale)

Ritorna: true se la registrazione è avvenuta con successo, false altrimenti.

NOTA: nel caso il metodo sia utilizzato in Task, per far sì che un eventuale errore venga conteggiato nell’Health Monitor, è necessario passare i seguenti parametri:
– iddoc=’**’
– coddoc=’QWNTSEC’
– top=8001
– level=2

Password

GeneratePassword

Function GeneratePassword(ByVal n As Integer) As String

Genera una password complessa della lunghezza specificata nel parametro

Indicizzazione

IndexDocument

Sub IndexDocument(ByVal QWSess As QWSession, Byval IdDoc As String, ByVal CodDoc As String)Function Array2String(ByVal a As DBArray, Optional ByVal separator As String = ",") As String

Indicizza il documento specificato dai parametri IdDoc e CodDoc. Richiede la specifica della sessione di lavoro nel parametro QWSess.