Questa è una traduzione automatica. Il messaggio originale è disponibile in Inglese.

ANVEDI Events

Anveo EDI Connect offre un’unica codeunit per gli eventi di integrazione: Codeunit ANVEDI Events. È possibile reagire agli eventi di questa codeunit tramite la propria codeunit. Gli eventi sono supportati sia nella versione FOB che in quella 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 richiamato quando il modulo cerca le funzioni personalizzate. È possibile definire le proprie funzioni utilizzando le funzionalità fornite dall’codeunit ANVEDI Function Register, che si trova sotto il nome di Register. L’codeunit fornisce due funzioni: RegisterFunction e AddParameter.

RegisterFunction si aspetta due parametri, il nome dell’oggetto e il nome della funzione della nuova funzione. I 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 dalla mapping. Cercate di mantenere i nomi brevi.

Dopo aver registrato una funzione, è possibile richiamare AddParameter fino a 5 volte. AddParameter si aspetta un nome per il parametro della funzione. È possibile utilizzare più blocchi di RegisterFunction e AddParameter in un Event. Ma si consiglia di separare più funzioni da più ascoltatori di Event.

Register.RegisterFunction('CustomObj', 'MyFunction');
Register.AddParameter('Name');
Register.AddParameter('Value');
Esempio: Utilizzo del registro funzioni

Dopo aver registrato la funzione, è necessario reagire alle chiamate di funzione. Ciò avviene tramite l’EventOnFunctionExecution descritto di seguito.

OnFunctionExecution

procedure OnFunctionExecution(FunctionCall: Codeunit "ANVEDI Function Call")

L’Event viene richiamato quando il modulo cerca un’implementazione di funzione personalizzata. A questo evento viene passata un’istanza dell’codeunit ANVEDI Function Call con il nome FunctionCall.

È necessario verificare se la FunctionCall corrisponde alla funzione personalizzata ed eseguire il codice solo se corrisponde. Ciò avviene chiamando la funzione Is() con gli stessi parametri con cui è stata chiamata RegisterFunction in OnFunctionRegistration. 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;
Esempio: Reagire alla chiamata di funzione

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)

È necessario chiamare questa funzione per mostrare al modulo che si è gestita la chiamata di funzione. È possibile passare il risultato di una funzione o utilizzare semplicemente true come risultato.

procedure GetTextParameter(ParNum: Integer): Text[1024]

Recupera un parametro con il numero dato 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 dato come data. L’indice inizia con 1.

procedure GetTimeParameter(ParNum: Integer): Time

Recupera un parametro con il numero dato 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 restituisce 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 modulo per definire lavori personalizzati. L’codeunit consente di supportare l’uso di più parametri. Per ulteriori informazioni, consultare la documentazione del gestore dei lavori.

ParamaterDictionary

Un dizionario contenente i parametri passati al lavoro.

EventArgs

Se è stato elaborato un lavoro, è necessario impostare l’Event su gestito. La descrizione della struttura ANVEDI Event Args si trova alla fine di questo capitolo.

OnAcceptTransmission

procedure OnAcceptTransmission(ANVEDITransmission: Record "ANVEDI Transmission";EventArgs: Codeunit "ANVEDI Event Args")

Questa funzione viene 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 richiama questa funzione ogni volta che vede una trasmissione. Il file non è ancora stato letto, quindi è possibile decidere solo in base ai metadati disponibili.

ANVEDITransmission

La trasmissione per la quale sono stati recuperati i metadati. Si noti che in questo momento non sono stati ricevuti dati e che il record non è ancora stato inserito nel database.

EventArgs

Se l’Event è stato elaborato, è necessario impostarlo come gestito. Si dovrebbe anche restituire un valore che indichi se elaborare la trasmissione (impostare il valore di ritorno su true) o no (impostare su false). La descrizione della struttura 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 richiamato prima che il modulo cerchi nuovi dati. Questo può essere usato per inviare un comando o uno script esterno per ricevere i file, prima che il modulo cerchi nuovi dati.

EDICommunicationChannel

Il canale di comunicazione che deve recuperare i dati.

EventArgs

Se l’Event è stato elaborato, è necessario impostarlo come gestito. La descrizione della struttura ANVEDI Event Args si trova alla fine di questo capitolo.

OnAfterList

procedure OnAfterList(EDICommunicationChannel: Record "ANVEDI Communication Channel";EventArgs: Codeunit "ANVEDI Event Args")
EDICommunicationChannel

Il canale di comunicazione che deve recuperare i dati.

EventArgs

Se l’Event è stato elaborato, è necessario impostarlo come gestito. La descrizione della struttura ANVEDI Event Args si trova alla fine di questo capitolo.

Questo codice viene richiamato dopo che il modulo ha cercato nuovi dati.

OnBeforeReceive

procedure OnBeforeReceive(ANVEDITransmission: Record "ANVEDI Transmission";EventArgs: Codeunit "ANVEDI Event Args")

Questo Event viene richiamato prima che venga recuperata una trasmissione. Non è possibile interrompere l’elaborazione in questo momento. Se si vuole decidere se recuperare o meno un messaggio, utilizzare il metodo OnAcceptTransmission.

ANVEDITransmission

