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

ANVEDI Events

Anveo EDI Connect biedt een enkele codeunit voor integratie-events: Codeunit ANVEDI Events. U kunt reageren op de gebeurtenissen in deze codeunit via uw eigen codeunit. De evenementen worden zowel in de FOB als in de Extensieversie van Microsoft Dynamics ondersteund.

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 opgeroepen wanneer de module zoekt naar aangepaste functies. U kunt uw eigen functies definiëren door gebruik te maken van de functionaliteit van de codeunit ANVEDI Function Register die onder de naam Register wordt aangeboden. De codeunit heeft twee functies: RegisterFunction en AddParameter.

RegisterFunction verwacht twee parameters, de objectnaam en de functienaam van uw nieuwe functie. Deze namen zijn vrij te kiezen, maar mogen niet meer dan 30 tekens bevatten.

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

Na het registreren van een functie kunt u AddParameter maximaal 5 keer oproepen. AddParameter verwacht een naam voor de parameter van uw functie. U kunt meerdere blokken van RegisterFunction en AddParameter in één Event gebruiken. Maar we raden aan om meerdere functies te scheiden voor meerdere Event-luisteraars.

Register.RegisterFunction('CustomObj', 'MyFunction');
Register.AddParameter('Name');
Register.AddParameter('Value');
Voorbeeld: Gebruik van het functieregister

Na het registreren van de functie moet u reageren op functieoproepen. Dit wordt gedaan door de Eventdie hierna wordt beschreven.

OnFunctionExecution

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

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

U moet controleren of de FunctionCall overeenkomt met uw aangepaste functie en alleen een code uitvoeren als dat het geval is. Dit gebeurt door de functie Is() aan te roepen met dezelfde parameters als RegisterFunction in de Event. Als Is() waar is, kunt u toegang krijgen tot de parameters, uw 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: Reageer op de functieoproep

De codeunit ANVEDI Function Call biedt de volgende functies:

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

Geeft als resultaat of de functie-aanroep overeenkomt met de gespecificeerde functiehandtekening.

procedure SetResult(Value: Variant)

U moet deze functie oproepen om de module te laten zien dat u de functie-oproep heeft afgehandeld. U kunt een functieresultaat doorgeven, of gewoon true als resultaat gebruiken.

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

Haalt een parameter op met het opgegeven nummer 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 opgegeven getal als decimaal. De index begint met 1.

procedure GetDateParameter(ParNum: Integer): Date

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

procedure GetTimeParameter(ParNum: Integer): Time

Haalt een parameter op met het opgegeven nummer 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 opgegeven nummer als EDIVariant. De functie keert 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")

U kunt de codeunit van de module gebruiken om aangepaste jobs te definiëren. De codeunit maakt het mogelijk om het gebruik van meerdere parameters te ondersteunen. U kunt meer informatie vinden over de job handler documentatie.

ParamaterDictionary

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

EventArgs

U dient het Event te laten afhandelen, als u een opdracht heeft verwerkt. De beschrijving van de ANVEDI Event Args-structuur vindt u 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 door de module moet worden geaccepteerd of genegeerd. De module slaat niet op of een transmissie werd genegeerd en zal deze functie telkens oproepen wanneer het een transmissie ziet. Het bestand is nog niet gelezen, dus u kunt alleen beslissen op basis van de beschikbare metadata.

ANVEDITransmission

De transmissie, waarvoor de metagegevens werden opgehaald. Let op: er zijn op dit moment geen gegevens ontvangen en het record is nog niet in de database opgenomen.

EventArgs

U dient het Event te laten afhandelen, als u het Event heeft verwerkt. U dient ook een waarde terug te geven of u de verzending wilt verwerken (stel de terugkeerwaarde in op true); of niet (stel deze in op false). De beschrijving van de ANVEDI Event Args-structuur vindt u 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 te geven om de bestanden te ontvangen, voordat de module op zoek gaat naar nieuwe gegevens.

EDICommunicationChannel

Het communicatiekanaal dat de gegevens moet ophalen.

EventArgs

U dient het Event te laten afhandelen, als u het evenement heeft verwerkt. De beschrijving van de ANVEDI Event Args-structuur vindt u aan het einde van dit hoofdstuk.

OnAfterList

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

Het communicatiekanaal dat de gegevens moet ophalen.

EventArgs

U dient het Event te laten afhandelen, als u het Event heeft verwerkt. De beschrijving van de ANVEDI Event Args-structuur vindt u 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 opgeroepen voordat een transmissie wordt opgehaald. Houd er rekening mee dat u de verwerking op dit moment niet kunt afbreken. Als u wilt beslissen of u een bericht wilt ophalen of niet, gebruik dan de Event.

ANVEDITransmission

De transmissie. De berichten zijn nog niet ontvangen.

EventArgs

U dient het Event te laten afhandelen, als u het Event heeft verwerkt. De beschrijving van de ANVEDI Event Args-structuur vindt u aan het einde van dit hoofdstuk.

OnAfterReceive

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

Dit Event wordt opgeroepen nadat een transmissie is ontvangen.

ANVEDITransmission

De verzending nadat deze is opgehaald (u heeft toegang tot de berichten).

EventArgs

