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

ANVEDI Integration

L’codeunit ANVEDI Integration contient tous les appels API publics au module EDI, que vous pourriez vouloir 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 aborderons d’abord les concepts de base, que vous devez comprendre pour pouvoir lire les exemples de code.

Transactions des utilisateurs

Anvaigo EDI Connect dispose d’un concept appelé « transactions utilisateur », qui peut couvrir plusieurs transactions de base de données et collecter plusieurs erreurs. La plupart des actions d’Anvaigo EDI Connect nécessitent une transaction utilisateur ouverte pour être exécutées. Vous pouvez lancer une transaction 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émarrage d’une transaction utilisateur

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

BEGIN_USER_TRANSACTION

Démarre 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 apportées à la base de données avant d’exécuter la logique EDI. Vous pouvez également envisager de marquer les données et d’utiliser une tâche d’arrière-plan pour exécuter la logique EDI.

Le texte donné est affiché à l’utilisateur si une boîte de dialogue d’attente est ouverte, car 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 toutes les boîtes de dialogue EDI.

SHOWDIALOGS(ShowDialogs : Boolean)

Ce paramètre indique si les boîtes de dialogue sont affichées ou non. L’appel à cette fonction doit se faire à l’intérieur d’une transaction utilisateur. Normalement, cette fonction est appelée directement après BEGIN_USER_TRANSACTION.

ISPROCESSING

Cette fonction indique si vous vous trouvez 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 boîtes de dialogue de saisie uniquement lorsque vous ne traitez pas d’EDI.

END_USER_TRANSACTION

Cette fonction met fin à la transaction d’un utilisateur.

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

Si des erreurs se sont produites au cours de la transaction, elles sont affichées dans une boîte de dialogue à l’intention de l’utilisateur final. Ce paramètre n’a aucun effet si GUIALLOWED est égal à False.

BreakOnError

Indique si le module doit déclencher une erreur, interrompant ainsi le déroulement du processus en cours. Tout le code après cette ligne n’est pas exécuté s’il y a eu une erreur pendant la transaction. Si ce paramètre a la valeur True, un message d’erreur indiquant qu’une ou plusieurs erreurs se sont produites, le cas échéant, s’affichera. Dans ce cas, l’utilisateur ne peut pas voir la liste complète des erreurs.

Success

Une valeur de retour, indiquant s’il y a eu une erreur ou non. Retourne True en cas de succès, 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 des transactions commerciales

RUN_BUSINESSTRANSACTION_JOB

Exécute le travail de collecte de données d’un type de transaction spécifié. Elle doit être appelée à l’intérieur d’une transaction 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’une tâche de collecte de données sur les transactions commerciales

START_BT_WITH_REC

Commence 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 portant le nom spécifié. Elle doit être appelée à l’intérieur d’une transaction utilisateur.

RUN_BT_BATCH_JOB(BatchCode : Code[20])

Si vous voulez la combiner avec RUN_BUSINESSTRANSACTION_JOB, vous devez encapsuler les deux fonctions dans des blocs BEGIN..END_USER_TRANSACTION séparés et ajouter ce qui suit entre les deux :

COMMIT;
SELECTLATESTVERSION();

Actions

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

Exécuter un EDI Mapping

Pour exécuter un EDI Mapping, nous devons lancer une transaction utilisateur. Ensuite, nous pourrions vouloir transmettre des données au mapping. Nous pouvons ensuite exécuter le mapping et vérifier le résultat à la fin de 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 : Exécuter un mapping pour exporter une facture

RESET_TABLEVIEWS

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

RESET_TABLEVIEWS()

SET_TABLEVIEW

Enregistre une vue de table sous un nom spécifié. Doit être appelé à l’intérieur d’une transaction 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 le EDI Mapping pour récupérer le filtre.

FilterText

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

GET_TABLEVIEW

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

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

RUN

Exécuter un ou plusieurs mappings EDI. Doit être appelé à l’intérieur d’une transaction 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 filtre correspondant au code du projet.

FormatFilter

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

CodeFilter

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

MultipleAllowed

Indique si plusieurs mappages doivent être exécutés lorsqu’un filtre est spécifié. Il s’agit d’un dispositif de sécurité qui vous empêche d’exécuter plus d’un mapping.

ProcessFollowing

Si le post-traitement doit être exécuté. En règle générale, il est préférable d’utiliser la valeur True.

ProcessingQueueView

Un filtre sur les post-traitements. On peut normalement vouloir passer une chaîne vide.

Autres actions

RECEIVE_ALL

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

Il reçoit tous les canaux de communication. Cette fonction doit être appelée à 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 à 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 dans le champ du code.

ProcessFollowing

Si le post-traitement doit être exécuté. En règle générale, il est préférable d’utiliser la valeur True.

ProcessQueueView

Un filtre sur les post-traitements. On peut normalement vouloir passer une chaîne vide.

