Questa è una traduzione automatica. Il messaggio originale è disponibile in Inglese.

ANVEDI Integration

L’codeunit ANVEDI Integration contiene tutte le chiamate API pubbliche al modulo EDI, che potreste voler chiamare dal vostro codice personalizzato. Tutte le funzioni di questa codeunit devono essere utilizzate se si desidera avviare direttamente un’azione EDI tramite codice.

Concetti generali

In questa sezione discuteremo innanzitutto i concetti fondamentali, che è bene comprendere per poter leggere gli esempi di codice.

Transazioni degli utenti

Anvaigo EDI Connect ha un concetto chiamato “transazioni utente”, che può abbracciare più transazioni del database e raccogliere più errori. La maggior parte delle azioni di Anvaigo EDI Connect richiede una transazione utente aperta per essere eseguita. È possibile avviare una transazione utente chiamando:

// 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);
Esempio: Avvio di una transazione utente

La chiamata a END_USER_TRANSACTION consente di mostrare gli errori, di interrompere la transazione corrente del database o di ottenere un valore di ritorno, se c’è stato un errore. Ne parleremo in dettaglio più avanti.

BEGIN_USER_TRANSACTION

Avvia una nuova transazione utente. Si noti che è possibile integrare le chiamate nel modulo EDI solo nei punti in cui può avvenire un COMMIT. In molti casi, il modulo esegue il commit di tutte le modifiche al database prima di eseguire la logica EDI. Considerate anche la possibilità di contrassegnare i dati e di utilizzare un lavoro in background per eseguire la logica EDI.

Il testo dato viene mostrato all’utente, se viene aperta una finestra di dialogo di attesa, perché il processo richiede tempo.

BEGIN_USER_TRANSACTION(Text : Text[1024])

Una chiamata a BEGIN_USER_TRANSACTION deve sempre terminare con una chiamata a END_USER_TRANSACTION.

SHOWDIALOGS

Questa funzione può essere utilizzata per nascondere le finestre di dialogo EDI.

SHOWDIALOGS(ShowDialogs : Boolean)

Il parametro specifica se le finestre di dialogo vengono mostrate o meno. La chiamata a questa funzione deve avvenire all’interno di una transazione utente. Di solito si chiama questa funzione direttamente dopo BEGIN_USER_TRANSACTION.

ISPROCESSING

Questa funzione restituisce se ci si trova all’interno di un’esecuzione di mapping. È possibile controllare questo valore durante la convalida dei trigger, ad esempio per ottenere un comportamento diverso durante l’elaborazione dei processi EDI. Questo valore può essere utilizzato anche per visualizzare le finestre di dialogo di input solo quando non si sta elaborando EDI.

END_USER_TRANSACTION

Questa funzione termina una transazione utente.

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

Se ci sono stati errori durante la transazione, mostrarli all’utente finale in una finestra di dialogo. Questo parametro non ha alcun effetto se GUIALLOWED è False.

BreakOnError

Se il modulo deve lanciare un errore, interrompendo il flusso del processo in corso. Tutto il codice dopo questa riga non viene eseguito, se si è verificato un errore durante la transazione. Impostando questo parametro su True, viene visualizzato un messaggio di errore che segnala la presenza di uno o più errori. In questo caso l’utente non può vedere l’elenco completo degli errori.

Success

Un valore di ritorno, se c’è stato un errore o meno. Restituisce True in caso di successo, ovvero non ci sono stati errori; altrimenti False.

Il valore di ritorno aveva un nome diverso nelle versioni precedenti del modulo, ma aveva la stessa funzione. Il vecchio nome del valore di ritorno non era corretto, la funzione restituiva sempre True in caso di successo.

Lavorare con le transazioni commerciali

RUN_BUSINESSTRANSACTION_JOB

Esegue il lavoro di raccolta dati di un tipo di transazione aziendale specificato. Questo deve essere chiamato dall’interno di una transazione utente.

RUN_BUSINESSTRANSACTION_JOB(BusinessTransactionTypeCode : Code[20])
BusinessTransactionTypeCode