U dient het Event te laten afhandelen, als u het Event heeft verwerkt. De beschrijving van de ANVEDI Event Args-structuur vindt u aan het einde van dit hoofdstuk.

OnBeforeArchive

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

Deze Event wordt opgeroepen voordat een uitzending wordt gearchiveerd.

ANVEDITransmission

De transmissie die wordt gearchiveerd op de afgelegen locatie.

EventArgs

U dient het Event te laten afhandelen, als u het Event heeft verwerkt. De beschrijving van de ANVEDI Event Args-structuur vindt u aan het einde van dit hoofdstuk.

OnAfterArchive

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

Deze Event wordt opgeroepen nadat een transmissie is gearchiveerd.

ANVEDITransmission

De transmissie die werd gearchiveerd op de afgelegen locatie.

EventArgs

U dient het Event te laten afhandelen, als u het Event heeft verwerkt. De beschrijving van de ANVEDI Event Args-structuur vindt u aan het einde van dit hoofdstuk.

OnBeforeDelete

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

Deze Event wordt opgeroepen voordat een transmissie wordt gewist.

ANVEDITransmission

De transmissie die op de externe locatie wordt verwijderd.

EventArgs

U dient het Event te laten afhandelen, als u het Event heeft verwerkt. De beschrijving van de ANVEDI Event Args-structuur vindt u aan het einde van dit hoofdstuk.

OnAfterDelete

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

Deze Event wordt opgeroepen nadat een transmissie is verwijderd.

ANVEDITransmission

De transmissie die werd verwijderd van de externe locatie.

EventArgs

U dient het Event te laten afhandelen, als u het Event heeft verwerkt. De beschrijving van de ANVEDI Event Args-structuur vindt u aan het einde van dit hoofdstuk.

OnBeforeSend

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

Dit Event wordt opgeroepen voordat er een transmissie wordt verzonden.

ANVEDITransmission

De transmissie die verstuurd gaat worden.

EventArgs

U dient het Event te laten afhandelen, als u het Event heeft verwerkt. De beschrijving van de ANVEDI Event Args-structuur vindt u 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

U dient het Event te laten afhandelen, als u het Event heeft verwerkt. De beschrijving van de ANVEDI Event Args-structuur vindt u aan het einde van dit hoofdstuk.

OnAfterSend

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

Dit Event wordt opgeroepen nadat een transmissie is verzonden.

ANVEDITransmission

De transmissie die werd verzonden.

EventArgs

U dient het Event te laten afhandelen, als u het evenement heeft verwerkt. De beschrijving van de ANVEDI Event Args-structuur vindt u 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 string wordt geëvalueerd die door de gebruiker gedefinieerde variabelen kan bevatten, zoals een bestandsnaam.

Placeholder

De naam van de plaatshouder. De module zoekt momenteel naar een waarde om deze specifieke plaatshouder te vervangen. Als u een waarde wilt opgeven, moet u het resultaat opgeven en het evenement instellen op de EventArgs.

ANVEDILinkedDocument

Een vooraf gefilterd verslag van de gekoppelde documenten. U kunt deze tabel bijvoorbeeld gebruiken om de bufferdocumenten te krijgen die in het bestand zijn opgenomen.

EventArgs

U dient het Event te laten afhandelen, als u het Event heeft verwerkt. Je moet ook een waarde opgeven. De beschrijving van de ANVEDI Event Args-structuur vindt u aan het einde van dit hoofdstuk.

Het volgende voorbeeld laat zien hoe u gegevens uit 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 opgeroepen wanneer er een fout optreedt in de verwerkingswachtrij.

EventArgs

U dient het Event te laten afhandelen, als u het Event heeft verwerkt. De beschrijving van de ANVEDI Event Args-structuur vindt u aan het einde van dit hoofdstuk.

OnAfterProcess

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

Deze Event wordt aangeroepen na de verwerking van een invoer in de tabel EDI Processing Queue. U dient de status van de ingevoerde gegevens te controleren en dienovereenkomstig te reageren.

EventArgs

U dient het Event te laten afhandelen, als u het Event heeft verwerkt. De beschrijving van de ANVEDI Event Args-structuur vindt u aan het einde van dit hoofdstuk.

ANVEDI Event Args

Sommige van de Events gebruiken een structuur die ANVEDI Event Args heet. Deze structuur stelt u in staat om waarden terug te geven en de module te vertellen of u het evenement heeft afgehandeld.

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

SetHandled(Value: Boolean)
Value

Of het Event werd behandeld door uw code.

SetResult(Value: Variant)
Value

De terugkeerwaarde, indien het Event een terugkeerwaarde verwacht.

Voorbeeld

Het volgende voorbeeld toont hoe u uw eigen aangepaste functie “MYOBJECT.MYFUNC” kunt toevoegen, die een bericht toont met de opgegeven naam gevolgd door ‘: ‘ en de waarde. U kunt zoveel functies van zoveel extensies toevoegen als u nodig heeft.

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 u wilt reageren op het Event via AL, moet u een afhankelijkheid toevoegen aan de Anveo EDI Connect-module.

De waarden voor de OnPremise Extension zijn:

{
      "appId": "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 Extension zijn:

{
      "appId": "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.