C'est une traduction automatique. Le message original est disponible en Anglais.

ANVEDI Integration

L’codeunit d’ANVEDI Integration contient tous les appels API publics au module EDI, que vous pouvez appeler à partir de votre code personnalisé. Toutes les fonctions de cette codeunit sont censées être utilisées si vous souhaitez lancer directement une action EDI par code.

Concepts généraux

Dans cette section, nous allons d’abord aborder les concepts fondamentaux, que vous devez comprendre pour pouvoir lire les exemples de codes.

Transactions des utilisateurs

Anveo EDI Connect a un concept appelé « transactions utilisateur », qui peut couvrir plusieurs transactions de base de données et collecter plusieurs erreurs. La plupart des actions dans Anveo EDI Connect nécessiteront une transaction ouverte de l’utilisateur pour les exécuter. Vous pouvez lancer une transaction d’utilisateur en appelant :

// Start a new user transaction with the description given by TextDescription
ANVEDIIntegration.BEGIN_USER_TRANSACTION(TextDescription);

// Your EDI code

// End the user transaction and show an error list, if there were any
ANVEDIIntegration.END_USER_TRANSACTION(TRUE, FALSE);
Exemple : Démarrer une transaction d’utilisateur

L’appel à END_USER_TRANSACTION vous permet soit d’afficher les erreurs, soit de casser la transaction de base de données en cours, soit d’obtenir une valeur de retour, s’il y a eu une erreur. Nous en discuterons en détail plus tard.

BEGIN_USER_TRANSACTION

Lance une nouvelle transaction d’utilisateur. Veuillez noter que vous n’intégrez les appels dans le module EDI qu’aux points où un COMMIT peut avoir lieu. Dans de nombreux cas, le module validera toutes les modifications de la base de données avant d’exécuter la logique de l’EDI. Envisagez également de marquer les données et d’utiliser un travail en arrière-plan pour exécuter la logique de l’EDI.

Le texte donné est montré à l’utilisateur, si un dialogue d’attente est ouvert, parce que le processus prend du temps.

BEGIN_USER_TRANSACTION(Text : Text[1024])

Vous devez toujours terminer un appel à BEGIN_USER_TRANSACTION par un appel à END_USER_TRANSACTION.

SHOWDIALOGS

Cette fonction peut être utilisée pour masquer tout dialogue EDI.

SHOWDIALOGS(ShowDialogs : Boolean)

Le paramètre spécifie si les dialogues sont affichés ou non. Un appel à cette fonction doit se faire à l’intérieur d’une transaction d’utilisateur. Normalement, vous appelez cette fonction directement après BEGIN_USER_TRANSACTION.

ISPROCESSING

Cette fonction permet de savoir si vous êtes dans une exécution mapping. Vous pouvez vérifier cette valeur lors de la validation des déclencheurs, par exemple, pour obtenir un comportement différent lors du traitement des processus EDI. Vous pouvez également utiliser cette valeur pour afficher les dialogues de saisie uniquement lorsque vous ne traitez pas l’EDI.

END_USER_TRANSACTION

Cette fonction mettra fin à une transaction de l’utilisateur.

END_USER_TRANSACTION(ShowErrorList : Boolean; BreakOnError : Boolean) Success : Boolean
ShowErrorList

S’il y a eu des erreurs lors de la transaction, indiquez-les dans un dialogue à l’utilisateur final. Ce paramètre n’a aucun effet, si GUIALLOWED est False.

BreakOnError

Si le module doit lancer une erreur, interrompant le déroulement du processus en cours. Tout code après cette ligne n’est pas exécuté, s’il y a eu une erreur lors de la transaction. Si vous réglez ce paramètre sur True, un message d’erreur indiquera qu’une ou plusieurs erreurs se sont produites, le cas échéant. Dans ce cas, l’utilisateur ne peut pas voir la liste complète des erreurs.

Success

Une valeur de retour, qu’il y ait eu une erreur ou non. Rendements True sur la réussite, c’est-à-dire il n’y a pas eu d’erreurs ; False sinon.

La valeur de retour était nommée différemment dans les anciennes versions du module, mais avait la même fonction. L’ancien nom de la valeur de retour était incorrect, la fonction renvoyait toujours True en cas de succès.

Travailler avec les transactions commerciales