RECEIVE_COMMUNICATIONCHANNEL

Reçoit des données du canal de communication spécifié. Cette fonction doit être appelée à 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 filtre sur le champ du code.

ProcessFollowing

Si le post-traitement doit être exécuté. En règle générale, il est préférable d’utiliser la valeur True.

ProcessQueueView

Un filtre sur les post-traitements. On peut normalement vouloir passer une chaîne vide.

SEND_ALL

Fonction obsolète. 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 à l’intérieur d’une transaction utilisateur.

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

Si le post-traitement doit être exécuté. En règle générale, il est préférable d’utiliser la valeur True.

ProcessQueueView

Un filtre sur les post-traitements. On peut normalement vouloir passer une chaîne vide.

SEND_FOLDER

Envoie les transmissions en cours du dossier de transmission spécifié. Cette fonction doit être appelée à 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 du code.

ProcessFollowing

Si le post-traitement doit être exécuté. En règle générale, il est préférable d’utiliser la valeur True.

ProcessQueueView

Un filtre sur les post-traitements. On peut normalement vouloir passer une chaîne vide.

SEND_COMMUNICATIONCHANNEL

Envoie des transmissions ouvertes du canal de communication spécifié. Cette fonction doit être appelée à 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 code.

ProcessFollowing

Si le post-traitement doit être exécuté. En règle générale, il est préférable d’utiliser la valeur True.

ProcessQueueView

Un filtre sur les post-traitements. On peut normalement vouloir passer une chaîne vide.

PROCESS

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

Si le post-traitement doit être exécuté. En règle générale, il est préférable d’utiliser la valeur True.

ProcessQueueView

Un filtre sur les post-traitements. On peut normalement vouloir passer une chaîne vide.

UserTransactionFilter

Indique si seuls les post-traitements de la transaction de l’utilisateur actuel doivent être traités.

Définition du destinataire / de l’expéditeur

SET_COMMUNICATION_CHANNEL

Définit le canal de communication pour l’appel mapping suivant à l’intérieur de la transaction 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 à l’intérieur de la transaction utilisateur.

SET_RECEIVER_PARTNER(ReceiverPartner : Code[20])
ReceiverPartner

Le code partenaire du récepteur.

SET_RECEIVER_IDENTIFICATION

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

SET_RECEIVER_IDENTIFICATION(Identification : Text[64])
Identification

L’identification du récepteur. Il s’agit d’un texte libre, qui peut avoir une signification particulière sur des canaux de communication spécifiques.

SET_SENDER_PARTNER

Définit le partenaire émetteur pour l’appel mapping suivant à l’intérieur de la transaction utilisateur.

SET_SENDER_PARTNER(PartnerCode : Code[20])
PartnerCode

Le code partenaire de l’expéditeur.

SET_SENDER_IDENTIFICATION

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

SET_SENDER_IDENTIFICATION(Identification : Text[64])
Identification

L’identification du récepteur. Il s’agit d’un texte libre, qui peut avoir une signification particulière sur des canaux de communication spécifiques.

Journalisation et gestion des erreurs

Les fonctions suivantes ne peuvent être appelées que lorsqu’un mapping est en cours d’exécution. Ces fonctions sont destinées à être utilisées pour des traitements 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

Consigne un avertissement.

LogWarning(WarningMessage : Text[1024])
WarningMessage

Le texte de l’avertissement.

LogInformation

Enregistre les informations.

LogInformation(InformationMessage : Text[1024])
InformationMessage

Les informations à enregistrer.

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 concernant 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 à enregistrer.

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 de document EDI à laquelle l’erreur appartient.

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 enregistré.

EDIDocumentLine

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

LogDocumentLineInformation

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

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

Les informations à enregistrer.

EDIDocumentLine

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

LogErrorWithCode

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

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

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 enregistré.

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 enregistré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

Interrompre le flux de contrôle ou poursuivre l’exécution.

ErrorMessage

Le message d’erreur à enregistrer.

RecID

L’identifiant de l’enregistrement auquel appartient l’erreur.

Code

Un code d’erreur pour identifier l’erreur.

IsUserAcceptable

Si l’erreur peut être acceptée par l’utilisateur final. Il faut pour cela que le code d’erreur ne soit pas vide.

LogRecIDWarningWithCode

Enregistre un avertissement qui devrait appartenir à un enregistrement.

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

L’avertissement qui doit être enregistré.

RecID

L’identifiant de l’enregistrement auquel l’avertissement doit appartenir.

Code

Un code pour identifier l’entrée du journal.

LogRecIDInformationWithCode

Enregistre une information qui devrait appartenir à un enregistrement.

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

Les informations qui doivent être enregistrées.

RecID

L’identifiant de l’enregistrement auquel l’information doit appartenir.

Code

Un code pour identifier l’entrée du journal.