This is an automatic translation. The original post is available in Englisch.

ANVEDI Callback

Die Informationen auf dieser Seite gelten nur für Vor-Ort-Installationen, die die FOB-Dateien verwenden.

Wenn Sie Microsoft Dynamics NAV 2017 oder eine neuere Version verwenden und Anveo EDI Connect 5.00 eine neue ereignisbasierte Anpassungslogik bietet. Wir empfehlen dringend, wenn möglich zu den neuen Integrationsveranstaltungen überzugehen, um Upgrades auf neuere Versionen zu erleichtern.

Die Codeunit ANVEDI Callback mit der ID 5327310 ist der zentrale Punkt, wenn Sie das Verhalten von Anveo EDI Connect ändern wollen. Wir halten die API dieser Codeunit konstant, so dass Sie dieses Objekt nicht überschreiben müssen, wenn Sie unser Modul aktualisieren. Es gibt mehrere Funktionen, die von Ihnen modifiziert werden können und einige Hilfsfunktionen, die nicht modifiziert werden dürfen. Wenn Sie das Modul aktualisiert haben und eine Hilfefunktion vermissen, die möglicherweise in einer neueren Version hinzugefügt wurde, gibt es ein zweites Objekt namens EDI Callback - Template mit der ID 5327313, wo Sie die neue Funktionalität finden.

OnFunction

Das Modul erlaubt es Ihnen, Ihre eigene Funktionalität zu definieren, die aus den EDI-Mappings heraus aufgerufen werden kann. Sie können so viele Funktionen definieren, wie Sie benötigen. Sie sollten die vordefinierte Fall-Anweisung verwenden und Aufrufe zu den eingebauten Funktionen FunctionName..FunctionName5 hinzufügen.

Sie sollten keinen Code außerhalb der vordefinierten Fallstruktur platzieren, da diese Funktion recht häufig aufgerufen werden kann und jeder zusätzliche Code negative Auswirkungen auf die Leistung haben kann.

Beispiel: Funktion „Hallo Welt“ in OnFunction

Die Zahl am Ende der lokalen Hilfsfunktion FunctionName definiert die Parameteranzahl. Sie können Funktionen mit bis zu fünf Parametern definieren. Sie können auf den Inhalt der Parameter zugreifen, indem Sie die Funktionen GetTextParameter(ParNumber) und die ähnlichen Funktionen für andere Datentypen aufrufen. Die Parameternummer wird von „1“ bis „5“ gezählt.

Jede Funktion muss einen Wert zurückgeben, indem sie die lokale Funktion mit dem Namen FunctionResult aufruft.

Sie sollten die Funktion FunctionResult nur einmal aufrufen. Es ist eine gute Praxis, eine EXIT-Anweisung direkt danach einzufügen, um einen mehrfachen Aufruf der Funktion zu verhindern.

Sie können die Objekt- und Funktionsbezeichnungen frei wählen.

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.

Hier eine vollständige Liste der verfügbaren Funktionen zur Verwendung in der CASE-Anweisung. Ab Anveo EDI Connect 4.00:

  • FunctionName(ObjectName: Text; FunctionName: Text)
  • FunctionName1(ObjectName: Text; FunctionName: Text; ParamName1: Text)
  • FunctionName2(ObjectName: Text; FunctionName: Text; ParamName1: Text; ParamName2: Text)
  • FunctionName3(ObjectName: Text; FunctionName: Text; ParamName1: Text; ParamName2: Text; ParamName3: Text)
  • FunctionName4(ObjectName: Text; FunctionName: Text; ParamName1: Text; ParamName2: Text; ParamName3: Text; ParamName4: Text)
  • FunctionName5(ObjectName: Text; FunctionName: Text; ParamName1: Text; ParamName2: Text; ParamName3: Text; ParamName4: Text; ParamName5: Text)

