Jest to tłumaczenie automatyczne. Pierwotne stanowisko jest dostępne w angielski.

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');
Przykład: Korzystanie z rejestru funkcji

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;
Przykład: Reakcja na wywołanie funkcji

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ę.

ParamaterDictionary

Słownik zawierający parametry przekazane do pracy.

EventArgs

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.

ANVEDITransmission

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.

EventArgs

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.

EDICommunicationChannel

Kanał komunikacyjny, który powinien pobierać dane.

EventArgs

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")
EDICommunicationChannel

Kanał komunikacyjny, który powinien pobierać dane.

EventArgs

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.

ANVEDITransmission

Transmisja. Wiadomości nie zostały jeszcze odebrane.

EventArgs

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.

ANVEDITransmission

Transmisja po jej odzyskaniu (można uzyskać dostęp do wiadomości).

EventArgs

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.

ANVEDITransmission

Transmisja, która zostanie zarchiwizowana na odległym miejscu.

EventArgs

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.

ANVEDITransmission

Transmisja, która została zarchiwizowana w odległej lokalizacji.

EventArgs

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.

ANVEDITransmission

Transmisja, która zostanie usunięta na zdalnej lokalizacji.

EventArgs

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.

ANVEDITransmission

Transmisja, która została usunięta ze zdalnej lokalizacji.

EventArgs

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.

ANVEDITransmission

Transmisja, która ma być wysłana.

EventArgs

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.

ANVEDITransmission

Przekaz, który jest złożony.

EventArgs

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.

ANVEDITransmission

Transmisja, która została wysłana.

EventArgs

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.

Placeholder

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.

ANVEDILinkedDocument

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.

EventArgs

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;
Przykład: OnReplacePlacePlaceholder

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.

EventArgs

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ć.

EventArgs

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)
Value

Czy Event było obsługiwane przez twój kod.

SetResult(Value: Variant)
Value

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;
}
Pełen przykład: Funkcja niestandardowa

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.