Anveo EDI Connect / Config / Rozwój / integracja / ANVEDI Integration
Jest to tłumaczenie automatyczne. Pierwotne stanowisko jest dostępne w angielski.

ANVEDI Integration

codeunit ANVEDI Integration zawiera wszystkie publiczne wywołania API do modułu EDI, być może będziesz chciał zadzwonić z własnego kodu. Wszystkie funkcje w tej codeunit mają być używane, jeśli chcesz bezpośrednio rozpocząć akcję EDI za pomocą kodu.

Koncepcje ogólne

W tej części omówimy najpierw podstawowe pojęcia, które powinny być zrozumiałe, aby móc zapoznać się z przykładami kodu.

Transakcje z użytkownikami

Anveo EDI Connect posiada koncepcję nazywaną „transakcje użytkownika”, która może obejmować wiele transakcji w bazie danych i zbierać wiele błędów. Większość działań w Anveo EDI Connect będzie wymagała otwartej transakcji użytkownika, aby je uruchomić. Możesz rozpocząć transakcję z użytkownikiem, dzwoniąc:

// 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);
Przykład: Rozpoczęcie transakcji z użytkownikiem

Wywołanie do END_USER_TRANSACTION pozwala na pokazanie błędów, przerwanie bieżącej transakcji w bazie danych lub otrzymanie wartości zwrotnej, niezależnie od tego, czy wystąpił błąd. Omówimy to szczegółowo później.

BEGIN_USER_TRANSACTION

Rozpoczyna transakcję z nowym użytkownikiem. Należy pamiętać, że połączenia w module EDI integrujesz tylko w punktach, w których może odbywać się KOMITET. W wielu przypadkach moduł dokonuje wszystkich zmian w bazie danych przed wykonaniem logiki EDI. Rozważ również zwykłe zaznaczenie danych i użycie zadania w tle do wykonania logiki EDI.

Podany tekst jest pokazywany użytkownikowi, jeśli zostanie otwarte okno dialogowe oczekujące, ponieważ proces ten wymaga czasu.

BEGIN_USER_TRANSACTION(Text : Text[1024])

Zawsze należy zakończyć połączenie do BEGIN_USER_TRANSACTION z połączeniem do END_USER_TRANSACTION.

SHOWDIALOGS

Funkcja ta może być używana do ukrywania dowolnych okien dialogowych EDI.

SHOWDIALOGS(ShowDialogs : Boolean)

Parametr ten określa, czy okna dialogowe są wyświetlane, czy nie. Wywołanie tej funkcji musi znajdować się wewnątrz transakcji użytkownika. Zwykle funkcja ta jest wywoływana bezpośrednio po BEGIN_USER_TRANSACTION.

ISPROCESSING

Funkcja ta zwraca, czy użytkownik znajduje się w obrębie wykonania mapping. Możesz sprawdzić tę wartość podczas sprawdzania poprawności działania wyzwalaczy, na przykład, aby uzyskać inne zachowanie podczas przetwarzania procesów EDI. Wartości tej można również używać do wyświetlania dialogów wejściowych tylko wtedy, gdy nie przetwarza się EDI.

END_USER_TRANSACTION

Funkcja ta spowoduje zakończenie transakcji użytkownika.

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

Jeśli podczas transakcji wystąpiły błędy, pokaż to w oknie dialogowym dla użytkownika końcowego. Ten parametr nie ma żadnego wpływu, jeśli GUIALLOWED jest False.

BreakOnError

Czy moduł powinien wyrzucić błąd, przerywając aktualny przepływ procesu. Cały kod po tej linii nie jest wykonywany, jeśli podczas transakcji wystąpił błąd. Ustawienie tego parametru na True (Prawda) spowoduje wyświetlenie komunikatu o błędzie, który wystąpił jeden lub więcej błędów, jeśli takie wystąpiły. W tym przypadku użytkownik nie może zobaczyć pełnej listy błędów.

Success

Wartość zwrotna, niezależnie od tego, czy wystąpił błąd, czy nie. Wraca True o sukcesie, tzn. nie było żadnych błędów; False inaczej.

W starszych wersjach modułu wartość zwrotu była różnie nazywana, ale miała tę samą funkcję. Stara nazwa wartości zwrotnej była nieprawidłowa, funkcja zawsze zwracała True on success.

