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

ANVEDI Events

Anveo EDI Connect oferuje jedną codeunit dla zdarzeń integracyjnych: Codeunit ANVEDI Events. Możesz reagować na zdarzenia w tej codeunit owej za pośrednictwem własnej codeunit. Zdarzenia są obsługiwane zarówno w wersji FOB, jak i Extension systemu Microsoft Dynamics.

Events

Dostępne Events to:

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

To zdarzenie jest wywoływane, gdy moduł wyszukuje funkcje niestandardowe. Można definiować własne funkcje, korzystając z funkcji zapewnianych przez codeunit ANVEDI Function Register, która jest dostępna pod nazwą Register. codeunit udostępnia dwie funkcje: RegisterFunction i AddParameter.

RegisterFunction oczekuje dwóch parametrów, nazwy obiektu i nazwy funkcji nowej funkcji. Nazwy te mogą być dowolne, 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. Nazwy powinny być krótkie.

Po zarejestrowaniu funkcji można wywołać AddParameter do 5 razy. AddParameter oczekuje nazwy parametru funkcji. W jednym Event można użyć wielu bloków RegisterFunction i AddParameter. Zalecamy jednak rozdzielenie wielu funkcji do wielu detektorów Event.

Register.RegisterFunction('CustomObj', 'MyFunction');
Register.AddParameter('Name');
Register.AddParameter('Value');
Przykład: Korzystanie z rejestru funkcji

Po zarejestrowaniu funkcji należy reagować na jej wywołania. Odbywa się to za pomocą OnFunctionExecution opisanego poniżej.

OnFunctionExecution

procedure OnFunctionExecution(FunctionCall: Codeunit "ANVEDI Function Call")

Event jest wywoływane, gdy moduł szuka niestandardowej implementacji funkcji. Instancja codeunit ANVEDI Function Call jest przekazywana do tego zdarzenia pod nazwą FunctionCall.

Powinieneś sprawdzić, czy FunctionCall pasuje do Twojej niestandardowej funkcji i wykonać dowolny kod tylko wtedy, gdy tak jest. Odbywa się to poprzez wywołanie funkcji Is() z tymi samymi parametrami, z którymi wywołano RegisterFunction w OnFunctionRegistration. Jeśli funkcja Is() zwróci wartość true, można uzyskać dostęp do parametrów, wykonać niestandardowy 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: Reagowanie na wywołanie funkcji

codeunit ANVEDI Function Call udostępnia następujące funkcje:

procedure Is(ObjectName: Text[30];FunctionName: Text[30]): Boolean

Zwraca, czy wywołanie funkcji jest zgodne z określoną sygnaturą funkcji.

procedure SetResult(Value: Variant)

Musisz wywołać tę funkcję, aby pokazać modułowi, że obsłużyłeś wywołanie funkcji. Możesz przekazać wynik funkcji lub po prostu użyć wartości true jako wyniku.

procedure GetTextParameter(ParNum: Integer): Text[1024]

Pobiera parametr z podaną liczbą jako tekst. Indeks zaczyna się od 1.

procedure GetIntegerParameter(ParNum: Integer): Integer

Pobiera parametr z podaną liczbą całkowitą. Indeks zaczyna się od 1.

procedure GetBooleanParameter(ParNum: Integer): Boolean

Pobiera parametr z podaną liczbą jako wartość logiczną. Indeks zaczyna się od 1.

procedure GetDecimalParameter(ParNum: Integer): Decimal

Pobiera parametr z podaną liczbą dziesiętną. Indeks zaczyna się od 1.

procedure GetDateParameter(ParNum: Integer): Date

Pobiera parametr z podaną liczbą jako datą. Indeks zaczyna się od 1.

procedure GetTimeParameter(ParNum: Integer): Time

Pobiera parametr z podaną liczbą jako datą i godziną. Indeks zaczyna się od 1.

procedure GetDateTimeParameter(ParNum: Integer): DateTime

Pobiera parametr z podaną liczbą jako czasem. 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 parametr mógł zostać pobrany. Indeks zaczyna się od 1.

OnJob

procedure OnJob(ParameterDictionary: Codeunit "ANVEDI Data Structures";EventArgs: Codeunit "ANVEDI Event Args")

Do definiowania niestandardowych zadań można użyć codeunit zadania z modułu. codeunit umożliwia obsługę wielu parametrów. Więcej informacji można znaleźć w dokumentacji obsługi zadań.

ParamaterDictionary

Słownik zawierający parametry przekazane do zadania.

EventArgs

Należy ustawić Event na obsłużone, jeśli zadanie zostało przetworzone. 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 jest wywoływana w celu określenia, czy plik lub wiadomość powinny zostać zaakceptowane lub zignorowane przez moduł. Moduł nie przechowuje informacji o tym, czy transmisja została zignorowana i wywołuje tę funkcję za każdym razem, gdy widzi transmisję. Plik nie został jeszcze odczytany, więc decyzję można podjąć jedynie na podstawie dostępnych metadanych.

ANVEDITransmission

Transmisja, dla której pobrano metadane. Należy pamiętać, że w tym momencie nie otrzymano żadnych danych i rekord nie został jeszcze wprowadzony do bazy danych.

EventArgs