RUN_BUSINESSTRANSACTION_JOB

Exécute le travail de collecte de données d’un type de transaction commerciale spécifié. Il doit être appelé de l’intérieur d’une transaction d’utilisateur.

RUN_BUSINESSTRANSACTION_JOB(BusinessTransactionTypeCode : Code[20])
BusinessTransactionTypeCode

Code du type de transaction commerciale.

// Start a new user transaction with the description given by TextDescription
ANVEDIIntegration.BEGIN_USER_TRANSACTION(TextDescription);

// Collects the data of the Business Transaction Type "INVOICE_OUT" and processes the mappings
ANVEDIIntegration.RUN_BUSINESSTRANSACTION_JOB('INVOICE_OUT');

// End the user transaction and show an error list, if there were any
ANVEDIIntegration.END_USER_TRANSACTION(TRUE, FALSE);
Exemple : Exécution d’un travail de collecte de données sur les transactions commerciales

START_BT_WITH_REC

Lance une nouvelle transaction commerciale pour le code et l’identifiant d’enregistrement donnés.

START_BT_WITH_REC(BusinessTransactionTypeCode : Code[20];RecID : RecordID)

RUN_BT_BATCH_JOB

Exécute le travail de collecte par lots avec le nom spécifié. Il doit être appelé de l’intérieur d’une transaction d’utilisateur.

RUN_BT_BATCH_JOB(BatchCode : Code[20])

Actions

Parfois, vous voulez créer un bouton sur une page pour lancer un processus EDI, ou vous voulez l’intégrer, par exemple, dans le processus de libération. Dans ce cas, vous pouvez exécuter presque toutes les actions du module à partir du code. Veuillez garder à l’esprit que les processus EDI doivent généralement être automatisés et se dérouler en arrière-plan. Ainsi, avant d’ajouter des actions dans le code, envisagez la possibilité d’un travail en arrière-plan comme alternative.

Effectuer une Mapping EDI

Pour exécuter une Mapping EDI, nous devons lancer une transaction utilisateur. Ensuite, nous pourrions vouloir transmettre des données à la mapping. Nous pouvons alors lancer la mapping et vérifier le résultat lorsque nous mettons fin à la transaction de l’utilisateur. Vous trouverez la description détaillée des commandes après l’exemple de code.

// Start a new user transaction with the description given by TextDescription
ANVEDIIntegration.BEGIN_USER_TRANSACTION(TextDescription);

// Reset any existing table views
ANVEDIIntegration.RESET_TABLEVIEWS();

// Copy sales invoice header from Rec to a local variable
SalesInvoiceHeader := Rec;
// Filter the local variable to the current record
SalesInvoiceHeader.SETRECFILTER;
// Store the filter to the record under the name INVOICE
ANVEDIIntegration.SET_TABLEVIEW('INVOICE', SalesInvoiceHeader.GETVIEW(FALSE));

// Run the mapping EXAMPLE, NAV, INVOICE. You can access the invoice header, by adding the table and setting the filter to a named table view and enter INVOICE as the name. In general, you can pass as many filters as you need to the mapping.
ANVEDIIntegration.RUN('EXAMPLE', 'NAV', 'INVOICE', FALSE, TRUE, '');

// End the user transaction and show an error list, if there were any
ANVEDIIntegration.END_USER_TRANSACTION(TRUE, FALSE);
Exemple de code : Effectuer une mapping pour exporter une facture

RESET_TABLEVIEWS

Réinitialise toutes les vues de table stockées existantes. Doit être appelé de l’intérieur d’une transaction d’utilisateur.

RESET_TABLEVIEWS()

SET_TABLEVIEW

Stocke une vue de table sous un nom spécifique. Doit être appelé de l’intérieur d’une transaction d’utilisateur.

SET_TABLEVIEW(FilterName : Code[30];FilterText : Text[1024])
FilterName

Un code représentant le nom du filtre. Vous devrez spécifier exactement le même nom dans la EDI Mapping pour récupérer le filtre.

FilterText

Le texte du filtre sous la forme d’un tableau Anveo EDI Connect. Vous devez utiliser la fonction intégrée Microsoft Dynamics 365 Business Central GETVIEW, si possible, pour obtenir la chaîne correctement formatée.

GET_TABLEVIEW