Praca z transakcjami biznesowymi

RUN_BUSINESSTRANSACTION_JOB

Wykonuje zadanie zbierania danych określonego typu transakcji biznesowej. To musi być wywołane z wnętrza transakcji użytkownika.

RUN_BUSINESSTRANSACTION_JOB(BusinessTransactionTypeCode : Code[20])
BusinessTransactionTypeCode

Kod typu transakcji biznesowej.

// 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);
Przykład: Prowadzenie zadania zbierania danych o transakcjach biznesowych

START_BT_WITH_REC

Rozpoczyna nową transakcję biznesową dla danego kodu i identyfikatora zapisu.

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

RUN_BT_BATCH_JOB

Wykonuje zadanie odbioru partii o określonej nazwie. To musi być wywołane z wnętrza transakcji użytkownika.

RUN_BT_BATCH_JOB(BatchCode : Code[20])

Działania

Czasami chcesz utworzyć przycisk na stronie, aby rozpocząć proces EDI, lub chcesz go zintegrować, na przykład, z procesem wydania. W tym przypadku można uruchomić prawie wszystkie akcje modułu z kodu. Proszę pamiętać, że procesy EDI powinny być zazwyczaj zautomatyzowane i prowadzone w tle. Tak więc przed dodaniem akcji w kodzie, rozważ możliwość pracy w tle jako alternatywę.

Wykonaj EDI Mapping

Aby uruchomić EDI Mapping będziemy musieli rozpocząć transakcję użytkownika. Następnie możemy chcieć przekazać dane do mapping. Możemy wtedy uruchomić mapping i sprawdzić wynik po zakończeniu transakcji użytkownika. Szczegółowy opis poleceń znajduje się po przykładzie kodu.

// 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);
Przykładowy kod: Przeprowadzić mapping w celu wywiezienia faktury

RESET_TABLEVIEWS

Resetuje wszystkie istniejące zapisane widoki tabeli. Musi być wywołany z wnętrza transakcji użytkownika.

RESET_TABLEVIEWS()

SET_TABLEVIEW

Przechowuje widok tabeli pod określoną nazwą. Musi być wywołany z wnętrza transakcji użytkownika.

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

Kod reprezentujący nazwę filtra. Musisz podać dokładnie taką samą nazwę w EDI Mapping, aby odzyskać filtr.

FilterText

Tekst filtru w formie widoku tabeli Anveo EDI Connect. Powinieneś użyć wbudowanej funkcji Microsoft Dynamics NAV 2016 GETVIEW, jeśli to możliwe, aby uzyskać prawidłowo sformatowany łańcuch.

GET_TABLEVIEW

Odzyskuje zapisany filtr. Musi być wywołany z wnętrza transakcji użytkownika.

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

RUN

Uruchomić jeden lub więcej mappingu EDI. Musi być wywołany z wnętrza transakcji użytkownika.

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

Kod projektu lub łańcuch filtra odpowiadający kodowi projektu.

FormatFilter

Kod formatu mapping lub łańcuch filtra odpowiadający kodowi formatu.

CodeFilter

Kod mapping lub filtr odpowiadający żądanym kodom mapping.

MultipleAllowed

Czy należy wykonać wiele mapowań w przypadku, gdy określony jest filtr. Jest to funkcja bezpieczeństwa, zapobiegająca uruchomieniu więcej niż jednego mapping.

ProcessFollowing

Czy należy wykonać obróbkę końcową. Normalnie chcesz to ustawić na True.

ProcessingQueueView

Filtr na postprocesach. Normalnie możesz chcieć przejść przez pusty łańcuch.

Inne działania

RECEIVE_ALL

Niedopracowana funkcja. Należy unikać wywoływania funkcji ogólnej i wywołać jedną z bardziej szczegółowych funkcji poniżej.

Odbiera wszystkie kanały komunikacyjne. Funkcja ta musi być wywołana z wnętrza transakcji użytkownika.

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

RECEIVE_FOLDER

Otrzymuje dane z określonego folderu transmisyjnego lub folderów. Funkcja ta musi być wywołana z wnętrza transakcji użytkownika.

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

Kod filtra transmisji lub łańcuch filtra w polu kodu.

ProcessFollowing

Czy należy wykonać obróbkę końcową. Normalnie chcesz to ustawić na True.

ProcessQueueView