La trasmissione. I messaggi non sono ancora stati ricevuti.

EventArgs

Se l’Event è stato elaborato, è necessario impostarlo come gestito. La descrizione della struttura 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 richiamato dopo la ricezione di una trasmissione.

ANVEDITransmission

La trasmissione dopo che è stata recuperata (è possibile accedere ai messaggi).

EventArgs

Se l’Event è stato elaborato, è necessario impostarlo come gestito. La descrizione della struttura 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 richiamato prima dell’archiviazione di una trasmissione.

ANVEDITransmission

La trasmissione che verrà archiviata sulla postazione remota.

EventArgs

Se l’Event è stato elaborato, è necessario impostarlo come gestito. La descrizione della struttura 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 richiamato dopo l’archiviazione di una trasmissione.

ANVEDITransmission

La trasmissione archiviata nella postazione remota.

EventArgs

Se l’Event è stato elaborato, è necessario impostarlo come gestito. La descrizione della struttura 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 dell’eliminazione di una trasmissione.

ANVEDITransmission

La trasmissione che verrà cancellata sulla postazione remota.

EventArgs

Se l’Event è stato elaborato, è necessario impostarlo come gestito. La descrizione della struttura 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 richiamato dopo l’eliminazione di una trasmissione.

ANVEDITransmission

La trasmissione che è stata cancellata dalla posizione remota.

EventArgs

Se l’Event è stato elaborato, è necessario impostarlo come gestito. La descrizione della struttura 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 richiamato prima dell’invio di una trasmissione.

ANVEDITransmission

La trasmissione che verrà inviata.

EventArgs

Se l’Event è stato elaborato, è necessario impostarlo come gestito. La descrizione della struttura 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 richiamato quando viene composta una trasmissione.

ANVEDITransmission

La trasmissione che viene composta.

EventArgs

Se l’Event è stato elaborato, è necessario impostarlo come gestito. La descrizione della struttura 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 richiamato dopo l’invio di una trasmissione.

ANVEDITransmission

La trasmissione inviata.

EventArgs

Se l’Event è stato elaborato, è necessario impostarlo come gestito. La descrizione della struttura 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 richiamata quando viene valutata una stringa che può contenere variabili definite dall’utente, come il nome di un file.

Placeholder

Il nome del segnaposto. Il modulo sta cercando un valore per sostituire questo segnaposto specifico. Se si vuole fornire un valore, occorre specificare il risultato e impostare l’evento da gestire nell’EventArgs.

ANVEDILinkedDocument

Un record pre-filtrato dei documenti collegati. È possibile, ad esempio, utilizzare questa tabella per ottenere i documenti buffer contenuti nel file.

EventArgs

Se l’Event è stato elaborato, è necessario impostarlo come gestito. Dovete anche fornire un valore. La descrizione della struttura ANVEDI Event Args si trova alla fine di questo capitolo.

L’esempio seguente mostra come si possono restituire i dati dal 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;
Esempio: OnReplacePlaceholder

OnError

procedure OnError(ANVEDIProcessingQueue: Record "ANVEDI Processing Queue";EventArgs: Codeunit "ANVEDI Event Args")

Questo Event viene richiamato quando si verifica un errore nella coda di elaborazione.

EventArgs

Se l’Event è stato elaborato, è necessario impostarlo come gestito. La descrizione della struttura 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 richiamato dopo l’elaborazione di una voce nella tabella EDI Processing Queue. È necessario controllare lo stato della voce passata e reagire di conseguenza.

EventArgs

Se l’Event è stato elaborato, è necessario impostarlo come gestito. La descrizione della struttura ANVEDI Event Args si trova alla fine di questo capitolo.

ANVEDI Event Args

Alcuni Events utilizzano una struttura chiamata ANVEDI Event Args. Questa struttura consente di restituire valori e di comunicare al modulo se l’evento è stato gestito.

Le seguenti funzioni sono disponibili sugli ANVEDI Event Args dell’ANVEDI Event Args passati all’Event:

SetHandled(Value: Boolean)
Value

Se l’Event è stato gestito dal codice dell’utente.

SetResult(Value: Variant)
Value

Il valore di ritorno, se l’Event prevede un valore di ritorno.

Esempio

L’esempio seguente mostra come 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 di tutte le estensioni necessarie.

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;
}
Esempio completo: Funzione personalizzata

Dipendenze

Se si vuole reagire all’Event tramite AL, è necessario aggiungere una dipendenza al modulo Anveo EDI Connect.

I valori per l’Extension OnPremise sono:

{
      "id": "25286BD2-B08A-49F9-B613-64122CCEE4E1",
      "name": "Anveo EDI Connect - OnPremise",
      "publisher": "conion media GmbH",
      "version": "5.x.y.z"
}

Assicurarsi di sostituire x, y, z con il numero di versione corretto.

I valori per Business Central Online e Universal Code Extension sono:

{
      "id": "FC195C4F-19BF-4167-BFE8-6D1FF7D266BC",
      "name": "Anveo EDI Connect",
      "publisher": "conion media GmbH",
      "version": "5.x.y.z"
}

Assicurarsi di sostituire x, y, z con il numero di versione corretto. Le versioni precedenti di BC chiamavano “id” “appId”.