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

ANVEDI Events

Anveo EDI Connect offre une codeunit unique pour les événements d’intégration : Codeunit ANVEDI Events. Vous pouvez réagir aux événements dans cette codeunit de code via votre propre codeunit. Les événements sont pris en charge à la fois dans la version FOB et la version Extension de Microsoft Dynamics.

Events

Les Events disponibles sont :

  • 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")

Cet événement est appelé lorsque le module recherche des fonctions personnalisées. Vous pouvez définir vos propres fonctions en utilisant la fonctionnalité fournie par l’codeunit ANVEDI Function Register qui est fournie sous le nom Register. L’codeunit a deux fonctions : RegisterFunction et AddParameter.

RegisterFunction attend deux paramètres, le nom de l’objet et le nom de la fonction de votre nouvelle fonction. Ces noms peuvent être choisis librement, mais ne peuvent pas dépasser 30 caractères.

Les 29 premiers caractères de la combinaison du nom de l’objet et de la fonction doivent être uniques pour pouvoir spécifier les paramètres à partir de la mapping. Vous devez essayer de faire en sorte que les noms soient courts.

Après avoir enregistré une fonction, vous pouvez appeler AddParameter jusqu’à 5 fois. AddParameter attend un nom pour le paramètre de votre fonction. Vous pouvez utiliser plusieurs blocs de RegisterFunction et AddParameter dans un Event. Mais nous recommandons de séparer les multiples fonctions pour les multiples auditeurs de l’Event.

Register.RegisterFunction('CustomObj', 'MyFunction');
Register.AddParameter('Name');
Register.AddParameter('Value');
Exemple : Utilisation du registre des fonctions

Après avoir enregistré la fonction, vous devez réagir aux appels de fonction. Ceci est réalisé par l’Eventdécrit ci-après.

OnFunctionExecution

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

L’Event est appelé, lorsque le module recherche une implémentation de fonction personnalisée. Une instance de l’codeunit ANVEDI Function Call est transmise à cet événement sous le nom de FunctionCall.

Vous devez vérifier si le FunctionCall correspond à votre fonction personnalisée et n’exécuter qu’un code, si c’est le cas. Cela se fait en appelant la fonction Is() avec les mêmes paramètres que ceux que vous avez appelés RegisterFunction dans le Event. Si Is() renvoie true, vous pouvez accéder aux paramètres, exécuter votre code personnalisé et renvoyer une valeur.

if FunctionCall.Is(ObjectNameTok, FunctionNameTok) then begin
            Name := FunctionCall.GetTextParameter(1);
            Val := FunctionCall.GetIntegerParameter(2);
            Message(Name + ': ' + Format(Val));
            FunctionCall.SetResult(TRUE);
 end;
Exemple : Réagir à un appel de fonction

L’codeunit ANVEDI Function Call assure les fonctions suivantes :

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

Renvoie si l’appel de fonction correspond à la signature de fonction spécifiée.

procedure SetResult(Value: Variant)

Vous devez appeler cette fonction pour montrer au module que vous avez traité l’appel de fonction. Vous pouvez passer un résultat de fonction, ou simplement utiliser true comme résultat.

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

Récupère un paramètre avec le nombre donné comme texte. L’indice commence par 1.

procedure GetIntegerParameter(ParNum: Integer): Integer

Récupère un paramètre avec le nombre donné comme entier. L’indice commence par 1.

procedure GetBooleanParameter(ParNum: Integer): Boolean

Récupère un paramètre avec le nombre donné comme booléen. L’indice commence par 1.

procedure GetDecimalParameter(ParNum: Integer): Decimal

Récupère un paramètre avec le nombre donné comme décimal. L’indice commence par 1.

procedure GetDateParameter(ParNum: Integer): Date

Récupère un paramètre avec le numéro donné comme date. L’indice commence par 1.

procedure GetTimeParameter(ParNum: Integer): Time

Récupère un paramètre avec le numéro donné comme date et heure. L’indice commence par 1.

procedure GetDateTimeParameter(ParNum: Integer): DateTime

Récupère un paramètre avec le nombre donné comme temps. L’indice commence par 1.

procedure GetParameter(ParNum: Integer;var EDIVariant: Codeunit "ANVEDI Variant"): Boolean

Récupère un paramètre avec le numéro donné comme EDIVariant. La fonction retourne, si le paramètre a pu être récupéré. L’indice commence par 1.

