ANVEDI Events
Anveo EDI Connect offre una singola codeunit per eventi di integrazione: Codeunit ANVEDI Events. Potete reagire agli eventi di questa codeunit tramite la vostra codeunit. Gli eventi sono supportati sia nella versione FOB che nella versione Extension di Microsoft Dynamics.
Events
Gli Events disponibili sono:
- OnFunctionRegistration
- OnFunctionExecution
- OnJob
- OnAcceptTransmission
- OnBeforeList
- OnAfterList
- OnBeforeReceive
- OnAfterReceive
- OnBeforeArchive
- OnAfterArchive
- OnBeforeDelete
- OnAfterDelete
- OnBeforeSend
- OnComposeMessage
- OnAfterSend
- OnReplacePlaceholder
- OnError
- OnAfterProcess
OnFunctionRegistration
procedure OnFunctionRegistration(Register: Codeunit "ANVEDI Function Register")
Questo evento viene chiamato quando il modulo cerca funzioni personalizzate. È possibile definire le proprie funzioni utilizzando la funzionalità fornita dall’codeunit ANVEDI Function Register che è fornita sotto il nome Register. L’codeunit offre due funzioni: RegisterFunction e AddParameter.
RegisterFunction si aspetta due parametri, il nome dell’oggetto e il nome della funzione della vostra nuova funzione. Questi nomi possono essere scelti liberamente, ma non possono superare i 30 caratteri.
I primi 29 caratteri della combinazione di nome dell’oggetto e della funzione devono essere unici per poter specificare i parametri dal mapping. Dovresti cercare di tenere i nomi brevi.
Dopo aver registrato una funzione è possibile chiamare AddParameter fino a 5 volte. AddParameter si aspetta un nome per il parametro della vostra funzione. È possibile utilizzare più blocchi di RegisterFunction e AddParameter in un unico Event. Ma si consiglia di separare più funzioni da più ascoltatori di Event.
Register.RegisterFunction('CustomObj', 'MyFunction');
Register.AddParameter('Name');
Register.AddParameter('Value');
Dopo aver registrato la funzione, si deve reagire alle chiamate di funzione. Ciò avviene tramite l’Eventdescritta di seguito.
OnFunctionExecution
procedure OnFunctionExecution(FunctionCall: Codeunit "ANVEDI Function Call")
L’Event viene chiamato, quando il modulo è alla ricerca di un’implementazione di funzioni personalizzate. Un’istanza dell’codeunit ANVEDI Function Call viene passata a questo evento con il nome FunctionCall.
Dovreste controllare se la FunctionCall corrisponde alla vostra funzione personalizzata e, in caso affermativo, eseguire solo il codice. Questo viene fatto chiamando la funzione Is() con gli stessi parametri che avete chiamato RegisterFunction in Event. Se Is() restituisce true è possibile accedere ai parametri, eseguire il codice personalizzato e restituire un valore.
if FunctionCall.Is(ObjectNameTok, FunctionNameTok) then begin
Name := FunctionCall.GetTextParameter(1);
Val := FunctionCall.GetIntegerParameter(2);
Message(Name + ': ' + Format(Val));
FunctionCall.SetResult(TRUE);
end;
L’codeunit ANVEDI Function Call fornisce le seguenti funzioni:
procedure Is(ObjectName: Text[30];FunctionName: Text[30]): Boolean
Restituisce se la chiamata di funzione corrisponde alla firma di funzione specificata.
procedure SetResult(Value: Variant)
Dovete chiamare questa funzione per mostrare al modulo che avete gestito la chiamata di funzione. È possibile passare un risultato di una funzione, o semplicemente usare true come risultato.
procedure GetTextParameter(ParNum: Integer): Text[1024]
Recupera un parametro con il numero indicato come testo. L’indice inizia con 1.
procedure GetIntegerParameter(ParNum: Integer): Integer
Recupera un parametro con il numero dato come numero intero. L’indice inizia con 1.
procedure GetBooleanParameter(ParNum: Integer): Boolean
Recupera un parametro con il numero dato come booleano. L’indice inizia con 1.
procedure GetDecimalParameter(ParNum: Integer): Decimal
Recupera un parametro con il numero dato come decimale. L’indice inizia con 1.
procedure GetDateParameter(ParNum: Integer): Date
Recupera un parametro con il numero indicato come data. L’indice inizia con 1.
procedure GetTimeParameter(ParNum: Integer): Time
Recupera un parametro con il numero indicato come data e ora. L’indice inizia con 1.
procedure GetDateTimeParameter(ParNum: Integer): DateTime
Recupera un parametro con il numero dato come tempo. L’indice inizia con 1.
procedure GetParameter(ParNum: Integer;var EDIVariant: Codeunit "ANVEDI Variant"): Boolean
Recupera un parametro con il numero dato come EDIVariante. La funzione ritorna, se il parametro può essere recuperato. L’indice inizia con 1.
OnJob
procedure OnJob(ParameterDictionary: Codeunit "ANVEDI Data Structures";EventArgs: Codeunit "ANVEDI Event Args")
È possibile utilizzare l’codeunit del lavoro dal modulo per definire lavori personalizzati. L’codeunit permette di supportare l’uso di più parametri. Potete trovare maggiori informazioni sulla documentazione per l’handler del lavoro.
Un dizionario contenente i parametri passati al lavoro.
Si dovrebbe impostare l’Event da gestire, se si è elaborato un lavoro. La descrizione della struttura di ANVEDI Event Args si trova alla fine di questo capitolo.
OnAcceptTransmission
procedure OnAcceptTransmission(ANVEDITransmission: Record "ANVEDI Transmission";EventArgs: Codeunit "ANVEDI Event Args")
Questa funzione è chiamata per determinare se un file o un messaggio deve essere accettato o ignorato dal modulo. Il modulo non memorizza se una trasmissione è stata ignorata e chiama questa funzione ogni volta che vede una trasmissione. Il file non è ancora letto, quindi si può decidere solo in base ai metadati disponibili.
La trasmissione, per la quale sono stati recuperati i metadati. Si prega di notare che in questo momento non è stato ricevuto alcun dato e che il record non è ancora inserito nel database.
È necessario impostare l’Event da gestire, se l’Event è stato elaborato. Si dovrebbe anche restituire un valore per l’elaborazione della trasmissione (impostare il valore di ritorno su true); oppure no (impostarlo su false). La descrizione della struttura di ANVEDI Event Args si trova alla fine di questo capitolo.
OnBeforeList
procedure OnBeforeList(EDICommunicationChannel: Record "ANVEDI Communication Channel";EventArgs: Codeunit "ANVEDI Event Args")
Questo codice viene chiamato prima che il modulo cerchi nuovi dati. Questo può essere usato per emettere un comando o uno script esterno per ricevere i file, prima che il modulo cerchi nuovi dati.
Il canale di comunicazione che dovrebbe recuperare i dati.
È necessario impostare l’Event da gestire, se l’evento è stato elaborato. La descrizione della struttura di ANVEDI Event Args si trova alla fine di questo capitolo.
OnAfterList
procedure OnAfterList(EDICommunicationChannel: Record "ANVEDI Communication Channel";EventArgs: Codeunit "ANVEDI Event Args")
Il canale di comunicazione che dovrebbe recuperare i dati.
È necessario impostare l’Event da gestire, se l’Event è stato elaborato. La descrizione della struttura di ANVEDI Event Args si trova alla fine di questo capitolo.
Questo codice viene chiamato dopo che il modulo ha cercato nuovi dati.
OnBeforeReceive
procedure OnBeforeReceive(ANVEDITransmission: Record "ANVEDI Transmission";EventArgs: Codeunit "ANVEDI Event Args")
Questo Event viene chiamato prima che venga recuperata una trasmissione. Si prega di notare che non è possibile interrompere l’elaborazione in questo momento. Se si vuole decidere se recuperare o meno un messaggio, si prega di utilizzare Event.
La trasmissione. I messaggi non sono ancora stati ricevuti.
È necessario impostare l’Event da gestire, se l’Event è stato elaborato. La descrizione della struttura di ANVEDI Event Args si trova alla fine di questo capitolo.
OnAfterReceive
procedure OnAfterReceive(ANVEDITransmission: Record "ANVEDI Transmission";EventArgs: Codeunit "ANVEDI Event Args")
Questo Event viene chiamato dopo la ricezione di una trasmissione.
La trasmissione dopo che è stata recuperata (è possibile accedere ai messaggi).
È necessario impostare l’Event da gestire, se l’Event è stato elaborato. La descrizione della struttura di ANVEDI Event Args si trova alla fine di questo capitolo.
OnBeforeArchive
procedure OnBeforeArchive(ANVEDITransmission: Record "ANVEDI Transmission";EventArgs: Codeunit "ANVEDI Event Args")
Questo Event viene chiamato prima dell’archiviazione di una trasmissione.
La trasmissione che sarà archiviata sulla postazione remota.
È necessario impostare l’Event da gestire, se l’Event è stato elaborato. La descrizione della struttura di ANVEDI Event Args si trova alla fine di questo capitolo.
OnAfterArchive
procedure OnAfterArchive(ANVEDITransmission: Record "ANVEDI Transmission";EventArgs: Codeunit "ANVEDI Event Args")
Questo Event viene chiamato dopo l’archiviazione di una trasmissione.
La trasmissione che è stata archiviata sul posto remoto.
È necessario impostare l’Event da gestire, se l’Event è stato elaborato. La descrizione della struttura di ANVEDI Event Args si trova alla fine di questo capitolo.
OnBeforeDelete
procedure OnBeforeDelete(ANVEDITransmission: Record "ANVEDI Transmission";EventArgs: Codeunit "ANVEDI Event Args")
Questo Event viene richiamato prima della cancellazione di una trasmissione.
La trasmissione che verrà cancellata sulla postazione remota.
È necessario impostare l’Event da gestire, se l’Event è stato elaborato. La descrizione della struttura di ANVEDI Event Args si trova alla fine di questo capitolo.
OnAfterDelete
procedure OnAfterDelete(ANVEDITransmission: Record "ANVEDI Transmission";EventArgs: Codeunit "ANVEDI Event Args")
Questo Event viene chiamato dopo la cancellazione di una trasmissione.
La trasmissione che è stata cancellata dalla postazione remota.
È necessario impostare l’Event da gestire, se l’Event è stato elaborato. La descrizione della struttura di ANVEDI Event Args si trova alla fine di questo capitolo.
OnBeforeSend
procedure OnBeforeSend(ANVEDITransmission: Record "ANVEDI Transmission";EventArgs: Codeunit "ANVEDI Event Args")
Questo Event viene chiamato prima dell’invio di una trasmissione.
La trasmissione che sarà inviata.
È necessario impostare l’Event da gestire, se l’Event è stato elaborato. La descrizione della struttura di ANVEDI Event Args si trova alla fine di questo capitolo.
OnComposeMessage
procedure OnComposeMessage(ANVEDITransmission: Record "ANVEDI Transmission";EventArgs: Codeunit "ANVEDI Event Args")
Questo Event viene chiamato quando viene composta una trasmissione.
La trasmissione che si compone.
È necessario impostare l’Event da gestire, se l’Event è stato elaborato. La descrizione della struttura di ANVEDI Event Args si trova alla fine di questo capitolo.
OnAfterSend
procedure OnAfterSend(ANVEDITransmission: Record "ANVEDI Transmission";EventArgs: Codeunit "ANVEDI Event Args")
Questo Event viene chiamato dopo l’invio di una trasmissione.
La trasmissione che è stata inviata.
È necessario impostare l’Event da gestire, se l’evento è stato elaborato. La descrizione della struttura di ANVEDI Event Args si trova alla fine di questo capitolo.
OnReplacePlaceholder
procedure OnReplacePlaceholder(Placeholder: Text[50];var ANVEDILinkedDocument: Record "ANVEDI Linked Document";EventArgs: Codeunit "ANVEDI Event Args")
Questa funzione viene chiamata quando viene valutata una stringa che può contenere variabili definite dall’utente, come ad esempio il nome di un file.
Il nome del segnaposto. Il modulo sta cercando un valore che sostituisca questo specifico segnaposto. Se si vuole fornire un valore, è necessario impostare specificare il risultato e impostare l’evento da gestire nell’EventArgs.
Una registrazione pre-filtrata dei documenti collegati. È possibile, ad esempio, utilizzare questa tabella per ottenere i documenti buffer contenuti nel file.
È necessario impostare l’Event da gestire, se l’Event è stato elaborato. Bisogna anche fornire un valore. La descrizione della struttura di ANVEDI Event Args si trova alla fine di questo capitolo.
L’esempio seguente mostra come si possono restituire i dati del documento collegato:
[EventSubscriber(ObjectType::Codeunit, Codeunit::="" Events="" TRUE,="" TRUE)]=""]
local procedure OnReplacePlaceholderExternalDocumentNo(Placeholder: Text[50];var ANVEDILinkedDocument: Record "ANVEDI Linked Document";EventArgs: Codeunit "ANVEDI Event Args")
var
recID: RecordID;
ediDocument: Record "ANVEDI Document";
begin
if Placeholder = 'ExternalDocumentNo' then begin
if ANVEDILinkedDocument.FindSet() then
repeat
recID := ANVEDILinkedDocument.RecordId;
if recID.TableNo = Database::"ANVEDI Document" then begin
ediDocument.get(recID);
EventArgs.SetResult(ediDocument."External Document No.");
EventArgs.SetHandled(true);
exit;
end;
until ANVEDILinkedDocument.Next() = 0;
end;
end;
OnError
procedure OnError(ANVEDIProcessingQueue: Record "ANVEDI Processing Queue";EventArgs: Codeunit "ANVEDI Event Args")
Questo Event viene chiamato quando si verifica un errore nella coda di elaborazione.
È necessario impostare l’Event da gestire, se l’Event è stato elaborato. La descrizione della struttura di ANVEDI Event Args si trova alla fine di questo capitolo.
OnAfterProcess
procedure OnAfterProcess(ANVEDIProcessingQueue: Record "ANVEDI Processing Queue";EventArgs: Codeunit "ANVEDI Event Args")
Questo Event viene chiamato dopo l’elaborazione di una voce nella tabella EDI Processing Queue. Si dovrebbe controllare lo stato dell’inserimento passato e reagire di conseguenza.
È necessario impostare l’Event da gestire, se l’Event è stato elaborato. La descrizione della struttura di ANVEDI Event Args si trova alla fine di questo capitolo.
ANVEDI Event Args
Alcuni degli Events utilizzano una struttura chiamata ANVEDI Event Args. Questa struttura permette di restituire i valori e di dire al modulo se avete gestito l’evento.
Le seguenti funzioni sono disponibili sulle ANVEDI Event Args passate all’Event:
SetHandled(Value: Boolean)
Se l’Event è stato gestito dal vostro codice.
SetResult(Value: Variant)
Il valore di ritorno, se l’Event prevede un valore di ritorno.
Esempio
L’esempio seguente mostra, come si può aggiungere la propria funzione personalizzata “MYOBJECT.MYFUNC”, che mostra un messaggio contenente il nome fornito seguito da ‘: ‘ e il valore. È possibile aggiungere tutte le funzioni da tutte le estensioni di cui si ha bisogno.
codeunit 50100 MyAnveoFunctions
{
var
ObjectNameTok: label 'MYOBJECT';
FunctionNameTok: label 'MYFUNC';
[EventSubscriber(ObjectType::Codeunit, Codeunit::="" Events="" TRUE,="" TRUE)]=""]
local procedure OnRegisterFunctions(Register: Codeunit "ANVEDI Function Register")
begin
Register.RegisterFunction(ObjectNameTok, FunctionNameTok);
Register.AddParameter('Name');
Register.AddParameter('Value');
end;
[EventSubscriber(ObjectType::Codeunit, Codeunit::="" Events="" TRUE,="" TRUE)]=""]
local procedure OnFunction(FunctionCall: Codeunit "ANVEDI Function Call")
var
Name: Text;
Val: Integer;
begin
if FunctionCall.Is(ObjectNameTok, FunctionNameTok) then begin
Name := FunctionCall.GetTextParameter(1);
Val := FunctionCall.GetIntegerParameter(2);
Message(Name + ': ' + Format(Val));
FunctionCall.SetResult(TRUE);
end;
end;
}
Dipendenze
Se si desidera reagire all’Event tramite AL, è necessario aggiungere una dipendenza al modulo Anveo EDI Connect.
I valori per l’OnPremise Extension sono:
{
"appId": "25286BD2-B08A-49F9-B613-64122CCEE4E1",
"name": "Anveo EDI Connect - OnPremise",
"publisher": "conion media GmbH",
"version": "5.x.y.z"
}
Assicuratevi di sostituire x, y, z con il numero di versione corretto.
I valori per il Business Central Online Extension sono:
{
"appId": "FC195C4F-19BF-4167-BFE8-6D1FF7D266BC",
"name": "Anveo EDI Connect",
"publisher": "conion media GmbH",
"version": "5.x.y.z"
}
Assicuratevi di sostituire x, y, z con il numero di versione corretto.