Diese Seite wurde automatisch übersetzt. Ursprünglich wurde der Inhalt auf Englisch verfasst.

ANVEDI Events

Anveo EDI Connect bietet eine einzige Codeunit für Integrationsereignisse: Codeunit ANVEDI Events. Sie können auf die Ereignisse in dieser Codeunit über Ihre eigene Codeunit reagieren. Die Ereignisse werden sowohl in der FOB- als auch in der Extension 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 Ihre eigenen 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 bietet zwei Funktionen: RegisterFunction und AddParameter.

RegisterFunction erwartet zwei Parameter, den Objektnamen und den Funktionsnamen Ihrer neuen Funktion. Diese Namen sind frei wählbar, dürfen aber nicht länger als 30 Zeichen sein.

Die ersten 29 Zeichen der Kombination aus Objekt- und Funktionsnamen 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 zu verteilen.

Register.RegisterFunction('CustomObj', 'MyFunction');
Register.AddParameter('Name');
Register.AddParameter('Value');
Beispiel: Verwendung des Funktionsregisters

Nachdem Sie die Funktion registriert haben, müssen Sie auf Funktionsaufrufe reagieren. Dies geschieht mit dem nachfolgend beschriebenen OnFunctionExecution.

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 Code ausführen, wenn dies der Fall ist. Dies geschieht durch den Aufruf der Funktion Is() mit denselben Parametern, die Sie in der OnFunctionRegistration bei 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;
Beispiel: Reagieren auf Funktionsaufruf

Die Codeunit ANVEDI Function Call bietet folgende Funktionen:

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 Zahl als Booleschen Wert ab. Der Index beginnt mit 1.

procedure GetDecimalParameter(ParNum: Integer): Decimal

Ruft einen Parameter mit der angegebenen Zahl als Dezimalzahl ab. Der Index beginnt mit 1.

procedure GetDateParameter(ParNum: Integer): Date

Ruft einen Parameter mit der angegebenen Zahl 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 EDIVariant 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 mehrerer Parameter. Weitere Informationen finden Sie in der Dokumentation zum Jobhandler.

ParamaterDictionary

Ein Wörterbuch, das die an den Auftrag übergebenen Parameter enthält.

EventArgs

Sie sollten das Event auf behandelt setzen, wenn Sie einen Auftrag verarbeitet haben. Die Beschreibung der ANVEDI Event Args Struktur 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 ruft diese Funktion jedes Mal auf, wenn es eine Übertragung sieht. Die Datei ist noch nicht gelesen, so dass Sie nur anhand der verfügbaren Metadaten entscheiden können.

ANVEDITransmission

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.

EventArgs

Sie sollten das Event auf „behandelt“ setzen, wenn Sie das Event verarbeitet haben. Sie sollten auch einen Wert zurückgeben, der angibt, ob die Übertragung verarbeitet werden soll (setzen Sie den Rückgabewert auf true) oder nicht (setzen Sie ihn auf false). Die Beschreibung der ANVEDI Event Args Struktur 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.

EDICommunicationChannel

Der Kommunikationskanal, über den die Daten abgerufen werden sollen.

EventArgs

Sie sollten das Event auf behandelt setzen, wenn Sie das Ereignis verarbeitet haben. Die Beschreibung der ANVEDI Event Args Struktur finden Sie am Ende dieses Kapitels.

OnAfterList

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

Der Kommunikationskanal, über den die Daten abgerufen werden sollen.

EventArgs

Sie sollten das Event auf „behandelt“ setzen, wenn Sie das Event verarbeitet haben. Die Beschreibung der ANVEDI Event Args Struktur 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 wollen, ob eine Nachricht abgerufen werden soll oder nicht, verwenden Sie bitte das OnAcceptTransmission.

ANVEDITransmission

Die Übertragung. Die Nachrichten sind noch nicht eingegangen.

EventArgs

Sie sollten das Event auf „behandelt“ setzen, wenn Sie das Event verarbeitet haben. Die Beschreibung der ANVEDI Event Args Struktur 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.

ANVEDITransmission

Die Übertragung nach dem Abruf (Sie können die Nachrichten abrufen).

EventArgs

Sie sollten das Event auf „behandelt“ setzen, wenn Sie das Event verarbeitet haben. Die Beschreibung der ANVEDI Event Args Struktur 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.

