ANVEDI Events
Anveo EDI Connect oferuje jedną codeunit dla zdarzeń integracyjnych: Codeunit kodowa ANVEDI Events. Możesz reagować na zdarzenia w tej codeunit poprzez własną codeunitową. Zdarzenia te są obsługiwane zarówno w wersji FOB jak i Extension Microsoft Dynamics.
Events
Dostępne są Events:
- OnFunctionRegistration
- OnFunctionExecution
- OnJob
- OnAcceptTransmission
- OnBeforeList
- OnAfterList
- OnBeforeReceive
- OnAfterReceive
- OnBeforeArchive
- OnAfterArchive
- OnBeforeDelete
- OnAfterDelete
- OnBeforeSend
- OnComposeMessage
- OnAfterSend
- OnReplacePlaceholder
- OnError
- OnAfterProcess
OnFunctionRegistration
procedure OnFunctionRegistration(Register: Codeunit "ANVEDI Function Register")
Zdarzenie to jest wywoływane podczas wyszukiwania przez moduł funkcji niestandardowych. Możesz zdefiniować własne funkcje za pomocą funkcji dostarczonej przez codeunit ANVEDI Function Register, która jest dostarczona pod nazwą Register. codeunit posiada dwie funkcje: RegisterFunction i AddParameter.
RegisterFunction oczekuje dwóch parametrów, nazwy obiektu i nazwy funkcji twojej nowej funkcji. Nazwy te mogą być wybierane dowolnie, ale nie mogą przekraczać 30 znaków.
Pierwsze 29 znaków kombinacji nazwy obiektu i funkcji musi być unikalne, aby można było określić parametry z mapping. Powinieneś postarać się skrócić te nazwiska.
Po zarejestrowaniu funkcji można wywołać AddParameter nawet do 5 razy. AddParameter oczekuje nazwy dla parametru twojej funkcji. Można użyć wielu bloków RegisterFunction i AddParameter w jednym Event. Zalecamy jednak oddzielenie wielu funkcji dla wielu słuchaczy Event.
Register.RegisterFunction('CustomObj', 'MyFunction');
Register.AddParameter('Name');
Register.AddParameter('Value');
Po zarejestrowaniu funkcji, należy reagować na wywołania funkcji. Odbywa się to za pomocą opisanej poniżej Event.
OnFunctionExecution
procedure OnFunctionExecution(FunctionCall: Codeunit "ANVEDI Function Call")
Event jest wywoływane, gdy moduł szuka implementacji funkcji niestandardowych. Przykład codeunit ANVEDI Function Call Call jest przekazywany do tego zdarzenia pod nazwą FunctionCall.
Powinieneś sprawdzić, czy FunctionCall pasuje do Twojej niestandardowej funkcji i wykonać dowolny kod, jeśli tak jest. Odbywa się to poprzez wywołanie funkcji Is() o tych samych parametrach, które wywołałeś RegisterFunction w Event. Jeśli Is() zwraca prawdę, możesz uzyskać dostęp do parametrów, wykonać swój własny kod i zwrócić wartość.
if FunctionCall.Is(ObjectNameTok, FunctionNameTok) then begin
Name := FunctionCall.GetTextParameter(1);
Val := FunctionCall.GetIntegerParameter(2);
Message(Name + ': ' + Format(Val));
FunctionCall.SetResult(TRUE);
end;
codeunit ANVEDI Function Call udostępnia funkcje składania:
procedure Is(ObjectName: Text[30];FunctionName: Text[30]): Boolean
Zwraca, czy wywołanie funkcji jest zgodne z określonym podpisem funkcji.
procedure SetResult(Value: Variant)
Musisz wywołać tę funkcję, aby pokazać moduł, który obsługiwał wywołanie funkcji. Możesz przekazać wynik funkcji, lub po prostu użyć true jako wynik.
procedure GetTextParameter(ParNum: Integer): Text[1024]
Pobiera parametr o podanym numerze jako tekst. Indeks zaczyna się od 1.
procedure GetIntegerParameter(ParNum: Integer): Integer
Pobiera parametr o podanej liczbie w postaci liczby całkowitej. Indeks zaczyna się od 1.
procedure GetBooleanParameter(ParNum: Integer): Boolean
Pobiera parametr o podanym numerze jako boolean. Indeks zaczyna się od 1.
procedure GetDecimalParameter(ParNum: Integer): Decimal
Pobiera parametr o podanej liczbie jako dziesiętny. Indeks zaczyna się od 1.
procedure GetDateParameter(ParNum: Integer): Date
Pobiera parametr o podanym numerze jako data. Indeks zaczyna się od 1.
procedure GetTimeParameter(ParNum: Integer): Time
Pobiera parametr o podanym numerze jako datę i godzinę. Indeks zaczyna się od 1.
procedure GetDateTimeParameter(ParNum: Integer): DateTime
Pobiera parametr o podanym numerze jako czas. Indeks zaczyna się od 1.
procedure GetParameter(ParNum: Integer;var EDIVariant: Codeunit "ANVEDI Variant"): Boolean
Pobiera parametr o podanym numerze jako EDIVariant. Funkcja zwraca, czy dany parametr może zostać pobrany. Indeks zaczyna się od 1.
OnJob
procedure OnJob(ParameterDictionary: Codeunit "ANVEDI Data Structures";EventArgs: Codeunit "ANVEDI Event Args")
Możesz użyć codeunit zadania z modułu do zdefiniowania własnych zadań. codeunit pozwala na obsługę wielu parametrów. Więcej informacji na ten temat można znaleźć w dokumentacji osoby odpowiedzialnej za pracę.
Słownik zawierający parametry przekazane do pracy.
Powinieneś ustawić Event do obsługi, jeśli przetwarzałeś zadanie. Opis struktury ANVEDI Event Args znajduje się na końcu tego rozdziału.
OnAcceptTransmission
procedure OnAcceptTransmission(ANVEDITransmission: Record "ANVEDI Transmission";EventArgs: Codeunit "ANVEDI Event Args")
Funkcja ta służy do określenia, czy dany plik lub komunikat powinien zostać zaakceptowany lub zignorowany przez moduł. Moduł nie zapisuje, czy transmisja została zignorowana i za każdym razem, gdy zobaczy transmisję, będzie wywoływał tę funkcję. Plik nie jest jeszcze czytany, więc można decydować tylko na podstawie dostępnych metadanych.
Transmisja, dla której zostały pobrane metadane. Proszę zauważyć, że w tym momencie nie otrzymano żadnych danych i że rekord nie został jeszcze wprowadzony do bazy danych.
Powinieneś ustawić Event do obsługi, jeśli przetwarzałeś Event. Należy również zwrócić wartość, czy transmisja ma zostać przetworzona (ustawić wartość zwrotu na true); czy nie (ustawić na false). Opis struktury ANVEDI Event Args znajduje się na końcu tego rozdziału.
OnBeforeList
procedure OnBeforeList(EDICommunicationChannel: Record "ANVEDI Communication Channel";EventArgs: Codeunit "ANVEDI Event Args")
Kod ten jest wywoływany zanim moduł poszuka nowych danych. Może to być wykorzystane do wydania zewnętrznego polecenia lub skryptu do odbioru plików, zanim moduł wyszuka nowe dane.
Kanał komunikacyjny, który powinien pobierać dane.
Powinieneś ustawić Event do obsługi, jeśli przetwarzałeś Zdarzenie. Opis struktury ANVEDI Event Args znajduje się na końcu tego rozdziału.
OnAfterList
procedure OnAfterList(EDICommunicationChannel: Record "ANVEDI Communication Channel";EventArgs: Codeunit "ANVEDI Event Args")
Kanał komunikacyjny, który powinien pobierać dane.
Powinieneś ustawić Event do obsługi, jeśli przetwarzałeś Event. Opis struktury ANVEDI Event Args znajduje się na końcu tego rozdziału.
Kod ten jest wywoływany po wyszukaniu przez moduł nowych danych.
OnBeforeReceive
procedure OnBeforeReceive(ANVEDITransmission: Record "ANVEDI Transmission";EventArgs: Codeunit "ANVEDI Event Args")
To Event jest wywoływane przed pobraniem transmisji. Proszę zwrócić uwagę, że w tym momencie nie można przerwać przetwarzania. Jeśli chcesz podjąć decyzję, czy chcesz odzyskać wiadomość, czy nie, skorzystaj z Event.
Transmisja. Wiadomości nie zostały jeszcze odebrane.
Powinieneś ustawić Event do obsługi, jeśli przetwarzałeś Event. Opis struktury ANVEDI Event Args znajduje się na końcu tego rozdziału.
OnAfterReceive
procedure OnAfterReceive(ANVEDITransmission: Record "ANVEDI Transmission";EventArgs: Codeunit "ANVEDI Event Args")
To Event jest wywoływane po odebraniu transmisji.
Transmisja po jej odzyskaniu (można uzyskać dostęp do wiadomości).
Powinieneś ustawić Event do obsługi, jeśli przetwarzałeś Event. Opis struktury ANVEDI Event Args znajduje się na końcu tego rozdziału.
OnBeforeArchive
procedure OnBeforeArchive(ANVEDITransmission: Record "ANVEDI Transmission";EventArgs: Codeunit "ANVEDI Event Args")
To Event jest wywoływane przed zarchiwizowaniem transmisji.
Transmisja, która zostanie zarchiwizowana na odległym miejscu.
Powinieneś ustawić Event do obsługi, jeśli przetwarzałeś Event. Opis struktury ANVEDI Event Args znajduje się na końcu tego rozdziału.
OnAfterArchive
procedure OnAfterArchive(ANVEDITransmission: Record "ANVEDI Transmission";EventArgs: Codeunit "ANVEDI Event Args")
To Event jest wywoływane po zarchiwizowaniu transmisji.
Transmisja, która została zarchiwizowana w odległej lokalizacji.
Powinieneś ustawić Event do obsługi, jeśli przetwarzałeś Event. Opis struktury ANVEDI Event Args znajduje się na końcu tego rozdziału.
OnBeforeDelete
procedure OnBeforeDelete(ANVEDITransmission: Record "ANVEDI Transmission";EventArgs: Codeunit "ANVEDI Event Args")
To Event jest wywoływane przed usunięciem transmisji.
Transmisja, która zostanie usunięta na zdalnej lokalizacji.
Powinieneś ustawić Event do obsługi, jeśli przetwarzałeś Event. Opis struktury ANVEDI Event Args znajduje się na końcu tego rozdziału.
OnAfterDelete
procedure OnAfterDelete(ANVEDITransmission: Record "ANVEDI Transmission";EventArgs: Codeunit "ANVEDI Event Args")
To Event jest wywoływane po usunięciu transmisji.
Transmisja, która została usunięta ze zdalnej lokalizacji.
Powinieneś ustawić Event do obsługi, jeśli przetwarzałeś Event. Opis struktury ANVEDI Event Args znajduje się na końcu tego rozdziału.
OnBeforeSend
procedure OnBeforeSend(ANVEDITransmission: Record "ANVEDI Transmission";EventArgs: Codeunit "ANVEDI Event Args")
To Event jest wywoływane przed wysłaniem transmisji.
Transmisja, która ma być wysłana.
Powinieneś ustawić Event do obsługi, jeśli przetwarzałeś Event. Opis struktury ANVEDI Event Args znajduje się na końcu tego rozdziału.
OnComposeMessage
procedure OnComposeMessage(ANVEDITransmission: Record "ANVEDI Transmission";EventArgs: Codeunit "ANVEDI Event Args")
To Event jest wywoływane podczas komponowania transmisji.
Przekaz, który jest złożony.
Powinieneś ustawić Event do obsługi, jeśli przetwarzałeś Event. Opis struktury ANVEDI Event Args znajduje się na końcu tego rozdziału.
OnAfterSend
procedure OnAfterSend(ANVEDITransmission: Record "ANVEDI Transmission";EventArgs: Codeunit "ANVEDI Event Args")
To Event jest wywoływane po wysłaniu transmisji.
Transmisja, która została wysłana.
Powinieneś ustawić Event do obsługi, jeśli przetwarzałeś Zdarzenie. Opis struktury ANVEDI Event Args znajduje się na końcu tego rozdziału.
OnReplacePlaceholder
procedure OnReplacePlaceholder(Placeholder: Text[50];var ANVEDILinkedDocument: Record "ANVEDI Linked Document";EventArgs: Codeunit "ANVEDI Event Args")
Funkcja ta jest wywoływana, gdy oceniany jest łańcuch, który może zawierać zmienne zdefiniowane przez użytkownika, takie jak nazwa pliku.
Nazwisko lokatora. Moduł szuka obecnie wartości, która zastąpi ten konkretny uchwyt miejsca. Jeśli chcesz podać wartość, musisz określić wynik i ustawić zdarzenie do obsługi w EventArgs.
Wstępnie przefiltrowany zapis powiązanych dokumentów. Możesz na przykład użyć tej tabeli, aby uzyskać dokumenty buforowe, które są zawarte w pliku.
Powinieneś ustawić Event do obsługi, jeśli przetwarzałeś Event. Musisz też podać wartość. Opis struktury ANVEDI Event Args znajduje się na końcu tego rozdziału.
Poniższy przykład pokazuje, w jaki sposób można zwrócić dane z połączonego dokumentu:
[EventSubscriber(ObjectType::Codeunit, Codeunit::="" Events="" TRUE,="" TRUE)]=""]
local procedure OnReplacePlaceholderExternalDocumentNo(Placeholder: Text[50];var ANVEDILinkedDocument: Record "ANVEDI Linked Document";EventArgs: Codeunit "ANVEDI Event Args")
var
recID: RecordID;
ediDocument: Record "ANVEDI Document";
begin
if Placeholder = 'ExternalDocumentNo' then begin
if ANVEDILinkedDocument.FindSet() then
repeat
recID := ANVEDILinkedDocument.RecordId;
if recID.TableNo = Database::"ANVEDI Document" then begin
ediDocument.get(recID);
EventArgs.SetResult(ediDocument."External Document No.");
EventArgs.SetHandled(true);
exit;
end;
until ANVEDILinkedDocument.Next() = 0;
end;
end;
OnError
procedure OnError(ANVEDIProcessingQueue: Record "ANVEDI Processing Queue";EventArgs: Codeunit "ANVEDI Event Args")
Event to jest wywoływane w przypadku wystąpienia błędu w kolejce przetwarzania.
Powinieneś ustawić Event do obsługi, jeśli przetwarzałeś Event. Opis struktury ANVEDI Event Args znajduje się na końcu tego rozdziału.
OnAfterProcess
procedure OnAfterProcess(ANVEDIProcessingQueue: Record "ANVEDI Processing Queue";EventArgs: Codeunit "ANVEDI Event Args")
Event to jest wywoływane po przetworzeniu wpisu w EDI Processing Queue tabeli. Należy sprawdzić status przyjętego wpisu i odpowiednio zareagować.
Powinieneś ustawić Event do obsługi, jeśli przetwarzałeś Event. Opis struktury ANVEDI Event Args znajduje się na końcu tego rozdziału.
ANVEDI Event Args
Niektóre ze Events wykorzystują strukturę o nazwie ANVEDI Event Args. Ta struktura pozwala na zwrócenie wartości i poinformowanie modułu, czy obsłużyłeś dane zdarzenie.
Następujące funkcje są dostępne na ANVEDI Event Args przekazanych do Event:
SetHandled(Value: Boolean)
Czy Event było obsługiwane przez twój kod.
SetResult(Value: Variant)
Wartość zwrotu, jeśli Event oczekuje wartości zwrotu.
Przykład
Poniższy przykład pokazuje, jak można dodać własną, niestandardową funkcję „MYOBJECT.MYFUNC”, która pokazuje komunikat zawierający podaną nazwę, po której następuje ’: ’ i wartość. Możesz dodać tyle funkcji z tylu rozszerzeń, ile potrzebujesz.
codeunit 50100 MyAnveoFunctions
{
var
ObjectNameTok: label 'MYOBJECT';
FunctionNameTok: label 'MYFUNC';
[EventSubscriber(ObjectType::Codeunit, Codeunit::="" Events="" TRUE,="" TRUE)]=""]
local procedure OnRegisterFunctions(Register: Codeunit "ANVEDI Function Register")
begin
Register.RegisterFunction(ObjectNameTok, FunctionNameTok);
Register.AddParameter('Name');
Register.AddParameter('Value');
end;
[EventSubscriber(ObjectType::Codeunit, Codeunit::="" Events="" TRUE,="" TRUE)]=""]
local procedure OnFunction(FunctionCall: Codeunit "ANVEDI Function Call")
var
Name: Text;
Val: Integer;
begin
if FunctionCall.Is(ObjectNameTok, FunctionNameTok) then begin
Name := FunctionCall.GetTextParameter(1);
Val := FunctionCall.GetIntegerParameter(2);
Message(Name + ': ' + Format(Val));
FunctionCall.SetResult(TRUE);
end;
end;
}
Zależności
Jeśli chcesz reagować na Event poprzez AL, musisz dodać zależność do modułu Anveo EDI Connect.
Wartości dla rozszerzenia OnPremise Extension są następujące:
{
"appId": "25286BD2-B08A-49F9-B613-64122CCEE4E1",
"name": "Anveo EDI Connect - OnPremise",
"publisher": "conion media GmbH",
"version": "5.x.y.z"
}
Upewnij się, że zastępujesz x, y, z prawidłowym numerem wersji.
Wartości dla Business Central Online Extension są następujące:
{
"appId": "FC195C4F-19BF-4167-BFE8-6D1FF7D266BC",
"name": "Anveo EDI Connect",
"publisher": "conion media GmbH",
"version": "5.x.y.z"
}
Upewnij się, że zastępujesz x, y, z prawidłowym numerem wersji.