Hier eine Liste der Funktionen, mit denen Sie auf die Parameter zugreifen können:

  • GetTextParameter(ParNum : Integer) : Text
    • Ruft den Parameter ab und versucht, ihn in den Datentyp Text zu gießen.
  • GetIntegerParameter(ParNum : Integer) : Integer
    • Ruft den Parameter ab und versucht, ihn auf den Datentyp Integer zu casten.
  • GetBooleanParameter(ParNum : Integer) : Boolean
    • Ruft den Parameter ab und versucht, ihn in den Datentyp boolean zu casten.
  • GetDecimalParameter(ParNum : Integer) : Decimal
    • Ruft den Parameter ab und versucht, ihn auf den Datentyp Dezimal zu casten.
  • GetDateParameter(ParNum : Integer) : Date
    • Ruft den Parameter ab und versucht, ihn auf den Datentyp date zu casten.
  • GetTimeParameter(ParNum : Integer) : Time
    • Ruft den Parameter ab und versucht, ihn auf den Datentyp Zeit zu casten.
  • GetDateTimeParameter(ParNum : Integer) : DateTime
    • Ruft den Parameter ab und versucht, ihn auf den Datentyp Datum/Uhrzeit zu casten.
  • GetParameter(ParNum : Integer;VAR EDIVariant : Codeunit
    • Ruft den Parameter als Instanz der Codeunit ANVEDI Variant ab.

CallbackRegistration

Diese Funktion wird immer dann aufgerufen, wenn in dem Baustein etwas passiert, auf das Sie reagieren können. Die Funktion enthält eine Fallstruktur, in der Sie anhand des übergebenen Parameters CallbackSupport überprüfen können, was passiert ist.

Sie sollten keinen Code außerhalb der vordefinierten Fallstruktur platzieren, da diese Funktion recht häufig aufgerufen werden kann und jeder zusätzliche Code negative Auswirkungen auf die Leistung haben kann.

Diese Struktur mag für C/AL-Entwickler ungewöhnlich aussehen, aber wir können auf diese Weise Funktionalität hinzufügen, ohne dass die ANVEDI Callback aktualisiert werden muss.

Die verfügbaren Ereignisse werden durch den Codeunit definiert. In den folgenden Abschnitten werden wir die verfügbaren Veranstaltungen diskutieren.

OnJobCallback

Sie können die Codeunit aus dem Modul verwenden, um benutzerdefinierte Jobs zu definieren. Die Codeunit ermöglicht die Unterstützung der Verwendung mehrerer Parameter. Weitere Informationen finden Sie in der Dokumentation zum Jobhandler.

OnAcceptTransmission

Diese Funktion wird aufgerufen, um zu bestimmen, ob eine Datei oder Nachricht von dem Modul akzeptiert oder ignoriert werden soll. Der Baustein speichert nicht, ob eine Übertragung ignoriert wurde und ruft diese Funktion jedes Mal auf, wenn er eine Übertragung sieht. Die Datei ist noch nicht gelesen, so dass Sie nur auf der Grundlage der verfügbaren Metadaten entscheiden können.

Parameter:

EDITransmission

Ein Satz aus der Tabelle EDI Übertragung-Übertragung mit den bisher bekannten Daten. Die Aufzeichnung ist noch nicht geschrieben.

Wenn Sie auf dieses Ereignis reagieren, müssen Sie die folgende Funktion aufrufen:

Parameter:

Result

Ob die Übertragung empfangen werden soll oder nicht. Der Wert True bedeutet, dass Sie die Daten empfangen möchten, der Wert False, dass Sie die Übertragung ignorieren möchten.

EDITransmission

Sie sollten den Datensatz aus dem OnAcceptTransmission-Aufruf an diesen Parameter übergeben.

Beispiel: OnAcceptTransmission

OnBeforeList

Dieser Code wird aufgerufen, bevor das Modul nach neuen Daten sucht. Dies kann verwendet werden, um einen externen Befehl oder ein Skript zum Empfang der Dateien auszugeben, bevor das Modul nach neuen Daten sucht.

Parameter:

EDICommunicationChannel

Gibt einen Datensatz der EDI Datenübertragungskanal an, nach dem neue Nachrichten gesucht werden sollen.

Dieses Ereignis erfordert keinen Aufruf einer anderen Funktion, da es keine Rückgabewerte unterstützt.

OnAfterList

Dieser Code wird aufgerufen, nachdem das Modul nach neuen Daten gesucht hat.

Parameter:

EDICommunicationChannel

Gibt einen Datensatz der EDI Datenübertragungskanal an.

Dieses Ereignis erfordert keinen Aufruf einer anderen Funktion, da es keine Rückgabewerte unterstützt.

OnBeforeReceive

Dieses Ereignis wird aufgerufen, bevor eine Übertragung abgerufen wird.

Parameter:

EDITransmission

Gibt einen Datensatz der EDI Übertragung an.

Dieses Ereignis erfordert keinen Aufruf einer anderen Funktion, da es keine Rückgabewerte unterstützt.

OnAfterReceive

Dieses Ereignis wird aufgerufen, nachdem eine Übertragung empfangen wurde.

Parameter:

EDITransmission

Gibt einen Datensatz der EDI Übertragung an.

Dieses Ereignis erfordert keinen Aufruf einer anderen Funktion, da es keine Rückgabewerte unterstützt.

OnBeforeArchive

Dieses Ereignis wird aufgerufen, bevor eine Übertragung archiviert wird.

Parameter:

EDITransmission

Gibt einen Datensatz der EDI Übertragung an.

Dieses Ereignis erfordert keinen Aufruf einer anderen Funktion, da es keine Rückgabewerte unterstützt.

OnAfterArchive

Dieses Ereignis wird aufgerufen, nachdem eine Übertragung archiviert wurde.

Parameter:

EDITransmission

Gibt einen Datensatz der EDI Übertragung an.

Dieses Ereignis erfordert keinen Aufruf einer anderen Funktion, da es keine Rückgabewerte unterstützt.

OnBeforeDelete

Dieses Ereignis wird aufgerufen, bevor eine Übertragung gelöscht wird.

Parameter:

EDITransmission

Gibt einen Datensatz der EDI Übertragung an.

Dieses Ereignis erfordert keinen Aufruf einer anderen Funktion, da es keine Rückgabewerte unterstützt.

OnAfterDelete

Dieses Ereignis wird aufgerufen, nachdem eine Übertragung gelöscht wurde.

Parameter:

EDITransmission

Gibt einen Datensatz der EDI Übertragung an.

Dieses Ereignis erfordert keinen Aufruf einer anderen Funktion, da es keine Rückgabewerte unterstützt.

OnBeforeSend

Dieses Ereignis wird aufgerufen, bevor eine Übertragung gesendet wird.

Parameter:

EDITransmission

Gibt einen Datensatz der EDI Übertragung an.

Wenn Sie auf dieses Ereignis reagieren, müssen Sie die Funktion aufrufen:

Result

Ob die Übertragung gesendet werden soll. Der Wert True bedeutet, dass die Übertragung gesendet werden soll.

EDITransmission

Die Übertragung, die Sie mit dem Ereignisaufruf erhalten haben.

OnComposeMessage

Dieses Ereignis wird aufgerufen, wenn eine Übertragung zusammengestellt wird.

Parameter:

EDITransmission

Gibt einen Datensatz der EDI Übertragung an.

Dieses Ereignis erfordert keinen Aufruf einer anderen Funktion, da es keine Rückgabewerte unterstützt.

OnAfterSend

Dieses Ereignis wird nach dem Senden einer Übertragung aufgerufen.

Parameter:

EDITransmission

Gibt einen Datensatz der EDI Übertragung an.

Wenn Sie auf dieses Ereignis reagieren, müssen Sie die Funktion aufrufen:

Result

Das Ergebnis wird derzeit ignoriert.

EDITransmission

Die Übertragung, die Sie mit dem Ereignisaufruf erhalten haben.

OnReplacePlaceholder

Diese Funktion wird aufgerufen, wenn eine Zeichenfolge ausgewertet wird, die benutzerdefinierte Variablen, wie z.B. einen Dateinamen, enthalten kann.

Nachstehend finden Sie ein Beispiel:

Beispiel-Code: OnReplacePlatzhalter

Parameter:

Placeholder

Der Variablenname zwischen den geschweiften Klammern, nach dem ein Wert gesucht wird.

Wenn Sie auf dieses Ereignis reagieren, sollten Sie die Funktion aufrufen:

Parameter:

Result

ob Sie einen Wert zurückgeben möchten. Wenn Sie True zurückgeben, sollten Sie einen Wert für die Variable angeben. Sie können Systemvariablen überschreiben.

Value

Der Wert, der verwendet werden sollte.

OnError

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

Parameter:

EDIProcessingQueue

Eine Instanz der Tabelle EDI Verarbeitungswarteschlange, deren Verarbeitung fehlgeschlagen ist.

AfterProcess

Dieses Ereignis wird nach der Verarbeitung eines Eintrags in der Tabelle EDI Verarbeitungswarteschlange aufgerufen. Sie sollten den Status des übergebenen Eintrags prüfen und entsprechend reagieren.

Parameter:

EDIProcessingQueue

Eine Instanz der Tabelle EDI Verarbeitungswarteschlange, die verarbeitet wurde.

LookupLinkedDocument

Diese Funktion wird aus der Liste der verknüpften Dokumente aufgerufen, wenn der Benutzer die Kartenseite öffnen möchte. Es gibt ein paar vordefinierte Seiten im Modul, und wir versuchen, auf die Standard-Lookup-Seite zurückzugreifen, falls diese Funktion False zurückgibt.

RecRef

Der Datensatz, für den der Benutzer die Seite öffnen möchte.

Rückgabewert

Ein boolescher Wert. Gibt den Wert True zurück, wenn die Seite durch diese Funktion geöffnet wurde; andernfalls False.

Beispiel-Code: Kartenseite für Kundenauftrag öffnen

BeforeConvert

Diese Funktion wird aufgerufen, bevor ein Mapping gestartet wird. Der Aufruf erfolgt innerhalb der Datenbanktransaktion des Mapping. Sie können die Mapping abbrechen, bevor das Mapping überhaupt begonnen hat, indem Sie den Wert True zurückgeben. Im Allgemeinen raten wir von der Verwendung dieser Funktion ab. Wenn Sie benutzerdefinierten Code aufrufen möchten, verwenden Sie bitte entweder die neuere CallbackRegistration-Registrierung oder die OnFunction-Funktionalität.

AfterConvert

Diese Funktion wird aufgerufen, nachdem ein Mapping erfolgreich abgeschlossen wurde. Der Aufruf erfolgt innerhalb der Datenbanktransaktion des Mapping. Im Allgemeinen raten wir von der Verwendung dieser Funktion ab. Wenn Sie benutzerdefinierten Code aufrufen möchten, verwenden Sie bitte entweder die neuere CallbackRegistration-Registrierung oder die OnFunction-Funktionalität.

In Anveo EDI Connect 4.00 haben wir zu den Ereignissen die Funktion CallbackRegistration-Registrierung namens OnError und AfterProcess hinzugefügt. Bitte nutzen Sie, wenn möglich, die neue Funktionalität.

Querverweise

Sie können Ihre eigene Querverweislogik definieren. Diese Funktionalität wird aufgerufen, wenn der Querverweistyp auf callback eingestellt ist. Häufig empfehlen wir, Mappings anstelle von benutzerdefiniertem Callback-Code zu verwenden, um das Lesen der Mappings zu erleichtern. Benutzerdefinierter Querverweiscode ist aus unserer Sicht schwieriger zu pflegen.

ValidateCrossReferenceNumber

Prüfen Sie, ob eine externe Querverweisnummer gültig ist.

diese Funktion ist veraltet und sollte nicht verwendet werden.

GetInternalNo

Gibt eine interne Nummer von einer externen Nummer zurück.

GetExternalNo

Gibt eine externe Nummer von einer internen Nummer zurück.

UpdateCrossReference

Wird aufgerufen, wenn der Benutzer versucht, einen Querverweis zu aktualisieren.

Veraltete Funktionen

Die untenstehende Funktionalität ist nur teilweise implementiert und daher nicht sicher. Wir empfehlen, die Standard-Sicherheitsfilter von Microsoft Dynamics 365 Business Central zu verwenden und die beiden Funktionen leer zu lassen.

ApplyUserFilter

Erlaubt Ihnen, die übergebenen Daten so zu filtern, dass der Benutzer den Filter später ändern kann. Die Verwendung dieser Funktion wird nicht mehr empfohlen. Die Funktion könnte in neueren Versionen entfernt werden.

ApplySecurityFilter

Ermöglicht Ihnen, die Daten so zu filtern, dass der Filter vom Benutzer nicht geändert werden kann. Diese Funktion wird nicht in allen Instanzen aufgerufen. Die Verwendung dieser Funktion wird nicht mehr empfohlen. Die Funktion könnte in neueren Versionen entfernt werden.