Filtr na postprocesach. Normalnie możesz chcieć przejść przez pusty łańcuch.

RECEIVE_COMMUNICATIONCHANNEL

Otrzymuje dane z określonego kanału komunikacyjnego. Funkcja ta musi być wywołana z wnętrza transakcji użytkownika.

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

Kod kanału komunikacyjnego lub łańcuch filtra w polu kodu.

ProcessFollowing

Czy należy wykonać obróbkę końcową. Normalnie chcesz to ustawić na True.

ProcessQueueView

Filtr na postprocesach. Normalnie możesz chcieć przejść przez pusty łańcuch.

SEND_ALL

Niedopracowana funkcja. Należy unikać wywoływania funkcji ogólnej i wywołać jedną z bardziej szczegółowych funkcji poniżej.

Wysyła wszystkie kanały komunikacyjne. Funkcja ta musi być wywołana z wnętrza transakcji użytkownika.

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

Czy należy wykonać obróbkę końcową. Normalnie chcesz to ustawić na True.

ProcessQueueView

Filtr na postprocesach. Normalnie możesz chcieć przejść przez pusty łańcuch.

SEND_FOLDER

Wysyła otwarte transmisje określonego folderu transmisji. Funkcja ta musi być wywołana z wnętrza transakcji użytkownika.

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

Kod folderu transmisyjnego lub łańcuch filtra w polu kodu.

ProcessFollowing

Czy należy wykonać obróbkę końcową. Normalnie chcesz to ustawić na True.

ProcessQueueView

Filtr na postprocesach. Normalnie możesz chcieć przejść przez pusty łańcuch.

SEND_COMMUNICATIONCHANNEL

Wysyła otwarte transmisje określonego kanału komunikacyjnego. Funkcja ta musi być wywołana z wnętrza transakcji użytkownika.

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

Kod kanału komunikacyjnego lub łańcuch filtra w polu kodu.

ProcessFollowing

Czy należy wykonać obróbkę końcową. Normalnie chcesz to ustawić na True.

ProcessQueueView

Filtr na postprocesach. Normalnie możesz chcieć przejść przez pusty łańcuch.

PROCESS

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

Czy należy wykonać obróbkę końcową. Normalnie chcesz to ustawić na True.

ProcessQueueView

Filtr na postprocesach. Normalnie możesz chcieć przejść przez pusty łańcuch.

UserTransactionFilter

Czy powinny być przetwarzane tylko post-procesy z bieżącej transakcji użytkownika.

Ustawianie Odbiorcy / Nadawcy

SET_COMMUNICATION_CHANNEL

Ustawia kanał komunikacji dla następującego połączenia mapping wewnątrz transakcji użytkownika.

SET_COMMUNICATION_CHANNEL(ChannelCode : Code[20])
ChannelCode

Kod kanału komunikacyjnego.

SET_RECEIVER_PARTNER

Ustawia partnera odbiorczego na następujące połączenie mapping wewnątrz transakcji użytkownika.

SET_RECEIVER_PARTNER(ReceiverPartner : Code[20])
ReceiverPartner

Kod partnera odbiornika.

SET_RECEIVER_IDENTIFICATION

Ustawia identyfikację odbiorcy dla następującego połączenia mapping wewnątrz transakcji użytkownika.

SET_RECEIVER_IDENTIFICATION(Identification : Text[64])
Identification

Identyfikacja odbiornika. Jest to wolny tekst, który może mieć szczególne znaczenie na określonych kanałach komunikacyjnych.

SET_SENDER_PARTNER

Ustawia partnera nadawcy na następujące połączenie mapping wewnątrz transakcji użytkownika.

SET_SENDER_PARTNER(PartnerCode : Code[20])
PartnerCode

Kod partnera nadawcy.

SET_SENDER_IDENTIFICATION

Ustawia identyfikację nadawcy dla następującego połączenia mapping wewnątrz transakcji użytkownika.

SET_SENDER_IDENTIFICATION(Identification : Text[64])
Identification

Identyfikacja odbiornika. Jest to wolny tekst, który może mieć szczególne znaczenie na określonych kanałach komunikacyjnych.

Logowanie i obsługa błędów

Poniższe funkcje mogą być wywoływane tylko w czasie trwania mapping. Funkcje te są przeznaczone do wykorzystania w niestandardowych systemach obsługi błędów z kodu.

