Dit is een automatische vertaling. De originele post is beschikbaar in Engels.

ANVEDI Events

Anveo EDI Connect biedt één codeunit voor integratiegebeurtenissen: Codeunit ANVEDI Events. Je kunt reageren op de gebeurtenissen in deze codeunit via je eigen codeunit. De gebeurtenissen worden ondersteund in zowel de FOB als de Extension versie van Microsoft Dynamics.

Events

De beschikbare Events zijn:

  • 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")

Deze gebeurtenis wordt aangeroepen wanneer de module zoekt naar aangepaste functies. Je kunt je eigen functies definiëren door gebruik te maken van de functionaliteit die wordt geleverd door de codeunit ANVEDI Function Register die wordt geleverd onder de naam Register. De codeunit biedt twee functies: RegisterFunction en AddParameter.

RegisterFunction verwacht twee parameters, de objectnaam en de functienaam van je nieuwe functie. Deze namen kunnen vrij gekozen worden, maar mogen niet langer zijn dan 30 tekens.

De eerste 29 tekens van de combinatie van object- en functienaam moeten uniek zijn om de parameters van de mapping te kunnen specificeren. Probeer de namen kort te houden.

Na het registreren van een functie kun je AddParameter maximaal 5 keer oproepen. AddParameter verwacht een naam voor de parameter van je functie. Je kunt meerdere blokken van RegisterFunction en AddParameter in één Event gebruiken. Maar we raden aan om meerdere functies te scheiden naar meerdere Event listeners.

Register.RegisterFunction('CustomObj', 'MyFunction');
Register.AddParameter('Name');
Register.AddParameter('Value');
Voorbeeld: Het functieregister gebruiken

Na het registreren van de functie moet je reageren op functie-aanroepen. Dit wordt gedaan door de OnFunctionExecution die hierna wordt beschreven.

OnFunctionExecution

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

De Event wordt aangeroepen wanneer de module zoekt naar een aangepaste functie-implementatie. Een instantie van de codeunit ANVEDI Function Call wordt doorgegeven aan deze gebeurtenis onder de naam FunctionCall.

Je moet controleren of de FunctionCall overeenkomt met je aangepaste functie en alleen code uitvoeren als dat het geval is. Dit wordt gedaan door de functie Is() aan te roepen met dezelfde parameters die je RegisterFunction hebt aangeroepen in de OnFunctionRegistration. Als Is() true retourneert, kun je toegang krijgen tot de parameters, je aangepaste code uitvoeren en een waarde retourneren.

if FunctionCall.Is(ObjectNameTok, FunctionNameTok) then begin
            Name := FunctionCall.GetTextParameter(1);
            Val := FunctionCall.GetIntegerParameter(2);
            Message(Name + ': ' + Format(Val));
            FunctionCall.SetResult(TRUE);
 end;
Voorbeeld: Reageren op functie-aanroep

De codeunit ANVEDI Function Call biedt de volgende functies:

procedure Is(ObjectName: Text[30];FunctionName: Text[30]): Boolean

Geeft als resultaat of de functieaanroep overeenkomt met de opgegeven functiesignatuur.

procedure SetResult(Value: Variant)

Je moet deze functie aanroepen om de module te laten zien dat je de functieaanroep hebt afgehandeld. Je kunt een functieresultaat doorgeven of gewoon true als resultaat gebruiken.

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

Haalt een parameter op met het opgegeven getal als tekst. De index begint met 1.

procedure GetIntegerParameter(ParNum: Integer): Integer

Haalt een parameter op met het opgegeven getal als geheel getal. De index begint met 1.

procedure GetBooleanParameter(ParNum: Integer): Boolean

Haalt een parameter op met het opgegeven getal als booleaans. De index begint met 1.

procedure GetDecimalParameter(ParNum: Integer): Decimal

Haalt een parameter op met het gegeven getal als decimaal. De index begint met 1.

procedure GetDateParameter(ParNum: Integer): Date

Haalt een parameter op met het opgegeven getal als datum. De index begint met 1.

procedure GetTimeParameter(ParNum: Integer): Time

Haalt een parameter op met het opgegeven getal als datum en tijd. De index begint met 1.

procedure GetDateTimeParameter(ParNum: Integer): DateTime

Haalt een parameter op met het opgegeven getal als tijd. De index begint met 1.

procedure GetParameter(ParNum: Integer;var EDIVariant: Codeunit "ANVEDI Variant"): Boolean

Haalt een parameter op met het gegeven getal als EDIVariant. De functie geeft terug of de parameter kon worden opgehaald. De index begint met 1.

OnJob

procedure OnJob(ParameterDictionary: Codeunit "ANVEDI Data Structures";EventArgs: Codeunit "ANVEDI Event Args")