Codice del tipo di transazione 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);
Esempio: Eseguire il lavoro di raccolta dati sulle transazioni commerciali

START_BT_WITH_REC

Avvia una nuova transazione commerciale per il codice e l’id del record indicati.

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

RUN_BT_BATCH_JOB

Esegue il lavoro di raccolta batch con il nome specificato. Deve essere richiamato dall’interno di una transazione utente.

RUN_BT_BATCH_JOB(BatchCode : Code[20])

Se si desidera combinarla con RUN_BUSINESSTRANSACTION_JOB, è necessario incapsulare entrambe le funzioni in blocchi BEGIN..END_USER_TRANSACTION separati e aggiungere quanto segue nel mezzo:

COMMIT;
SELECTLATESTVERSION();

Azioni

A volte si vuole creare un pulsante su una pagina per avviare un processo EDI, oppure lo si vuole integrare, ad esempio, nel processo di rilascio. In questi casi è possibile eseguire quasi tutte le azioni del modulo dal codice. Tenete presente che i processi EDI devono essere generalmente automatizzati ed eseguiti in background. Quindi, prima di aggiungere azioni nel codice, considerate la possibilità di un lavoro in background come alternativa.

Eseguire una Mapping EDI

Per eseguire una Mapping EDI è necessario avviare una transazione utente. In seguito, potremmo voler passare i dati alla mapping. Possiamo quindi eseguire la mapping e verificare il risultato al termine della transazione utente. La descrizione dettagliata dei comandi si trova dopo l’esempio di codice.

// 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);
Esempio di codice: Eseguire una mapping per esportare una fattura

RESET_TABLEVIEWS

Azzera tutte le viste delle tabelle memorizzate esistenti. Deve essere richiamato dall’interno di una transazione utente.

RESET_TABLEVIEWS()

SET_TABLEVIEW

Memorizza una vista tabella con un nome specificato. Deve essere richiamato dall’interno di una transazione utente.

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

Un codice che rappresenta il nome del filtro. È necessario specificare esattamente lo stesso nome nella EDI Mapping per recuperare il filtro.

FilterText

Il testo del filtro sotto forma di tabella Anvaigo EDI Connect. Per ottenere una stringa formattata correttamente, è necessario utilizzare la funzione GETVIEW di Microsoft Dynamics 365 Business Central, se possibile.

GET_TABLEVIEW

Recupera un filtro memorizzato. Deve essere richiamato dall’interno di una transazione utente.

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

RUN

Eseguire una o più mappature EDI. Deve essere richiamato dall’interno di una transazione utente.

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

Il codice del progetto o una stringa di filtro che corrisponde al codice del progetto.

FormatFilter

Il codice del formato mapping o una stringa di filtro che corrisponde al codice del formato.

CodeFilter

Il codice della mapping o un filtro che corrisponde ai codici mapping desiderati.

MultipleAllowed

Se devono essere eseguite più mappature nel caso in cui sia specificato un filtro. Si tratta di una funzione di sicurezza che impedisce di eseguire più di una mapping.

ProcessFollowing

Se la post-elaborazione deve essere eseguita. In genere si consiglia di impostare questo valore su True.

ProcessingQueueView

Un filtro sulle post-elaborazioni. Di norma, è possibile passare una stringa vuota.

Altre azioni

RECEIVE_ALL

Funzione deprecata. Si dovrebbe evitare di chiamare la funzione generale e chiamare una delle funzioni più specifiche riportate di seguito.

Riceve tutti i canali di comunicazione. Questa funzione deve essere richiamata dall’interno di una transazione utente.

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

RECEIVE_FOLDER

Riceve i dati dalla cartella o dalle cartelle di trasmissione specificate. Questa funzione deve essere richiamata dall’interno di una transazione utente.

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

Il codice del filtro di trasmissione o una stringa di filtro sul campo codice.

ProcessFollowing

Se la post-elaborazione deve essere eseguita. In genere si consiglia di impostare questo valore su True.

