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

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');
Esempio: Utilizzo del registro delle funzioni

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;
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)

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.

ParamaterDictionary

Un dizionario contenente i parametri passati al lavoro.

EventArgs

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.

ANVEDITransmission

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.

EventArgs

È 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.

EDICommunicationChannel

Il canale di comunicazione che dovrebbe recuperare i dati.

EventArgs

È 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")
EDICommunicationChannel

Il canale di comunicazione che dovrebbe recuperare i dati.

EventArgs

È 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.

ANVEDITransmission

La trasmissione. I messaggi non sono ancora stati ricevuti.

EventArgs

È 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.

ANVEDITransmission

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

EventArgs

È 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.

ANVEDITransmission

La trasmissione che sarà archiviata sulla postazione remota.

EventArgs

È 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.

ANVEDITransmission

La trasmissione che è stata archiviata sul posto remoto.

EventArgs

È 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.

ANVEDITransmission

La trasmissione che verrà cancellata sulla postazione remota.

EventArgs

È 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.

ANVEDITransmission

La trasmissione che è stata cancellata dalla postazione remota.

EventArgs

È 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.

ANVEDITransmission

La trasmissione che sarà inviata.

EventArgs

È 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.

ANVEDITransmission

La trasmissione che si compone.

EventArgs

È 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.

ANVEDITransmission

La trasmissione che è stata inviata.

EventArgs

È 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.

Placeholder

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.

ANVEDILinkedDocument

Una registrazione pre-filtrata dei documenti collegati. È possibile, ad esempio, utilizzare questa tabella per ottenere i documenti buffer contenuti nel file.

EventArgs

È 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;
Esempio: OnReplacePlacePlaceholder

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.

EventArgs

È 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.

EventArgs

È 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)
Value

Se l’Event è stato gestito dal vostro codice.

SetResult(Value: Variant)
Value

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

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.