ANVEDITransmission

Die Übertragung, die an dem entfernten Standort archiviert werden soll.

EventArgs

Sie sollten das Event auf „behandelt“ setzen, wenn Sie das Event verarbeitet haben. Die Beschreibung der ANVEDI Event Args Struktur 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.

ANVEDITransmission

Die Übertragung, die an dem entfernten Standort archiviert wurde.

EventArgs

Sie sollten das Event auf „behandelt“ setzen, wenn Sie das Event verarbeitet haben. Die Beschreibung der ANVEDI Event Args Struktur 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.

ANVEDITransmission

Die Übertragung, die an dem entfernten Standort gelöscht werden soll.

EventArgs

Sie sollten das Event auf „behandelt“ setzen, wenn Sie das Event verarbeitet haben. Die Beschreibung der ANVEDI Event Args Struktur 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.

ANVEDITransmission

Die Übertragung, die vom entfernten Standort gelöscht wurde.

EventArgs

Sie sollten das Event auf „behandelt“ setzen, wenn Sie das Event verarbeitet haben. Die Beschreibung der ANVEDI Event Args Struktur 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.

ANVEDITransmission

Die Übertragung, die gesendet werden soll.

EventArgs

Sie sollten das Event auf „behandelt“ setzen, wenn Sie das Event verarbeitet haben. Die Beschreibung der ANVEDI Event Args Struktur 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.

ANVEDITransmission

Die Übertragung, die zusammengesetzt ist.

EventArgs

Sie sollten das Event auf „behandelt“ setzen, wenn Sie das Event verarbeitet haben. Die Beschreibung der ANVEDI Event Args Struktur 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.

ANVEDITransmission

Die Übertragung, die gesendet wurde.

EventArgs

Sie sollten das Event auf behandelt setzen, wenn Sie das Ereignis verarbeitet haben. Die Beschreibung der ANVEDI Event Args Struktur 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.

Placeholder

Der Name des Platzhalters. Das Modul sucht gerade nach einem Wert, der diesen speziellen Platzhalter ersetzt. Wenn Sie einen Wert bereitstellen möchten, müssen Sie das Ergebnis angeben und das Ereignis in den EventArgs auf behandelt setzen.

ANVEDILinkedDocument

Eine vorgefilterte Aufzeichnung der verknüpften Dokumente. Sie können diese Tabelle z. B. verwenden, um die in der Datei enthaltenen Pufferdokumente zu ermitteln.

EventArgs

Sie sollten das Event auf „behandelt“ setzen, wenn Sie das Event verarbeitet haben. Sie müssen auch einen Wert bieten. Die Beschreibung der ANVEDI Event Args Struktur finden Sie am Ende dieses Kapitels.

Das folgende Beispiel zeigt, wie Sie Daten aus dem verknüpften Dokument zurückgeben können:

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

OnError

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

Dieses Event wird aufgerufen, wenn ein Fehler in der Verarbeitungswarteschlange auftritt.

EventArgs

Sie sollten das Event auf „behandelt“ setzen, wenn Sie das Event verarbeitet haben. Die Beschreibung der ANVEDI Event Args Struktur 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 bestandenen Eintrags überprüfen und entsprechend reagieren.

EventArgs

Sie sollten das Event auf „behandelt“ setzen, wenn Sie das Event verarbeitet haben. Die Beschreibung der ANVEDI Event Args Struktur finden Sie am Ende dieses Kapitels.

ANVEDI Event Args

Einige der Events verwenden eine Struktur namens ANVEDI Event Args. Diese Struktur ermöglicht es Ihnen, Werte zurückzugeben und dem Modul mitzuteilen, 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)
Value

Ob das Event von Ihrem Code behandelt wurde.

SetResult(Value: Variant)
Value

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;
}
Vollständiges Beispiel: Benutzerdefinierte Funktion

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 Extension sind:

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

Bitte stellen Sie sicher, dass Sie x, y, z durch die richtige Versionsnummer ersetzen.

Die Werte für Business Central Online und Universal Code Extension sind:

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

Bitte stellen Sie sicher, dass Sie x, y, z durch die richtige Versionsnummer ersetzen. Ältere BC-Versionen nannten „id“ „appId“.