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, si potrebbe voler chiamare dal proprio codice personalizzato. Tutte le funzioni di questa codeunit devono essere utilizzate, se si vuole avviare direttamente un’azione EDI per codice.

Concetti generali

In questa sezione parleremo prima di tutto dei concetti fondamentali, che dovreste comprendere per poter leggere gli esempi di codice.

Transazioni dell’utente

Anveo EDI Connect ha un concetto chiamato “transazioni dell’utente”, che può abbracciare più transazioni di database e raccogliere più errori. La maggior parte delle azioni in Anveo EDI Connect richiedono una transazione utente aperta per essere eseguite. È 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 permette di mostrare gli errori, di interrompere la transazione corrente del database o di ottenere un valore di ritorno, sia che ci sia stato un errore. Ne discuteremo in dettaglio più tardi.

BEGIN_USER_TRANSACTION

Avvia una nuova transazione con un nuovo utente. Si prega di notare che si integrano le chiamate nel modulo EDI solo nei punti in cui può avvenire un COMMIT. In molti casi, il modulo commetterà tutte le modifiche al database prima di eseguire la logica EDI. Considerate anche la semplice marcatura dei dati e l’utilizzo di 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])

Si dovrebbe sempre terminare una chiamata a BEGIN_USER_TRANSACTION con una chiamata a END_USER_TRANSACTION.

SHOWDIALOGS

Questa funzione può essere utilizzata per nascondere qualsiasi finestra di dialogo EDI.

SHOWDIALOGS(ShowDialogs : Boolean)

Il parametro specifica se le finestre di dialogo vengono visualizzate o meno. Una chiamata a questa funzione deve essere all’interno di una transazione utente. Normalmente si chiama questa funzione direttamente dopo BEGIN_USER_TRANSACTION.

ISPROCESSING

Questa funzione ritorna se ci si trova all’interno di un’esecuzione mapping. È possibile controllare questo valore quando si validano i 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 immissione solo quando non si sta elaborando l’EDI.

END_USER_TRANSACTION

Questa funzione interrompe una transazione dell’utente.

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

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

BreakOnError

Se il modulo deve lanciare un errore, interrompendo il flusso di processo corrente. Tutto il codice dopo questa linea non viene eseguito, se c’è stato un errore durante la transazione. Impostando questo parametro su True verrà mostrato un messaggio di errore che indica che si sono verificati uno o più errori, se ce ne sono stati. In questo caso l’utente non può vedere l’elenco completo degli errori.

Success

Un valore di ritorno, che ci sia stato o meno un errore. Ritorna True al successo, cioè non ci sono stati errori; False altrimenti.

Il valore di ritorno era denominato in modo 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 on success.

Lavorare con le transazioni commerciali

RUN_BUSINESSTRANSACTION_JOB

Esegue il lavoro di raccolta dati di un determinato tipo di transazione commerciale. Questo deve essere chiamato dall’interno di una transazione dell’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.

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

RUN_BT_BATCH_JOB

Esegue il lavoro di raccolta dei lotti con il nome specificato. Questo deve essere chiamato dall’interno di una transazione dell’utente.

RUN_BT_BATCH_JOB(BatchCode : Code[20])

Azioni

A volte si vuole creare un pulsante su una pagina per avviare un processo EDI, oppure si vuole integrarlo, ad esempio, nel processo di rilascio. In questo caso è possibile eseguire quasi tutte le azioni del modulo da codice. Si prega di tenere presente che i processi EDI dovrebbero essere di solito automatizzati ed eseguiti in background. Quindi, prima di aggiungere azioni in codice, considerate la possibilità di un lavoro in background come alternativa.

Eseguire un Mapping EDI

Per eseguire un EDI Mapping dovremo avviare una transazione utente. In seguito potremmo voler passare i dati al mapping. Possiamo quindi eseguire il mapping e controllare il risultato quando terminiamo la transazione dell’utente. Troverete la descrizione dettagliata dei comandi 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 un mapping per esportare una fattura

RESET_TABLEVIEWS

Ripristina tutte le visualizzazioni di tabelle esistenti memorizzate. Deve essere chiamato dall’interno di una transazione utente.

RESET_TABLEVIEWS()

SET_TABLEVIEW

Memorizza una vista tabellare sotto un nome specificato. Deve essere chiamato dall’interno di una transazione utente.

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

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

FilterText

Il testo del filtro in forma di tabella Anveo EDI Connect. Per ottenere la stringa correttamente formattata si dovrebbe utilizzare la funzione di costruzione Microsoft Dynamics NAV 2013R2 GETVIEW, se possibile, per ottenere la stringa correttamente formattata.

GET_TABLEVIEW

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

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

RUN

Eseguire una o più mappature EDI. Deve essere chiamato 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 corrispondente al codice del progetto.

FormatFilter

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

CodeFilter

Il codice del mapping o un filtro corrispondente ai codici mapping desiderati.

MultipleAllowed

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

ProcessFollowing

Se il post-processing deve essere eseguito. Di solito si vuole impostare questo su True.

ProcessingQueueView

