ANVEDI Events
Anveo EDI Connect bietet eine einzige Codeunit für Integrationsereignisse: Codeunit ANVEDI Events. Auf die Ereignisse in dieser Codeunit können Sie über Ihre eigene Codeunit reagieren. Die Ereignisse werden sowohl in der FOB- als auch in der Extension-Version von Microsoft Dynamics unterstützt.
Events
Die verfügbaren Events sind:
- 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")
Dieses Ereignis wird aufgerufen, wenn das Modul nach benutzerdefinierten Funktionen sucht. Sie können eigene Funktionen definieren, indem Sie die Funktionalität der Codeunit ANVEDI Function Register nutzen, die unter dem Namen Register zur Verfügung gestellt wird. Die Codeunit stellt zwei Funktionen zur Verfügung: RegisterFunction und AddParameter.
RegisterFunction erwartet zwei Parameter, den Objektnamen und den Funktionsnamen Ihrer neuen Funktion. Diese Namen können frei gewählt werden, dürfen aber 30 Zeichen nicht überschreiten.
Die ersten 29 Zeichen der Kombination aus Objekt- und Funktionsname müssen eindeutig sein, um die Parameter aus dem Mapping angeben zu können. Sie sollten versuchen, die Namen kurz zu halten.
Nachdem Sie eine Funktion registriert haben, können Sie AddParameter bis zu 5 Mal aufrufen. AddParameter erwartet einen Namen für den Parameter Ihrer Funktion. Sie können mehrere Blöcke von RegisterFunction und AddParameter in einem Event verwenden. Wir empfehlen jedoch, mehrere Funktionen auf mehrere Event-Listener aufzuteilen.
Register.RegisterFunction('CustomObj', 'MyFunction');
Register.AddParameter('Name');
Register.AddParameter('Value');
Nachdem Sie die Funktion registriert haben, müssen Sie auf Funktionsaufrufe reagieren. Dies geschieht mit dem nachfolgend beschriebenen Event.
OnFunctionExecution
procedure OnFunctionExecution(FunctionCall: Codeunit "ANVEDI Function Call")
Das Event wird aufgerufen, wenn das Modul nach einer benutzerdefinierten Funktionsimplementierung sucht. Diesem Ereignis wird eine Instanz der Codeunit ANVEDI Function Call unter dem Namen FunctionCall übergeben.
Sie sollten prüfen, ob der FunctionCall mit Ihrer benutzerdefinierten Funktion übereinstimmt und nur dann einen Code ausführen, wenn dies der Fall ist. Dies geschieht durch den Aufruf der Funktion Is() mit den gleichen Parametern, die Sie in der Eventbei RegisterFunction aufgerufen haben. Wenn Is() true zurückgibt, können Sie auf die Parameter zugreifen, Ihren eigenen Code ausführen und einen Wert zurückgeben.
if FunctionCall.Is(ObjectNameTok, FunctionNameTok) then begin
Name := FunctionCall.GetTextParameter(1);
Val := FunctionCall.GetIntegerParameter(2);
Message(Name + ': ' + Format(Val));
FunctionCall.SetResult(TRUE);
end;
Die Codeunit ANVEDI Function Call stellt die folgenden Funktionen zur Verfügung:
procedure Is(ObjectName: Text[30];FunctionName: Text[30]): Boolean
Gibt zurück, ob der Funktionsaufruf mit der angegebenen Funktionssignatur übereinstimmt.
procedure SetResult(Value: Variant)
Sie müssen diese Funktion aufrufen, um dem Modul zu zeigen, dass Sie den Funktionsaufruf bearbeitet haben. Sie können ein Funktionsergebnis übergeben, oder einfach true als Ergebnis verwenden.
procedure GetTextParameter(ParNum: Integer): Text[1024]
Ruft einen Parameter mit der angegebenen Nummer als Text ab. Der Index beginnt mit 1.
procedure GetIntegerParameter(ParNum: Integer): Integer
Ruft einen Parameter mit der angegebenen Zahl als Ganzzahl ab. Der Index beginnt mit 1.
procedure GetBooleanParameter(ParNum: Integer): Boolean
Ruft einen Parameter mit der angegebenen Nummer als Boolean ab. Der Index beginnt mit 1.
procedure GetDecimalParameter(ParNum: Integer): Decimal
Ruft einen Parameter mit der angegebenen Zahl als Dezimalwert ab. Der Index beginnt mit 1.
procedure GetDateParameter(ParNum: Integer): Date
Ruft einen Parameter mit der angegebenen Nummer als Datum ab. Der Index beginnt mit 1.
procedure GetTimeParameter(ParNum: Integer): Time
Ruft einen Parameter mit der angegebenen Nummer als Datum und Uhrzeit ab. Der Index beginnt mit 1.
procedure GetDateTimeParameter(ParNum: Integer): DateTime
Ruft einen Parameter mit der angegebenen Zahl als Zeit ab. Der Index beginnt mit 1.
procedure GetParameter(ParNum: Integer;var EDIVariant: Codeunit "ANVEDI Variant"): Boolean
Ruft einen Parameter mit der angegebenen Nummer als EDIVariante ab. Die Funktion gibt zurück, ob der Parameter abgerufen werden konnte. Der Index beginnt mit 1.
OnJob
procedure OnJob(ParameterDictionary: Codeunit "ANVEDI Data Structures";EventArgs: Codeunit "ANVEDI Event Args")
Sie können die Codeunit des Moduls verwenden, um benutzerdefinierte Jobs zu definieren. Die Codeunit unterstützt die Verwendung von mehreren Parametern. Weitere Informationen finden Sie in der Dokumentation des Jobhandlers.
Ein Wörterbuch, das die an den Auftrag übergebenen Parameter enthält.
Sie sollten das Event auf behandelt setzen, wenn Sie einen Auftrag verarbeitet haben. Die Beschreibung der Struktur ANVEDI Event Args finden Sie am Ende dieses Kapitels.
OnAcceptTransmission
procedure OnAcceptTransmission(ANVEDITransmission: Record "ANVEDI Transmission";EventArgs: Codeunit "ANVEDI Event Args")
Diese Funktion wird aufgerufen, um festzustellen, ob eine Datei oder Nachricht vom Modul akzeptiert oder ignoriert werden soll. Das Modul speichert nicht, ob eine Übertragung ignoriert wurde und wird diese Funktion jedes Mal aufrufen, wenn es eine Übertragung sieht. Die Datei wird noch nicht gelesen, daher können Sie nur anhand der verfügbaren Metadaten entscheiden.
Die Übertragung, für die die Metadaten abgerufen wurden. Bitte beachten Sie, dass zu diesem Zeitpunkt noch keine Daten empfangen wurden und der Datensatz noch nicht in die Datenbank eingefügt ist.
Sie sollten das Event auf behandelt setzen, wenn Sie das Event verarbeitet haben. Sie sollten auch einen Wert zurückgeben, ob die Übertragung verarbeitet werden soll (setzen Sie den Rückgabewert auf true); oder nicht (setzen Sie ihn auf false). Die Beschreibung der Struktur ANVEDI Event Args finden Sie am Ende dieses Kapitels.
OnBeforeList
procedure OnBeforeList(EDICommunicationChannel: Record "ANVEDI Communication Channel";EventArgs: Codeunit "ANVEDI Event Args")
Dieser Code wird aufgerufen, bevor das Modul nach neuen Daten sucht. Dies kann verwendet werden, um einen externen Befehl oder ein Skript zum Empfangen der Dateien auszugeben, bevor das Modul nach neuen Daten sucht.
Der Kommunikationskanal, der Daten abrufen soll.
Sie sollten das Event auf behandelt setzen, wenn Sie das Ereignis verarbeitet haben. Die Beschreibung der Struktur ANVEDI Event Args finden Sie am Ende dieses Kapitels.
OnAfterList
procedure OnAfterList(EDICommunicationChannel: Record "ANVEDI Communication Channel";EventArgs: Codeunit "ANVEDI Event Args")
Der Kommunikationskanal, der Daten abrufen soll.
Sie sollten das Event auf behandelt setzen, wenn Sie das Event verarbeitet haben. Die Beschreibung der Struktur ANVEDI Event Args finden Sie am Ende dieses Kapitels.
Dieser Code wird aufgerufen, nachdem das Modul nach neuen Daten gesucht hat.
OnBeforeReceive
procedure OnBeforeReceive(ANVEDITransmission: Record "ANVEDI Transmission";EventArgs: Codeunit "ANVEDI Event Args")
Dieses Event wird aufgerufen, bevor eine Übertragung abgerufen wird. Bitte beachten Sie, dass Sie die Bearbeitung zu diesem Zeitpunkt nicht mehr abbrechen können. Wenn Sie entscheiden möchten, ob eine Nachricht abgerufen werden soll oder nicht, verwenden Sie bitte den Event.
Die Übertragung. Die Nachrichten werden noch nicht empfangen.
Sie sollten das Event auf behandelt setzen, wenn Sie das Event verarbeitet haben. Die Beschreibung der Struktur ANVEDI Event Args finden Sie am Ende dieses Kapitels.
OnAfterReceive
procedure OnAfterReceive(ANVEDITransmission: Record "ANVEDI Transmission";EventArgs: Codeunit "ANVEDI Event Args")
Dieses Event wird aufgerufen, nachdem eine Übertragung empfangen wurde.
Die Übertragung, nachdem sie abgerufen wurde (Sie können auf die Nachrichten zugreifen).
Sie sollten das Event auf behandelt setzen, wenn Sie das Event verarbeitet haben. Die Beschreibung der Struktur ANVEDI Event Args finden Sie am Ende dieses Kapitels.
OnBeforeArchive
procedure OnBeforeArchive(ANVEDITransmission: Record "ANVEDI Transmission";EventArgs: Codeunit "ANVEDI Event Args")
Dieses Event wird aufgerufen, bevor eine Übertragung archiviert wird.
Die Übertragung, die am entfernten Standort archiviert werden soll.
Sie sollten das Event auf behandelt setzen, wenn Sie das Event verarbeitet haben. Die Beschreibung der Struktur ANVEDI Event Args finden Sie am Ende dieses Kapitels.
OnAfterArchive
procedure OnAfterArchive(ANVEDITransmission: Record "ANVEDI Transmission";EventArgs: Codeunit "ANVEDI Event Args")
Dieses Event wird aufgerufen, nachdem eine Übertragung archiviert wurde.
Die Übertragung, die am entfernten Standort archiviert wurde.
Sie sollten das Event auf behandelt setzen, wenn Sie das Event verarbeitet haben. Die Beschreibung der Struktur ANVEDI Event Args finden Sie am Ende dieses Kapitels.
OnBeforeDelete
procedure OnBeforeDelete(ANVEDITransmission: Record "ANVEDI Transmission";EventArgs: Codeunit "ANVEDI Event Args")
Dieses Event wird aufgerufen, bevor eine Übertragung gelöscht wird.
Die Übertragung, die am entfernten Standort gelöscht werden soll.
Sie sollten das Event auf behandelt setzen, wenn Sie das Event verarbeitet haben. Die Beschreibung der Struktur ANVEDI Event Args finden Sie am Ende dieses Kapitels.
OnAfterDelete
procedure OnAfterDelete(ANVEDITransmission: Record "ANVEDI Transmission";EventArgs: Codeunit "ANVEDI Event Args")
Dieses Event wird aufgerufen, nachdem eine Übertragung gelöscht wurde.
Die Übertragung, die vom entfernten Standort gelöscht wurde.
Sie sollten das Event auf behandelt setzen, wenn Sie das Event verarbeitet haben. Die Beschreibung der Struktur ANVEDI Event Args finden Sie am Ende dieses Kapitels.
OnBeforeSend
procedure OnBeforeSend(ANVEDITransmission: Record "ANVEDI Transmission";EventArgs: Codeunit "ANVEDI Event Args")
Dieses Event wird aufgerufen, bevor eine Übertragung gesendet wird.
Die Übertragung, die gesendet werden soll.
Sie sollten das Event auf behandelt setzen, wenn Sie das Event verarbeitet haben. Die Beschreibung der Struktur ANVEDI Event Args finden Sie am Ende dieses Kapitels.
OnComposeMessage
procedure OnComposeMessage(ANVEDITransmission: Record "ANVEDI Transmission";EventArgs: Codeunit "ANVEDI Event Args")
Dieses Event wird aufgerufen, wenn eine Übertragung zusammengestellt wird.
Die Übertragung, die zusammengesetzt ist.
Sie sollten das Event auf behandelt setzen, wenn Sie das Event verarbeitet haben. Die Beschreibung der Struktur ANVEDI Event Args finden Sie am Ende dieses Kapitels.
OnAfterSend
procedure OnAfterSend(ANVEDITransmission: Record "ANVEDI Transmission";EventArgs: Codeunit "ANVEDI Event Args")
Dieses Event wird aufgerufen, nachdem eine Übertragung gesendet wurde.
Die Übertragung, die gesendet wurde.
Sie sollten das Event auf behandelt setzen, wenn Sie das Ereignis verarbeitet haben. Die Beschreibung der Struktur ANVEDI Event Args finden Sie am Ende dieses Kapitels.
OnReplacePlaceholder
procedure OnReplacePlaceholder(Placeholder: Text[50];var ANVEDILinkedDocument: Record "ANVEDI Linked Document";EventArgs: Codeunit "ANVEDI Event Args")
Diese Funktion wird aufgerufen, wenn eine Zeichenkette ausgewertet wird, die benutzerdefinierte Variablen enthalten kann, wie z. B. einen Dateinamen.
Der Name des Platzhalters. Das Modul sucht gerade nach einem Wert, um diesen speziellen Platzhalter zu ersetzen. Wenn Sie einen Wert bereitstellen möchten, müssen Sie das Ergebnis angeben und das Ereignis in den EventArgs auf behandelt setzen.
Ein vorgefilterter Datensatz der verknüpften Dokumente. Sie können diese Tabelle z. B. verwenden, um die in der Datei enthaltenen Pufferdokumente zu erhalten.
Sie sollten das Event auf behandelt setzen, wenn Sie das Event verarbeitet haben. Sie müssen auch einen Wert bieten. Die Beschreibung der Struktur ANVEDI Event Args finden Sie am Ende dieses Kapitels.
Das folgende Beispiel zeigt, wie Sie Daten aus dem verknüpften Dokument zurückgeben könnten:
[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")
Dieses Event wird aufgerufen, wenn ein Fehler in der Verarbeitungswarteschlange auftritt.
Sie sollten das Event auf behandelt setzen, wenn Sie das Event verarbeitet haben. Die Beschreibung der Struktur ANVEDI Event Args finden Sie am Ende dieses Kapitels.
OnAfterProcess
procedure OnAfterProcess(ANVEDIProcessingQueue: Record "ANVEDI Processing Queue";EventArgs: Codeunit "ANVEDI Event Args")
Dieses Event wird nach der Verarbeitung eines Eintrags in der Tabelle EDI Verarbeitungswarteschlange aufgerufen. Sie sollten den Status des übergebenen Eintrags prüfen und entsprechend reagieren.
Sie sollten das Event auf behandelt setzen, wenn Sie das Event verarbeitet haben. Die Beschreibung der Struktur ANVEDI Event Args finden Sie am Ende dieses Kapitels.
ANVEDI Event Args
Einige der Events verwenden eine Struktur namens ANVEDI Event Args. Mit dieser Struktur können Sie Werte zurückgeben und dem Modul mitteilen, ob Sie das Ereignis behandelt haben.
Die folgenden Funktionen sind für das ANVEDI Event Args verfügbar, die an das Event übergeben werden:
SetHandled(Value: Boolean)
Ob das Event von Ihrem Code behandelt wurde.
SetResult(Value: Variant)
Der Rückgabewert, wenn das Event einen Rückgabewert erwartet.
Beispiel
Das folgende Beispiel zeigt, wie Sie Ihre eigene benutzerdefinierte Funktion „MYOBJECT.MYFUNC“ hinzufügen können, die eine Meldung mit dem angegebenen Namen, gefolgt von ‚: ‚ und dem Wert anzeigt. Sie können so viele Funktionen aus so vielen Erweiterungen hinzufügen, wie Sie benötigen.
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;
}
Abhängigkeiten
Wenn Sie über AL auf das Event reagieren möchten, müssen Sie eine Abhängigkeit zum Anveo EDI Connect-Modul hinzufügen.
Die Werte für die OnPremise-Erweiterung sind:
{
"appId": "25286BD2-B08A-49F9-B613-64122CCEE4E1",
"name": "Anveo EDI Connect - OnPremise",
"publisher": "conion media GmbH",
"version": "5.x.y.z"
}
Bitte achten Sie darauf, dass Sie x, y, z durch die richtige Versionsnummer ersetzen.
Die Werte für die Business Central Online Extension sind:
{
"appId": "FC195C4F-19BF-4167-BFE8-6D1FF7D266BC",
"name": "Anveo EDI Connect",
"publisher": "conion media GmbH",
"version": "5.x.y.z"
}
Bitte achten Sie darauf, dass Sie x, y, z durch die richtige Versionsnummer ersetzen.