ProcessQueueView

Un filtro sulle post-elaborazioni. Di norma, è possibile passare una stringa vuota.

RECEIVE_COMMUNICATIONCHANNEL

Riceve i dati dal canale di comunicazione specificato. Questa funzione deve essere richiamata dall’interno di una transazione utente.

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

Il codice del canale di comunicazione o una stringa di filtro sul campo del codice.

ProcessFollowing

Se la post-elaborazione deve essere eseguita. In genere si consiglia di impostare questo valore su True.

ProcessQueueView

Un filtro sulle post-elaborazioni. Di norma, è possibile passare una stringa vuota.

SEND_ALL

Funzione deprecata. Si dovrebbe evitare di chiamare la funzione generale e chiamare una delle funzioni più specifiche riportate di seguito.

Invia tutti i canali di comunicazione. Questa funzione deve essere richiamata dall’interno di una transazione utente.

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

Se la post-elaborazione deve essere eseguita. In genere si consiglia di impostare questo valore su True.

ProcessQueueView

Un filtro sulle post-elaborazioni. Di norma, è possibile passare una stringa vuota.

SEND_FOLDER

Invia le trasmissioni aperte della cartella di trasmissione specificata. Questa funzione deve essere richiamata dall’interno di una transazione utente.

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

Il codice della cartella di trasmissione o una stringa di filtro sul campo del codice.

ProcessFollowing

Se la post-elaborazione deve essere eseguita. In genere si consiglia di impostare questo valore su True.

ProcessQueueView

Un filtro sulle post-elaborazioni. Di norma, è possibile passare una stringa vuota.

SEND_COMMUNICATIONCHANNEL

Invia le trasmissioni aperte del canale di comunicazione specificato. Questa funzione deve essere richiamata dall’interno di una transazione utente.

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

Il codice del canale di comunicazione o una stringa di filtro sul campo del codice.

ProcessFollowing

Se la post-elaborazione deve essere eseguita. In genere si consiglia di impostare questo valore su True.

ProcessQueueView

Un filtro sulle post-elaborazioni. Di norma, è possibile passare una stringa vuota.

PROCESS

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

Se la post-elaborazione deve essere eseguita. In genere si consiglia di impostare questo valore su True.

ProcessQueueView

Un filtro sulle post-elaborazioni. Di norma, è possibile passare una stringa vuota.

UserTransactionFilter

Se devono essere elaborate solo le post-elaborazioni della transazione utente corrente.

Impostazione del destinatario / mittente

SET_COMMUNICATION_CHANNEL

Imposta il canale di comunicazione per la successiva chiamata di mapping all’interno della transazione utente.

SET_COMMUNICATION_CHANNEL(ChannelCode : Code[20])
ChannelCode

Il codice del canale di comunicazione.

SET_RECEIVER_PARTNER

Imposta il partner ricevente per la successiva chiamata di mapping all’interno della transazione utente.

SET_RECEIVER_PARTNER(ReceiverPartner : Code[20])
ReceiverPartner

Il codice del partner del ricevitore.

SET_RECEIVER_IDENTIFICATION

Imposta l’identificazione del destinatario per la successiva chiamata di mapping all’interno della transazione utente.

SET_RECEIVER_IDENTIFICATION(Identification : Text[64])
Identification

L’identificazione del ricevitore. Si tratta di un testo libero, che potrebbe avere un significato particolare su canali di comunicazione specifici.

SET_SENDER_PARTNER

Imposta il partner mittente per la seguente chiamata di mapping all’interno della transazione utente.

SET_SENDER_PARTNER(PartnerCode : Code[20])
PartnerCode

Il codice partner del mittente.

SET_SENDER_IDENTIFICATION

Imposta l’identificazione del mittente per la successiva chiamata di mapping all’interno della transazione utente.

SET_SENDER_IDENTIFICATION(Identification : Text[64])
Identification

L’identificazione del ricevitore. Si tratta di un testo libero, che potrebbe avere un significato particolare su canali di comunicazione specifici.