Un filtro sulle post-elaborazioni. Normalmente si può voler passare in una stringa vuota.

Altre azioni

RECEIVE_ALL

Funzione deprezzata. Si dovrebbe evitare di chiamare la funzione generale e chiamare una di quelle più specifiche qui sotto.

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

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

RECEIVE_FOLDER

Riceve i dati dalla cartella di trasmissione specificata o dalle cartelle. Questa funzione deve essere chiamata 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 del codice.

ProcessFollowing

Se il post-processing deve essere eseguito. Di solito si vuole impostare questo su True.

ProcessQueueView

Un filtro sulle post-elaborazioni. Normalmente si può voler passare in una stringa vuota.

RECEIVE_COMMUNICATIONCHANNEL

Riceve i dati dal canale di comunicazione specificato. Questa funzione deve essere chiamata 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 codice.

ProcessFollowing

Se il post-processing deve essere eseguito. Di solito si vuole impostare questo su True.

ProcessQueueView

Un filtro sulle post-elaborazioni. Normalmente si può voler passare in una stringa vuota.

SEND_ALL

Funzione deprezzata. Si dovrebbe evitare di chiamare la funzione generale e chiamare una di quelle più specifiche qui sotto.

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

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

Se il post-processing deve essere eseguito. Di solito si vuole impostare questo su True.

ProcessQueueView

Un filtro sulle post-elaborazioni. Normalmente si può voler passare in una stringa vuota.

SEND_FOLDER

Invia le trasmissioni aperte della cartella di trasmissione specificata. Questa funzione deve essere chiamata 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 il post-processing deve essere eseguito. Di solito si vuole impostare questo su True.

ProcessQueueView

Un filtro sulle post-elaborazioni. Normalmente si può voler passare in una stringa vuota.

SEND_COMMUNICATIONCHANNEL

Invia le trasmissioni aperte del canale di comunicazione specificato. Questa funzione deve essere chiamata 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 codice.

ProcessFollowing

Se il post-processing deve essere eseguito. Di solito si vuole impostare questo su True.

ProcessQueueView

Un filtro sulle post-elaborazioni. Normalmente si può voler passare in una stringa vuota.

PROCESS

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

Se il post-processing deve essere eseguito. Di solito si vuole impostare questo su True.

ProcessQueueView

Un filtro sulle post-elaborazioni. Normalmente si può voler passare in una stringa vuota.

UserTransactionFilter

Se devono essere elaborate solo le post-elaborazioni dell’attuale transazione dell’utente.

Impostazione del destinatario / mittente

SET_COMMUNICATION_CHANNEL

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

SET_COMMUNICATION_CHANNEL(ChannelCode : Code[20])
ChannelCode

Il codice del canale di comunicazione.

SET_RECEIVER_PARTNER

Imposta il partner ricevente per la seguente chiamata mapping all’interno della transazione dell’utente.

SET_RECEIVER_PARTNER(ReceiverPartner : Code[20])
ReceiverPartner

Il codice del partner ricevente.

SET_RECEIVER_IDENTIFICATION

Imposta l’identificazione del ricevitore per la seguente chiamata mapping all’interno della transazione dell’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 specifici canali di comunicazione.

SET_SENDER_PARTNER

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

SET_SENDER_PARTNER(PartnerCode : Code[20])
PartnerCode

Il codice partner del mittente.

SET_SENDER_IDENTIFICATION

Imposta l’identificazione del mittente per la seguente chiamata mapping all’interno della transazione dell’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 specifici canali di comunicazione.

Registrazione e gestione degli errori

Le seguenti funzioni possono essere richiamate solo mentre è in funzione un mapping. Queste funzioni sono destinate ad essere utilizzate per i gestori di errori personalizzati da 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 ERROR nativa.

LogWarning

Registra un avviso.

LogWarning(WarningMessage : Text[1024])
WarningMessage

Il testo dell’avvertimento.

LogInformation

Registra le informazioni.

LogInformation(InformationMessage : Text[1024])
InformationMessage

Le informazioni da registrare.

LogDocumentError

Registra un errore appartenente ad 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 ad 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 ad 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 ad una linea di documenti 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 linea di documenti EDI a cui appartiene l’errore.

LogDocumentLineWarning

Registra un avviso appartenente ad una linea di documenti EDI. Esiste una funzione più generale chiamata LogRecIDWarningWithCode.

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

L’avviso che dovrebbe essere registrato.

EDIDocumentLine

La linea di documenti EDI a cui appartiene l’errore.

LogDocumentLineInformation

Registra un’informazione appartenente ad 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 linea di documenti 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 continuare 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 dovrebbe 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 dovrebbero 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 richiederà 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 dovrebbe essere registrato.

RecID

Il record id l’avviso dovrebbe appartenere a.

Code

Un codice per identificare la voce del registro.

LogRecIDInformationWithCode

Registra un’informazione che dovrebbe appartenere a un record.

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

Le informazioni che dovrebbero essere registrate.

RecID

Il record identifica l’informazione a cui dovrebbe appartenere.

Code

Un codice per identificare la voce del registro.