Je kunt de job codeunit van de module gebruiken om aangepaste jobs te definiëren. De codeunit ondersteunt het gebruik van meerdere parameters. Je kunt meer informatie vinden in de documentatie over jobhandlers.

ParamaterDictionary

Een woordenboek met de parameters die aan de opdracht worden doorgegeven.

EventArgs

Je moet de Event instellen op afgehandeld als je een taak hebt verwerkt. De beschrijving van de ANVEDI Event Args structuur staat aan het einde van dit hoofdstuk.

OnAcceptTransmission

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

Deze functie wordt aangeroepen om te bepalen of een bestand of bericht moet worden geaccepteerd of genegeerd door de module. De module slaat niet op of een transmissie werd genegeerd en zal deze functie telkens aanroepen wanneer het een transmissie ziet. Het bestand is nog niet gelezen, dus je kunt alleen beslissen op basis van de beschikbare metadata.

ANVEDITransmission

De transmissie waarvoor de metagegevens zijn opgehaald. Houd er rekening mee dat er op dit moment nog geen gegevens zijn ontvangen en dat de record nog niet is toegevoegd aan de database.

EventArgs

Je moet de Event instellen op afgehandeld, als je de Event hebt verwerkt. Je moet ook een waarde teruggeven of je de transmissie wilt verwerken (stel de retourwaarde in op true); of niet (stel deze in op false). De beschrijving van de ANVEDI Event Args structuur staat aan het einde van dit hoofdstuk.

OnBeforeList

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

Deze code wordt aangeroepen voordat de module op zoek gaat naar nieuwe gegevens. Dit kan worden gebruikt om een extern commando of script de bestanden te laten ontvangen, voordat de module naar nieuwe gegevens zoekt.

EDICommunicationChannel

Het communicatiekanaal dat gegevens moet ophalen.

EventArgs

Je moet de Event instellen op afgehandeld, als je de gebeurtenis hebt verwerkt. De beschrijving van de ANVEDI Event Args structuur staat aan het einde van dit hoofdstuk.

OnAfterList

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

Het communicatiekanaal dat gegevens moet ophalen.

EventArgs

Je moet de Event instellen op afgehandeld, als je de Event hebt verwerkt. De beschrijving van de ANVEDI Event Args structuur staat aan het einde van dit hoofdstuk.

Deze code wordt aangeroepen nadat de module naar nieuwe gegevens heeft gezocht.

OnBeforeReceive

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

Deze Event wordt aangeroepen voordat een verzending wordt opgehaald. Houd er rekening mee dat je de verwerking op dit moment niet kunt afbreken. Als je wilt beslissen of je een bericht wilt ophalen of niet, gebruik dan de OnAcceptTransmission.

ANVEDITransmission

De overdracht. De berichten zijn nog niet ontvangen.

EventArgs

Je moet de Event instellen op afgehandeld, als je de Event hebt verwerkt. De beschrijving van de ANVEDI Event Args structuur staat aan het einde van dit hoofdstuk.

OnAfterReceive

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

Dit Event wordt aangeroepen nadat een transmissie is ontvangen.

ANVEDITransmission

De verzending nadat deze is opgehaald (je hebt toegang tot de berichten).

EventArgs

Je moet de Event instellen op afgehandeld, als je de Event hebt verwerkt. De beschrijving van de ANVEDI Event Args structuur staat aan het einde van dit hoofdstuk.

OnBeforeArchive

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

Deze Event wordt aangeroepen voordat een verzending wordt gearchiveerd.

ANVEDITransmission

De transmissie die op de externe locatie wordt gearchiveerd.

EventArgs

Je moet de Event instellen op afgehandeld, als je de Event hebt verwerkt. De beschrijving van de ANVEDI Event Args structuur staat aan het einde van dit hoofdstuk.

OnAfterArchive

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

Deze Event wordt aangeroepen nadat een verzending is gearchiveerd.

ANVEDITransmission

De transmissie die werd gearchiveerd op de externe locatie.

EventArgs

Je moet de Event instellen op afgehandeld, als je de Event hebt verwerkt. De beschrijving van de ANVEDI Event Args structuur staat aan het einde van dit hoofdstuk.

OnBeforeDelete

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

Deze Event wordt aangeroepen voordat een verzending wordt verwijderd.

ANVEDITransmission

De transmissie die op de externe locatie wordt verwijderd.

EventArgs

Je moet de Event instellen op afgehandeld, als je de Event hebt verwerkt. De beschrijving van de ANVEDI Event Args structuur staat aan het einde van dit hoofdstuk.

OnAfterDelete

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

Deze Event wordt aangeroepen nadat een verzending is verwijderd.

ANVEDITransmission