OnJob

procedure OnJob(ParameterDictionary: Codeunit "ANVEDI Data Structures";EventArgs: Codeunit "ANVEDI Event Args")

Vous pouvez utiliser l’codeunit des emplois du module pour définir des emplois personnalisés. L’codeunit permet de prendre en charge l’utilisation de plusieurs paramètres. Vous pouvez trouver plus d’informations sur la documentation relative au gestionnaire de l’emploi.

ParamaterDictionary

Un dictionnaire contenant les paramètres passés au travail.

EventArgs

Si vous avez traité un travail, vous devez mettre l’Event en mode « traité ». La description de la structure des ANVEDI Event Args se trouve à la fin de ce chapitre.

OnAcceptTransmission

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

Cette fonction est appelée pour déterminer si un fichier ou un message doit être accepté ou ignoré par le module. Le module ne mémorise pas si une transmission a été ignorée et appelle cette fonction chaque fois qu’il voit une transmission. Le fichier n’est pas encore lu, vous ne pouvez donc décider qu’en fonction des métadonnées disponibles.

ANVEDITransmission

La transmission, pour laquelle les métadonnées ont été récupérées. Veuillez noter qu’aucune donnée n’a été reçue à ce stade et que l’enregistrement n’est pas encore inséré dans la base de données.

EventArgs

Si vous avez traité l’Event, vous devez le mettre en mode « traité ». Vous devez également renvoyer une valeur, qu’il s’agisse de traiter la transmission (mettez la valeur de retour à true) ; ou non (mettez la valeur à false). La description de la structure des ANVEDI Event Args se trouve à la fin de ce chapitre.

OnBeforeList

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

Ce code est appelé avant que le module ne recherche de nouvelles données. Cela peut être utilisé pour émettre une commande ou un script externe pour recevoir les fichiers, avant que le module ne recherche de nouvelles données.

EDICommunicationChannel

Le canal de communication qui doit récupérer les données.

EventArgs

Si vous avez traité l’Event, vous devez le mettre en mode « traité ». La description de la structure des ANVEDI Event Args se trouve à la fin de ce chapitre.

OnAfterList

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

Le canal de communication qui doit récupérer les données.

EventArgs

Si vous avez traité l’Event, vous devez le mettre en mode « traité ». La description de la structure des ANVEDI Event Args se trouve à la fin de ce chapitre.

Ce code est appelé après que le module ait recherché de nouvelles données.

OnBeforeReceive

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

Cet Event est appelé avant qu’une transmission ne soit récupérée. Veuillez noter que vous ne pouvez pas interrompre le traitement à ce stade. Si vous souhaitez décider de récupérer ou non un message, veuillez utiliser le formulaire Event.

ANVEDITransmission

La transmission. Les messages ne sont pas encore reçus.

EventArgs

Si vous avez traité l’Event, vous devez le mettre en mode « traité ». La description de la structure des ANVEDI Event Args se trouve à la fin de ce chapitre.

OnAfterReceive

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

Cet Event est appelé après la réception d’une transmission.

ANVEDITransmission

La transmission après qu’elle ait été récupérée (vous pouvez accéder aux messages).

EventArgs

Si vous avez traité l’Event, vous devez le mettre en mode « traité ». La description de la structure des ANVEDI Event Args se trouve à la fin de ce chapitre.

OnBeforeArchive

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

Cet Event est appelé avant qu’une transmission ne soit archivée.

ANVEDITransmission

La transmission qui va être archivée sur le site distant.

EventArgs

Si vous avez traité l’Event, vous devez le mettre en mode « traité ». La description de la structure des ANVEDI Event Args se trouve à la fin de ce chapitre.

OnAfterArchive

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

Cet Event est appelé après l’archivage d’une transmission.

ANVEDITransmission

La transmission qui a été archivée sur le site distant.

EventArgs

Si vous avez traité l’Event, vous devez le mettre en mode « traité ». La description de la structure des ANVEDI Event Args se trouve à la fin de ce chapitre.

OnBeforeDelete

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

Cet Event est appelé avant qu’une transmission ne soit supprimée.

ANVEDITransmission

La transmission qui va être supprimée sur le site distant.

EventArgs

Si vous avez traité l’Event, vous devez le mettre en mode « traité ». La description de la structure des ANVEDI Event Args se trouve à la fin de ce chapitre.

