| dalla versione 8.5.3800 - modificato il 18/09/2012 - link - english
|
Condizioni di notifica
Questo evento viene notificato al documento quando lui stesso o uno dei suoi documenti cambia, ed in particolare:
- Quando il documento o uno dei suoi sottodocumenti conclude una transazione documentale (vedi EndTransaction) e almeno una proprietà era stata modificata.
- Quando il documento o uno dei suoi sottodocumenti cambia stato in relazione alle proprietà Updated, Deleted, Inserted.
- In tutti i casi in cui viene effettuato un caricamento successivo del documento o delle sue collection lungo tutta la gerarchia dello stesso.
- Quando il documento viene aggiunto ad una collection.
- Quando viene rimosso un sotto-documento da un collection del documento.
Utilizzo consigliato
L'evento
OnChange può essere utilizzato per aggiornare il documento in conseguenza a variazioni dei suoi sotto-documenti. Ad esempio se si desidera memorizzare il totale di un ordine in una proprietà pubblica dello stesso, è possibile tenere aggiornato il valore in funzione delle variazioni avvenute nelle righe tramite questo evento.
Argomenti
Questo evento non ha argomenti.
Note
- Nelle applicazioni web e nei servizi batch, l'evento viene notificato in maniera "ritardata", cioè dopo che tutte le modifiche sono avvenute. In questo modo si evitano problemi di prestazioni legati al fatto che l'evento possa essere notificato moltissime volte, in funzione delle variazioni dei sotto-documenti.
- Nei web service invece l'evento viene notificato subito dopo che la variazione è avvenuta, quindi può essere notificato molte più volte che negli altri tipi di applicazione.
- Se il documento è marcato come modificato, l'evento viene comunque notificato prima della validazione dello stesso. In questo modo se il documento viene salvato sul database, si è sicuri che l'eventuale notifica dell'evento di OnChange avvenga prima del salvataggio e anche prima dell'evento di OnValidate.
event Ordine.OnChange()
{
currency s := 0
for each row (RigheOrdine)
{
record RigaOrdine
RigaOrdine RigaOrdine
s := s + RigaOrdine.Quantità * RigaOrdine.PrezzoUnitario
}
Totale := s
}
Cosa ne pensi?
Ti sono rimaste delle domande su punti che questo articolo non ha trattato? Pensi che sia utile aggiungere una nota all'articolo? Aiutaci a migliorare la documentazione di Instant Developer scrivendo il tuo commento nei campi qui sotto.