Récupère un filtre stocké. Doit être appelé de l’intérieur d’une transaction d’utilisateur.

GET_TABLEVIEW(FilterName : Code[30]) : Text[1024]

RUN

Effectuer une ou plusieurs cartographies EDI. Doit être appelé de l’intérieur d’une transaction d’utilisateur.

RUN(ProjectFilter : Text[250];FormatFilter : Text[250];CodeFilter : Text[250];MultipleAllowed : Boolean;ProcessFollowing : Boolean;ProcessingQueueView : Text[250])
ProjectFilter

Le code du projet ou une chaîne de filtrage correspondant au code du projet.

FormatFilter

Le code du format mapping ou une chaîne de filtrage correspondant au code du format.

CodeFilter

Le code du mapping ou un filtre correspondant aux codes mapping souhaités.

MultipleAllowed

Si plusieurs mappages doivent être exécutés au cas où un filtre est spécifié. Il s’agit d’un dispositif de sécurité qui vous empêche d’effectuer plus d’une mapping.

ProcessFollowing

Si le post-traitement doit être exécuté. Normalement, vous voulez mettre cette option sur « True« .

ProcessingQueueView

Un filtre sur les post-traitements. Vous pouvez normalement vouloir passer dans une chaîne vide.

Autres actions

RECEIVE_ALL

Fonction déqualifiée. Vous devez éviter d’appeler la fonction générale et appeler l’une des fonctions plus spécifiques ci-dessous.

Reçoit tous les canaux de communication. Cette fonction doit être appelée de l’intérieur d’une transaction utilisateur.

RECEIVE_ALL(ProcessFollowing : Boolean;ProcessingQueueView : Text[250])

RECEIVE_FOLDER

Reçoit les données du ou des dossiers de transmission spécifiés. Cette fonction doit être appelée de l’intérieur d’une transaction utilisateur.

RECEIVE_FOLDER(TransmissionFolderCodeFilter : Text[250];ProcessFollowing : Boolean;ProcessingQueueView : Text[250])
TransmissionFolderCodeFilter

Le code du filtre de transmission ou une chaîne de filtrage sur le champ de code.

ProcessFollowing

Si le post-traitement doit être exécuté. Normalement, vous voulez mettre cette option sur « True« .

ProcessQueueView

Un filtre sur les post-traitements. Vous pouvez normalement vouloir passer dans une chaîne vide.

RECEIVE_COMMUNICATIONCHANNEL

Reçoit les données du canal de communication spécifié. Cette fonction doit être appelée de l’intérieur d’une transaction utilisateur.

RECEIVE_COMMUNICATIONCHANNEL(CommunicationChannelCodeFilter : Text[250];ProcessFollowing : Boolean;ProcessingQueueView : Text[250])
CommunicationChannelCodeFilter

Le code du canal de communication ou une chaîne de filtrage sur le champ de code.

ProcessFollowing

Si le post-traitement doit être exécuté. Normalement, vous voulez mettre cette option sur « True« .

ProcessQueueView

Un filtre sur les post-traitements. Vous pouvez normalement vouloir passer dans une chaîne vide.

SEND_ALL

Fonction déqualifiée. Vous devez éviter d’appeler la fonction générale et appeler l’une des fonctions plus spécifiques ci-dessous.

Envoie tous les canaux de communication. Cette fonction doit être appelée de l’intérieur d’une transaction utilisateur.

SEND_ALL(ProcessFollowing : Boolean;ProcessingQueueView : Text[250])
ProcessFollowing

Si le post-traitement doit être exécuté. Normalement, vous voulez mettre cette option sur « True« .

ProcessQueueView

Un filtre sur les post-traitements. Vous pouvez normalement vouloir passer dans une chaîne vide.

SEND_FOLDER

Envoie des transmissions ouvertes du dossier de transmission spécifié. Cette fonction doit être appelée de l’intérieur d’une transaction utilisateur.

SEND_FOLDER(TransmissionFolderCodeFilter : Text[250];ProcessFollowing : Boolean;ProcessingQueueView : Text[250])
TransmissionFolderCodeFilter

Le code du dossier de transmission ou une chaîne de filtrage sur le champ de code.

ProcessFollowing

Si le post-traitement doit être exécuté. Normalement, vous voulez mettre cette option sur « True« .

ProcessQueueView