LogError

Zapisuje komunikat o błędzie.

LogError(ErrorMessage : Text[1024])
ErrorMessage

Komunikat o błędzie. Egzekucja będzie kontynuowana po tym wezwaniu. Aby przerwać przepływ sterowania, należy użyć natywnej funkcji ERROR.

LogWarning

Zapisuje ostrzeżenie.

LogWarning(WarningMessage : Text[1024])
WarningMessage

Tekst ostrzeżenia.

LogInformation

Informacje z dzienników.

LogInformation(InformationMessage : Text[1024])
InformationMessage

Informacje, które mają być rejestrowane.

LogDocumentError

Rejestruje błąd należący do dokumentu EDI. Istnieje bardziej uniwersalna funkcja o nazwie LogRecIDErrorWithCode.

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

Komunikat o błędzie.

EDIDocument

Dokument EDI, do którego należy błąd.

LogDocumentWarning

Rejestruje ostrzeżenie należące do dokumentu EDI. Istnieje bardziej uniwersalna funkcja o nazwie LogRecIDWarningWithCode.

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

Ostrzeżenie do zarejestrowania.

EDIDocument

Dokument EDI, do którego należy błąd.

LogDocumentInformation

Rejestruje informacje należące do dokumentu EDI. Istnieje bardziej uniwersalna funkcja o nazwie LogRecIDInformationWithCode.

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

Informacje, które mają być rejestrowane.

EDIDocument

Dokument EDI, do którego należy błąd.

LogDocumentLineError

Rejestruje błąd należący do linii dokumentów EDI. Istnieje bardziej ogólna funkcja o nazwie LogRecIDErrorWithCode.

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

Komunikat o błędzie, który ma być rejestrowany.

EDIDocumentLine

Linia dokumentu EDI, do której należy błąd.

LogDocumentLineWarning

Rejestruje ostrzeżenie należące do wiersza dokumentów EDI. Istnieje bardziej ogólna funkcja o nazwie LogRecIDWarningWithCode.

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

Ostrzeżenie, które powinno być rejestrowane.

EDIDocumentLine

Linia dokumentu EDI, do której należy błąd.

LogDocumentLineInformation

Rejestruje informacje należące do EDI Document Line. Istnieje bardziej ogólna funkcja o nazwie LogRecIDInformationWithCode.

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

Informacje, które mają być rejestrowane.

EDIDocumentLine

Linia dokumentu EDI, do której należy błąd.

LogErrorWithCode

Rejestruje błąd za pomocą dodatkowego kodu błędu.

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

Czy przerwać przepływ kontrolny, czy kontynuować wykonanie

ErrorMessage

Komunikat o błędzie, który ma być rejestrowany.

Code

Kod służący do identyfikacji błędu.

LogWarningWithCode

Rejestruje ostrzeżenie z dodatkowym kodem błędu.

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

Ostrzeżenie, które powinno być rejestrowane.

Code

Kod służący do identyfikacji błędu.

LogInformationWithCode

Rejestruje informacje z dodatkowym kodem błędu.

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

Informacje, które powinny być rejestrowane.

Code

Kod służący do identyfikacji błędu.

LogRecIDErrorWithCode

Zapisuje komunikat o błędzie, który powinien należeć do konkretnego rekordu.

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

Czy przerwać przepływ sterowania, czy kontynuować realizację.

ErrorMessage

Komunikat o błędzie, który ma być rejestrowany.

RecID

Identyfikator rekordu, do którego należy błąd.

Code

Kod błędu do identyfikacji błędu.

IsUserAcceptable

Czy błąd może zostać zaakceptowany przez użytkownika końcowego. Będzie to wymagało podania niepustego kodu błędu.

LogRecIDWarningWithCode

Zapisuje ostrzeżenie, które powinno należeć do zapisu.

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

Ostrzeżenie, które powinno być rejestrowane.

RecID

Zapis, do którego powinno należeć ostrzeżenie.

Code

Kod służący do identyfikacji wpisu w dzienniku.

LogRecIDInformationWithCode

Zapisuje informacje, które powinny należeć do zapisu.

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

Informacje, które powinny być rejestrowane.

RecID

Identyfikator zapisu, do którego powinny należeć informacje.

Code

Kod służący do identyfikacji wpisu w dzienniku.