De transmissie die werd verwijderd van de externe locatie.

EventArgs

Je moet de Event instellen op afgehandeld, als je de Event hebt verwerkt. De beschrijving van de ANVEDI Event Args structuur staat aan het einde van dit hoofdstuk.

OnBeforeSend

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

Deze Event wordt aangeroepen voordat een verzending plaatsvindt.

ANVEDITransmission

De transmissie die wordt verzonden.

EventArgs

Je moet de Event instellen op afgehandeld, als je de Event hebt verwerkt. De beschrijving van de ANVEDI Event Args structuur staat aan het einde van dit hoofdstuk.

OnComposeMessage

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

Deze Event wordt opgeroepen wanneer een transmissie wordt samengesteld.

ANVEDITransmission

De transmissie die is samengesteld.

EventArgs

Je moet de Event instellen op afgehandeld, als je de Event hebt verwerkt. De beschrijving van de ANVEDI Event Args structuur staat aan het einde van dit hoofdstuk.

OnAfterSend

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

Deze Event wordt aangeroepen nadat een verzending is verzonden.

ANVEDITransmission

De verzending.

EventArgs

Je moet de Event instellen op afgehandeld, als je de gebeurtenis hebt verwerkt. De beschrijving van de ANVEDI Event Args structuur staat aan het einde van dit hoofdstuk.

OnReplacePlaceholder

procedure OnReplacePlaceholder(Placeholder: Text[50];var ANVEDILinkedDocument: Record "ANVEDI Linked Document";EventArgs: Codeunit "ANVEDI Event Args")

Deze functie wordt aangeroepen wanneer een tekenreeks wordt geëvalueerd die door de gebruiker gedefinieerde variabelen kan bevatten, zoals een bestandsnaam.

Placeholder

De naam van de placeholder. De module zoekt momenteel naar een waarde om deze specifieke placeholder te vervangen. Als je een waarde wilt opgeven, moet je het resultaat opgeven en de gebeurtenis instellen op afgehandeld in de EventArgs.

ANVEDILinkedDocument

Een vooraf gefilterd record van de gekoppelde documenten. Je kunt deze tabel bijvoorbeeld gebruiken om de bufferdocumenten in het bestand op te vragen.

EventArgs

Je moet de Event instellen op afgehandeld, als je de Event hebt verwerkt. Je moet ook een waarde bieden. De beschrijving van de ANVEDI Event Args structuur staat aan het einde van dit hoofdstuk.

Het volgende voorbeeld laat zien hoe je gegevens van het gekoppelde document kunt retourneren:

[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;
Voorbeeld: OnReplacePlaceholder

OnError

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

Deze Event wordt aangeroepen wanneer er een fout optreedt in de verwerkingswachtrij.

EventArgs

Je moet de Event instellen op afgehandeld, als je de Event hebt verwerkt. De beschrijving van de ANVEDI Event Args structuur staat aan het einde van dit hoofdstuk.

OnAfterProcess

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

Dit Event wordt aangeroepen na de verwerking van een item in de tabel EDI Processing Queue. Je moet de status van de gepasseerde invoer controleren en dienovereenkomstig reageren.

EventArgs

Je moet de Event instellen op afgehandeld, als je de Event hebt verwerkt. De beschrijving van de ANVEDI Event Args structuur staat aan het einde van dit hoofdstuk.

ANVEDI Event Args

Sommige Events gebruiken een structuur genaamd ANVEDI Event Args. Met deze structuur kun je waarden retourneren en de module vertellen of je de gebeurtenis hebt afgehandeld.

De volgende functies zijn beschikbaar op de ANVEDI Event Args die aan de Event worden doorgegeven:

SetHandled(Value: Boolean)
Value

Of de Event is afgehandeld door jouw code.

SetResult(Value: Variant)
Value

De retourwaarde, als de Event een retourwaarde verwacht.

Voorbeeld

Het volgende voorbeeld laat zien hoe je je eigen aangepaste functie “MYOBJECT.MYFUNC” kunt toevoegen, die een bericht toont met de opgegeven naam gevolgd door ‘: ‘ en de waarde. Je kunt zoveel functies van zoveel extensies toevoegen als je nodig hebt.

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;
}
Volledig voorbeeld: Aangepaste functie

Afhankelijkheden

Als je wilt reageren op de Event via AL, moet je een afhankelijkheid toevoegen aan de Anveo EDI Connect-module.

De waarden voor de OnPremise Extension zijn:

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

Zorg ervoor dat u x, y, z vervangt door het juiste versienummer.

De waarden voor de Business Central Online en Universele Code Extension zijn:

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

Zorg ervoor dat u x, y, z vervangt door het juiste versienummer. Oudere BC versies noemden “id” “appId”.