Un filtre sur les post-traitements. Vous pouvez normalement vouloir passer dans une chaîne vide.

SEND_COMMUNICATIONCHANNEL

Envoie des transmissions ouvertes du canal de communication spécifié. Cette fonction doit être appelée de l’intérieur d’une transaction utilisateur.

SEND_COMMUNICATIONCHANNEL(CommunicationChannelCodeFilter : Text[250];ProcessFollowing : Boolean;ProcessingQueueView : Text[250])
CommunicationChannelCodeFilter

Le code du canal de communication ou une chaîne de filtrage sur le champ de code.

ProcessFollowing

Si le post-traitement doit être exécuté. Normalement, vous voulez mettre cette option sur « True« .

ProcessQueueView

Un filtre sur les post-traitements. Vous pouvez normalement vouloir passer dans une chaîne vide.

PROCESS

PROCESS(ProcessFollowing : Boolean;ProcessingQueueView : Text[250];UserTransactionFilter : Boolean)
ProcessFollowing

Si le post-traitement doit être exécuté. Normalement, vous voulez mettre cette option sur « True« .

ProcessQueueView

Un filtre sur les post-traitements. Vous pouvez normalement vouloir passer dans une chaîne vide.

UserTransactionFilter

Si seuls les post-traitements de la transaction actuelle de l’utilisateur doivent être traités.

Détermination du destinataire/expéditeur

SET_COMMUNICATION_CHANNEL

Définit le canal de communication pour l’appel mapping suivant dans la transaction de l’utilisateur.

SET_COMMUNICATION_CHANNEL(ChannelCode : Code[20])
ChannelCode

Le code du canal de communication.

SET_RECEIVER_PARTNER

Définit le partenaire récepteur pour l’appel mapping suivant dans la transaction de l’utilisateur.

SET_RECEIVER_PARTNER(ReceiverPartner : Code[20])
ReceiverPartner

Le code du partenaire récepteur.

SET_RECEIVER_IDENTIFICATION

Définit l’identification du récepteur pour l’appel mapping suivant dans la transaction de l’utilisateur.

SET_RECEIVER_IDENTIFICATION(Identification : Text[64])
Identification

L’identification du destinataire. Il s’agit d’un texte libre, qui peut avoir une signification particulière sur certains canaux de communication.

SET_SENDER_PARTNER

Définit le partenaire expéditeur pour l’appel mapping suivant dans la transaction de l’utilisateur.

SET_SENDER_PARTNER(PartnerCode : Code[20])
PartnerCode

Le code du partenaire expéditeur.

SET_SENDER_IDENTIFICATION

Définit l’identification de l’expéditeur pour l’appel mapping suivant dans la transaction de l’utilisateur.

SET_SENDER_IDENTIFICATION(Identification : Text[64])
Identification

L’identification du destinataire. Il s’agit d’un texte libre, qui peut avoir une signification particulière sur certains canaux de communication.

Enregistrement et traitement des erreurs

Les fonctions suivantes ne peuvent être appelées que lorsqu’un mapping est en cours. Ces fonctions sont destinées à être utilisées par les gestionnaires d’erreurs personnalisés à partir du code.

LogError

Enregistre un message d’erreur.

LogError(ErrorMessage : Text[1024])
ErrorMessage

Le message d’erreur. L’exécution se poursuivra après cet appel. Pour interrompre le flux de contrôle, utilisez la fonction native ERROR.

LogWarning

Enregistre un avertissement.

LogWarning(WarningMessage : Text[1024])
WarningMessage

Le texte de l’avertissement.

LogInformation

Informations sur les journaux.

LogInformation(InformationMessage : Text[1024])
InformationMessage

Les informations à consigner.

LogDocumentError

Enregistre une erreur appartenant à un document EDI. Il existe une fonction plus universelle appelée LogRecIDErrorWithCode.

LogDocumentError(ErrorMessage : Text[1024];EDIDocument : Record "EDI Document")
ErrorMessage

Le message d’erreur.

EDIDocument

Le document EDI auquel l’erreur appartient.

LogDocumentWarning

Enregistre un avertissement appartenant à un document EDI. Il existe une fonction plus universelle appelée LogRecIDWarningWithCode.

LogDocumentWarning(WarningMessage : Text[1024];EDIDocument : Record "EDI Document")
WarningMessage

