You are hereBlog / blog di roberto / Utilizzare i Global Trigger con Dynamics Navision
Utilizzare i Global Trigger con Dynamics Navision
Può capitare di dover scrivere del codice in Navision, che debba essere eseguito ad ogni inserimento modifica o cancellazione di ogni tabella.
Il metodo più costoso e sbagliato è quello di andare ad aggiungere la chiamata a questo codice nei trigger OnInsert, OnModify e OnDelete di ogni tabella.
Esistono nella CodeUnit 1 (ApplicationManagement) delle funzioni chiamate
- OnGlobalInsert
- OnGlobalModify
- OnGlobalDelete
- OnGlobalRename
usate oggi per la compilazione del log degli eventi in Navision.
Queste funzioni possono essere usate aggiungendo anche altro codice, ottenendo il risultato sopra descritto.
Il problema è che per usarle deve essere abilitato il log altrimenti la chiamata non viene fatta.Per ovviare a questo problema è sufficiente modificare la funzione GetGlobalTableTriggerMask sempre nella CodeUnit 1 in questa modo:
GetGlobalTableTriggerMask(TableID : Integer) : Integer
//EXIT(ChangeLogMgt.GetTableTriggerMask(TableID));
EXIT(15);
Ora Navision farà sempre la chiamata ai trigger globali eseguendo il codice contenuto. Il log funzionerà solo se abilitato.
Volendo fare qualcosa di più raffinato si può creare un setup nel quale specificare quali tabelle e in che condizioni devono eseguire le operazioi globali e modificare la funzione GetTableTriggerMask della CodeUnit 423 per leggere questo setup.
ATTENZIONE: Tutti gli oggetti usati nei trigger globali devono essere dichiarati come variabili locali, soprattutto le codeunit, altrimenti alla chiusura del client, Navision andrà in crash.
NOTA: Affinché le modifiche apportate alla Codeunit 1 siano eseguibili, è necessario riavviare il client Navision, anche quello dal quale si sta sviluppando.
- blog di roberto
- Login per inviare commenti





sicuro che funzioni sempre sempre?
http://dynamicsuser.net/forums/t/24409.aspx