OnAfterDelete

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

Cet Event est appelé après la suppression d’une transmission.

ANVEDITransmission

La transmission qui a été supprimée de l’emplacement distant.

EventArgs

Si vous avez traité l’Event, vous devez le mettre en mode « traité ». La description de la structure des ANVEDI Event Args se trouve à la fin de ce chapitre.

OnBeforeSend

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

Cet Event est appelé avant l’envoi d’une transmission.

ANVEDITransmission

La transmission qui va être envoyée.

EventArgs

Si vous avez traité l’Event, vous devez le mettre en mode « traité ». La description de la structure des ANVEDI Event Args se trouve à la fin de ce chapitre.

OnComposeMessage

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

Cet Event est appelé lorsqu’une transmission est composée.

ANVEDITransmission

La transmission qui est composée.

EventArgs

Si vous avez traité l’Event, vous devez le mettre en mode « traité ». La description de la structure des ANVEDI Event Args se trouve à la fin de ce chapitre.

OnAfterSend

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

Cet Event est appelé après l’envoi d’une transmission.

ANVEDITransmission

La transmission qui a été envoyée.

EventArgs

Si vous avez traité l’Event, vous devez le mettre en mode « traité ». La description de la structure des ANVEDI Event Args se trouve à la fin de ce chapitre.

OnReplacePlaceholder

procedure OnReplacePlaceholder(Placeholder: Text[50];var ANVEDILinkedDocument: Record "ANVEDI Linked Document";EventArgs: Codeunit "ANVEDI Event Args")

Cette fonction est appelée lorsque l’on évalue une chaîne de caractères pouvant contenir des variables définies par l’utilisateur, comme un nom de fichier.

Placeholder

Le nom du titulaire. Le module est actuellement à la recherche d’une valeur pour remplacer ce paramètre spécifique. Si vous souhaitez fournir une valeur, vous devez spécifier le résultat et définir l’événement à traiter dans les EventArgs.

ANVEDILinkedDocument

Un enregistrement pré-filtré des documents liés. Vous pouvez, par exemple, utiliser ce tableau pour obtenir les documents tampons qui sont contenus dans le fichier.

EventArgs

Si vous avez traité l’Event, vous devez le mettre en mode « traité ». Vous devez également fournir une valeur. La description de la structure des ANVEDI Event Args se trouve à la fin de ce chapitre.

L’exemple suivant montre comment vous pouvez renvoyer des données à partir du document lié :

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

OnError

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

Cet Event est appelé lorsqu’une erreur se produit dans la file d’attente de traitement.

EventArgs

Si vous avez traité l’Event, vous devez le mettre en mode « traité ». La description de la structure des ANVEDI Event Args se trouve à la fin de ce chapitre.

OnAfterProcess

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

Cet Event est appelé après le traitement d’une entrée dans la table EDI Processing Queue. Vous devez vérifier le statut de l’entrée passée et réagir en conséquence.

EventArgs

Si vous avez traité l’Event, vous devez le mettre en mode « traité ». La description de la structure des ANVEDI Event Args se trouve à la fin de ce chapitre.

ANVEDI Event Args

Certains des Events utilisent une structure appelée ANVEDI Event Args. Cette structure vous permet de renvoyer des valeurs et de dire au module si vous avez géré l’événement.

Les fonctions suivantes sont disponibles sur les ANVEDI Event Args passés à l’Event:

SetHandled(Value: Boolean)
Value

Si l’Event a été géré par votre code.

SetResult(Value: Variant)
Value

La valeur de retour, si l’Event attend une valeur de retour.

Exemple

L’exemple suivant montre comment vous pouvez ajouter votre propre fonction personnalisée « MYOBJECT.MYFUNC », qui affiche un message contenant le nom fourni suivi de ‘ : ‘ et la valeur. Vous pouvez ajouter autant de fonctions à partir d’autant d’extensions que vous le souhaitez.

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;
}
Exemple complet : Fonction personnalisée

Dépendances

Si vous souhaitez réagir à l’Event via AL, vous devez ajouter une dépendance au module Anveo EDI Connect.

Les valeurs de l’extension sur site sont les suivantes

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

Veillez à remplacer x, y, z par le numéro de version correct.

Les valeurs pour l’extension en ligne du Business Central sont les suivantes

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

Veillez à remplacer x, y, z par le numéro de version correct.