L’avertissement à consigner.

EDIDocument

Le document EDI auquel l’erreur appartient.

LogDocumentInformation

Enregistre une information appartenant à un document EDI. Il existe une fonction plus universelle appelée LogRecIDInformationWithCode.

LogDocumentInformation(InformationMessage : Text[1024];EDIDocument : Record "EDI Document")
InformationMessage

Les informations à consigner.

EDIDocument

Le document EDI auquel l’erreur appartient.

LogDocumentLineError

Enregistre une erreur appartenant à une ligne de document EDI. Il existe une fonction plus générale appelée LogRecIDErrorWithCode.

LogDocumentLineError(ErrorMessage : Text[1024];EDIDocumentLine : Record "EDI Document Line")
ErrorMessage

Le message d’erreur à enregistrer.

EDIDocumentLine

La ligne du document EDI à laquelle appartient l’erreur.

LogDocumentLineWarning

Enregistre un avertissement appartenant à une ligne de document EDI. Il existe une fonction plus générale appelée LogRecIDWarningWithCode.

LogDocumentLineWarning(WarningMessage : Text[1024];EDIDocumentLine : Record "EDI Document Line")
WarningMessage

L’avertissement qui doit être consigné.

EDIDocumentLine

La ligne du document EDI à laquelle appartient l’erreur.

LogDocumentLineInformation

Enregistre une information appartenant à une ligne de documents EDI. Il existe une fonction plus générale appelée LogRecIDInformationWithCode.

LogDocumentLineInformation(InformationMessage : Text[1024];EDIDocumentLine : Record "EDI Document Line")
InformationMessage

Les informations à consigner.

EDIDocumentLine

La ligne du document EDI à laquelle appartient l’erreur.

LogErrorWithCode

Enregistre une erreur avec un code d’erreur supplémentaire.

LogErrorWithCode(ContinueExecution : Boolean;ErrorMessage : Text[1024];Code : Code[20])
ContinueExecution

S’il faut interrompre le flux de contrôle ou poursuivre l’exécution

ErrorMessage

Le message d’erreur à enregistrer.

Code

Un code pour identifier l’erreur.

LogWarningWithCode

Enregistre un avertissement avec un code d’erreur supplémentaire.

LogWarningWithCode(WarningMessage : Text[1024];Code : Code[20])
WarningMessage

L’avertissement qui doit être consigné.

Code

Un code pour identifier l’erreur.

LogInformationWithCode

Enregistre une information avec un code d’erreur supplémentaire.

LogInformationWithCode(InformationMessage : Text[1024];Code : Code[20])
InformationMessage

Les informations qui doivent être consignées.

Code

Un code pour identifier l’erreur.

LogRecIDErrorWithCode

Enregistre un message d’erreur qui devrait appartenir à un enregistrement spécifique.

LogRecIDErrorWithCode(ContinueExecution : Boolean;ErrorMessage : Text[1024];RecID : RecordID;Code : Code[20];IsUserAcceptable : Boolean)
ContinueExecution

Qu’il s’agisse de rompre le flux de contrôle ou de poursuivre l’exécution.

ErrorMessage

Le message d’erreur à enregistrer.

RecID

L’ID d’enregistrement auquel l’erreur appartient.

Code

Un code d’erreur pour identifier l’erreur.

IsUserAcceptable

Si l’erreur peut être acceptée par l’utilisateur final. Pour cela, il faut un code d’erreur non vide.

LogRecIDWarningWithCode

Enregistre un avertissement qui devrait faire partie d’un dossier.

LogRecIDWarningWithCode(WarningMessage : Text[1024];RecID : RecordID;Code : Code[20])
WarningMessage

L’avertissement qui doit être consigné.

RecID

L’enregistrement indique à qui l’avertissement doit appartenir.

Code

Un code permettant d’identifier l’entrée du journal.

LogRecIDInformationWithCode

Enregistre une information qui devrait faire partie d’un dossier.

LogRecIDInformationWithCode(InformationMessage : Text[1024];RecID : RecordID;Code : Code[20])
InformationMessage

Les informations qui doivent être consignées.

RecID

L’enregistrement identifie l’information à laquelle elle doit appartenir.

Code

Un code permettant d’identifier l’entrée du journal.