Jeśli Event zostało przetworzone, należy ustawić je jako obsłużone. Powinieneś również zwrócić wartość, czy przetworzyć transmisję (ustaw wartość zwracaną na true); lub nie (ustaw ją 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ł zacznie szukać nowych danych. Można tego użyć do wydania zewnętrznego polecenia lub skryptu w celu odebrania plików, zanim moduł wyszuka nowe dane.

EDICommunicationChannel

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

EventArgs

Jeśli zdarzenie zostało przetworzone, należy ustawić Event na handled. 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

Jeśli Event zostało przetworzone, należy ustawić je jako obsłużone. Opis struktury ANVEDI Event Args znajduje się na końcu tego rozdziału.

Kod ten jest wywoływany po wyszukaniu nowych danych przez moduł.

OnBeforeReceive

procedure OnBeforeReceive(ANVEDITransmission: Record "ANVEDI Transmission";EventArgs: Codeunit "ANVEDI Event Args")

To Event jest wywoływane przed pobraniem transmisji. Należy pamiętać, że w tym momencie nie można przerwać przetwarzania. Jeśli chcesz zdecydować, czy pobrać wiadomość, czy nie, użyj OnAcceptTransmission.

ANVEDITransmission

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

EventArgs

Jeśli Event zostało przetworzone, należy ustawić je jako obsłużone. 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 odzyskaniu (można uzyskać dostęp do wiadomości).

EventArgs

Jeśli Event zostało przetworzone, należy ustawić je jako obsłużone. 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 w zdalnej lokalizacji.

EventArgs

Jeśli Event zostało przetworzone, należy ustawić je jako obsłużone. 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 zdalnej lokalizacji.

EventArgs

Jeśli Event zostało przetworzone, należy ustawić je jako obsłużone. 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 w zdalnej lokalizacji.

EventArgs

Jeśli Event zostało przetworzone, należy ustawić je jako obsłużone. 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 z lokalizacji zdalnej.

EventArgs

Jeśli Event zostało przetworzone, należy ustawić je jako obsłużone. 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 zostanie wysłana.

EventArgs

Jeśli Event zostało przetworzone, należy ustawić je jako obsłużone. 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 po utworzeniu transmisji.

ANVEDITransmission

Transmisja, która jest skomponowana.

EventArgs

Jeśli Event zostało przetworzone, należy ustawić je jako obsłużone. 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

Jeśli zdarzenie zostało przetworzone, należy ustawić Event na handled. 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")

Ta funkcja jest wywoływana, gdy oceniany jest ciąg znaków, który może zawierać zmienne zdefiniowane przez użytkownika, takie jak nazwa pliku.

Placeholder

Nazwa symbolu zastępczego. Moduł szuka obecnie wartości, która zastąpi ten konkretny symbol zastępczy. Jeśli chcesz podać wartość, musisz określić wynik i ustawić zdarzenie jako obsługiwane w EventArgs.

ANVEDILinkedDocument

Wstępnie przefiltrowany zapis połączonych dokumentów. Można na przykład użyć tej tabeli, aby uzyskać dokumenty buforowe zawarte w pliku.

EventArgs

Jeśli Event zostało przetworzone, należy ustawić je jako obsłużone. Musisz także zapewnić wartość. Opis struktury ANVEDI Event Args znajduje się na końcu tego rozdziału.

Poniższy przykład pokazuje, jak 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: OnReplacePlaceholder

OnError

procedure OnError(ANVEDIProcessingQueue: Record "ANVEDI Processing Queue";EventArgs: Codeunit "ANVEDI Event Args")

To Event jest wywoływane, gdy w kolejce przetwarzania wystąpi błąd.

EventArgs

Jeśli Event zostało przetworzone, należy ustawić je jako obsłużone. 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")

To Event jest wywoływane po przetworzeniu wpisu w tabeli EDI Processing Queue. Należy sprawdzić status przekazanego wpisu i odpowiednio zareagować.

EventArgs

Jeśli Event zostało przetworzone, należy ustawić je jako obsłużone. Opis struktury ANVEDI Event Args znajduje się na końcu tego rozdziału.

ANVEDI Event Args

Niektóre Events wykorzystują strukturę o nazwie ANVEDI Event Args. Struktura ta umożliwia zwracanie wartości i informowanie modułu, czy zdarzenie zostało obsłużone.

Następujące funkcje są dostępne dla ANVEDI Event Args przekazywanych do Event:

SetHandled(Value: Boolean)
Value

Czy Event zostało obsłużone przez kod użytkownika.

SetResult(Value: Variant)
Value

Wartość zwrotna, jeśli Event oczekuje wartości zwrotnej.

Przykład

Poniższy przykład pokazuje, jak można dodać własną funkcję niestandardową „MYOBJECT.MYFUNC”, która wyświetla 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łny 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 Extension OnPremise są następujące:

{
      "id": "25286BD2-B08A-49F9-B613-64122CCEE4E1",
      "name": "Anveo EDI Connect - OnPremise",
      "publisher": "conion media GmbH",
      "version": "5.x.y.z"
}

Upewnij się, że zastąpiłeś x, y, z poprawnym numerem wersji.

Wartości dla Business Central Online i Universal Code Extension są następujące:

{
      "id": "FC195C4F-19BF-4167-BFE8-6D1FF7D266BC",
      "name": "Anveo EDI Connect",
      "publisher": "conion media GmbH",
      "version": "5.x.y.z"
}

Upewnij się, że zastąpiłeś x, y, z poprawnym numerem wersji. Starsze wersje BC nazywały „id” „appId”.