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');
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;
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.
Een woordenboek met de parameters die aan de job worden doorgegeven.
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.
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.
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.
Het communicatiekanaal dat de gegevens moet ophalen.
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")
Het communicatiekanaal dat de gegevens moet ophalen.
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.
De transmissie. De berichten zijn nog niet ontvangen.
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.
De verzending nadat deze is opgehaald (u heeft toegang tot de berichten).
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.
De transmissie die wordt gearchiveerd op de afgelegen locatie.
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.
De transmissie die werd gearchiveerd op de afgelegen locatie.
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.
De transmissie die op de externe locatie wordt verwijderd.
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.
De transmissie die werd verwijderd van de externe locatie.
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.
De transmissie die verstuurd gaat worden.
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.
De transmissie die is samengesteld.
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.
De transmissie die werd verzonden.
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.
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.
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.
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;
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.
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.
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)
Of het Event werd behandeld door uw code.
SetResult(Value: Variant)
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;
}
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.