Registrazione e gestione degli errori

Le seguenti funzioni possono essere richiamate solo durante l’esecuzione di una mapping. Queste funzioni devono essere utilizzate per gestire gli errori in modo personalizzato dal codice.

LogError

Registra un messaggio di errore.

LogError(ErrorMessage : Text[1024])
ErrorMessage

Il messaggio di errore. L’esecuzione continuerà dopo questa chiamata. Per interrompere il flusso di controllo, utilizzare la funzione nativa ERROR.

LogWarning

Registra un avviso.

LogWarning(WarningMessage : Text[1024])
WarningMessage

Il testo dell’avviso.

LogInformation

Informazioni sui registri.

LogInformation(InformationMessage : Text[1024])
InformationMessage

Le informazioni da registrare.

LogDocumentError

Registra un errore appartenente a un documento EDI. Esiste una funzione più universale chiamata LogRecIDErrorWithCode.

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

Il messaggio di errore.

EDIDocument

Il documento EDI a cui appartiene l’errore.

LogDocumentWarning

Registra un avviso appartenente a un documento EDI. Esiste una funzione più universale chiamata LogRecIDWarningWithCode.

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

L’avviso da registrare.

EDIDocument

Il documento EDI a cui appartiene l’errore.

LogDocumentInformation

Registra un’informazione appartenente a un documento EDI. Esiste una funzione più universale chiamata LogRecIDInformationWithCode.

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

Le informazioni da registrare.

EDIDocument

Il documento EDI a cui appartiene l’errore.

LogDocumentLineError

Registra un errore appartenente a una riga di documento EDI. Esiste una funzione più generale chiamata LogRecIDErrorWithCode.

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

Il messaggio di errore da registrare.

EDIDocumentLine

La riga del documento EDI a cui appartiene l’errore.

LogDocumentLineWarning

Registra un avviso appartenente a una riga di documento EDI. Esiste una funzione più generale chiamata LogRecIDWarningWithCode.

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

L’avviso che deve essere registrato.

EDIDocumentLine

La riga del documento EDI a cui appartiene l’errore.

LogDocumentLineInformation

Registra un’informazione appartenente a una linea di documenti EDI. Esiste una funzione più generale chiamata LogRecIDInformationWithCode.

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

Le informazioni da registrare.

EDIDocumentLine

La riga del documento EDI a cui appartiene l’errore.

LogErrorWithCode

Registra un errore con un codice di errore aggiuntivo.

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

Se interrompere il flusso di controllo o proseguire con l’esecuzione

ErrorMessage

Il messaggio di errore da registrare.

Code

Un codice per identificare l’errore.

LogWarningWithCode

Registra un avviso con un codice di errore aggiuntivo.

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

L’avviso che deve essere registrato.

Code

Un codice per identificare l’errore.

LogInformationWithCode

Registra un’informazione con un codice di errore aggiuntivo.

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

Le informazioni che devono essere registrate.

Code

Un codice per identificare l’errore.

LogRecIDErrorWithCode

Registra un messaggio di errore che dovrebbe appartenere a un record specifico.

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

Se interrompere il flusso di controllo o continuare l’esecuzione.

ErrorMessage

Il messaggio di errore da registrare.

RecID

L’ID del record a cui appartiene l’errore.

Code

Un codice di errore per identificare l’errore.

IsUserAcceptable

Se l’errore può essere accettato dall’utente finale. Questo richiede un codice di errore non vuoto.

LogRecIDWarningWithCode

Registra un avviso che dovrebbe appartenere a un record.

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

L’avviso che deve essere registrato.

RecID

L’id del record a cui dovrebbe appartenere l’avviso.

Code

Un codice per identificare la voce di registro.

LogRecIDInformationWithCode

Registra un’informazione che dovrebbe appartenere a un record.

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

Le informazioni che devono essere registrate.

RecID

L’id del record a cui le informazioni devono appartenere.

Code

Un codice per identificare la voce di registro.