Condizioni di notifica
Questo evento viene notificato dal framework quando viene richiesto un lock su un documento. Ciò può avvenire nei seguenti casi:
- se in una procedura Visual Code viene usata la funzione GetLock per ottenere manualmente un lock sul documento;
- se viene richiesto un lock su un documento figlio per il quale non è abilitato il servizio Document Locking;
- se viene aggiunto un documento ad una collection;
- se viene modificato un documento figlio in un pannello in layout dettaglio;
- se viene eliminato un documento da un pannello;
- se un documento viene impostato come Deleted;
- se viene modificata una proprietà del documento.
Utilizzo consigliato
L'evento deve implementare la gestione del locking salvando i dati su un database o su una qualsiasi altra fonte dati.
Argomenti
Doc | Oggetto di tipo IDDocument su cui è richiesto il lock. |
User Info | Parametro di tipo stringa contenente le informazioni sull'utente e sulla procedura in corso. Se l'evento viene notificato a seguito di una chiamata a GetLock eseguita dal framework, questo parametro è sempre una stringa vuota. |
Lock Info | Parametro di output di tipo stringa. Se valorizzato, deve essere impostato usando una variabile String. Se il lock non può essere impostato, questo parametro deve essere valorizzato con le informazioni sull'utente che sta modificando il documento. |
Result | Parametro di output di tipo booleano. Deve essere impostato su FALSE se non è possibile impostare un lock sul documento. |
Esempio di codice
// ****************************************************************************
// Evento notificato dal framework quando viene richiesto un lock su un
// documento
// ****************************************************************************
event MyDocumentHelper.GetLock(
IDDocument Doc // Oggetto di tipo IDDocument su cui è richiesto ...
string UserInfo // Parametro di tipo stringa contenente le i...
inout string LockInfo // Parametro di output di tipo stringa. Se v...
inout boolean Result // Parametro di output di tipo booleano. Deve esse...
)
{
string vUserID = null
string vDateLocking = null
//
select into variables (found variable)
set vUserID = UserID
set vDateLocking = DateLocking
from
Lock // master table
where
IDDoc = Doc.docID()
//
if (vUserID == null)
{
// Sul documento non sono attivi lock: inserisco il lock
insert values into Lock
set IDDoc = Doc.docID()
set DateLocking = now()
set UserID = Applicazione.DatiSessione.UserID
}
else if (vUserID == Applicazione.DatiSessione.UserID)
{
// Sul documento è attivo un lock dello stesso utente: aggiorno il lock
update Lock
set DateLocking = now()
where
IDDoc = Doc.docID()
}
else
{
// Sul documento è attivo un lock di un altro utente: interrompo l'operazione fornendo
// informazioni
LockInfo = vUserID
Result = false
}
}
// Evento notificato dal framework quando viene richiesto un lock su un
// documento
// ****************************************************************************
event MyDocumentHelper.GetLock(
IDDocument Doc // Oggetto di tipo IDDocument su cui è richiesto ...
string UserInfo // Parametro di tipo stringa contenente le i...
inout string LockInfo // Parametro di output di tipo stringa. Se v...
inout boolean Result // Parametro di output di tipo booleano. Deve esse...
)
{
string vUserID = null
string vDateLocking = null
//
select into variables (found variable)
set vUserID = UserID
set vDateLocking = DateLocking
from
Lock // master table
where
IDDoc = Doc.docID()
//
if (vUserID == null)
{
// Sul documento non sono attivi lock: inserisco il lock
insert values into Lock
set IDDoc = Doc.docID()
set DateLocking = now()
set UserID = Applicazione.DatiSessione.UserID
}
else if (vUserID == Applicazione.DatiSessione.UserID)
{
// Sul documento è attivo un lock dello stesso utente: aggiorno il lock
update Lock
set DateLocking = now()
where
IDDoc = Doc.docID()
}
else
{
// Sul documento è attivo un lock di un altro utente: interrompo l'operazione fornendo
// informazioni
LockInfo = vUserID
Result = false
}
}
- L'evento non viene notificato se il documento è in stato Inserted e/o Locked.
- L'evento non viene notificato se per il documento non è abilitato il servizio Document Locking.
Ultima modifica: 23/03/2021 / Validità: da 11.5.5000