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

ANVEDI Callback

Informacje na tej stronie są przeznaczone do instalacji na miejscu z wykorzystaniem wyłącznie plików FOB.

Jeśli używasz Microsoft Dynamics NAV 2017 lub nowszy i Anveo EDI Connect 5.00 oferuje nową logikę dostosowywania zdarzeń. Gorąco zalecamy przejście na nowe zdarzenia integracyjne, jeśli to możliwe, w celu ułatwienia aktualizacji do nowszych wersji.

Codeunit kodująca ANVEDI Callback o ID 5327310 jest centralnym punktem, jeśli chcesz zmienić zachowanie Anveo EDI Connect. Utrzymujemy stałe API tej Codeunit, więc nie musisz nadpisywać tego obiektu podczas aktualizacji naszego modułu. Istnieje kilka funkcji, które mogą być modyfikowane przez Ciebie i kilka funkcji pomocy, których nie wolno modyfikować. Jeśli zaktualizowałeś moduł i brakuje Ci funkcji pomocy, która mogła zostać dodana w nowszej wersji, istnieje drugi obiekt o nazwie EDI Callback - Template with ID 5327313, gdzie znajdziesz nową funkcjonalność.

OnFunction

Moduł ten pozwala na zdefiniowanie własnej funkcjonalności, którą można wywołać z mapowania EDI. Możesz zdefiniować tyle funkcji, ile potrzebujesz. Należy użyć predefiniowanego określenia wielkości liter i dodać wywołania do wbudowanych funkcji FunctionName..FunctionName5.

Nie należy umieszczać żadnego kodu poza zdefiniowaną wcześniej strukturą przypadku, ponieważ funkcja ta może być nazywana dość często, a każdy dodatkowy kod może mieć negatywny wpływ na wydajność.

CASE TRUE OF
  // ... other functions

  FunctionName('EXAMPLE', 'HelloWorld'):
    BEGIN
      FunctionResult('Hello World!');
      EXIT;
    END;
END;
Przykład: Funkcja „Hello World” w funkcji OnFunction

Numer na końcu lokalnej funkcji pomocniczej FunctionName określa liczbę parametrów. Można zdefiniować funkcje o maksymalnie pięciu parametrach. Dostęp do zawartości parametrów można uzyskać poprzez wywołanie funkcji GetTextParameter(ParNumber) i podobnych funkcji dla innych typów danych. Numer parametru jest liczony od „1” do „5”.

Każda funkcja musi zwrócić wartość przez wywołanie funkcji lokalnej o nazwie FunctionResult.

FunctionResult należy wywołać tylko raz. Dobrą praktyką jest dodawanie oświadczenia EXIT bezpośrednio po nim, aby zapobiec wielokrotnemu wywoływaniu funkcji.

Możesz wybierać nazwy obiektów i funkcji według własnego uznania.

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.

W tym miejscu znajduje się pełna lista dostępnych funkcji do wykorzystania w zestawieniu CASE. Od Anveo EDI Connect 4.00:

  • FunctionName(ObjectName: Text; FunctionName: Text)
  • FunctionName1(ObjectName: Text; FunctionName: Text; ParamName1: Text)
  • FunctionName2(ObjectName: Text; FunctionName: Text; ParamName1: Text; ParamName2: Text)
  • FunctionName3(ObjectName: Text; FunctionName: Text; ParamName1: Text; ParamName2: Text; ParamName3: Text)
  • FunctionName4(ObjectName: Text; FunctionName: Text; ParamName1: Text; ParamName2: Text; ParamName3: Text; ParamName4: Text)
  • FunctionName5(ObjectName: Text; FunctionName: Text; ParamName1: Text; ParamName2: Text; ParamName3: Text; ParamName4: Text; ParamName5: Text)

Tutaj znajduje się lista funkcji, których można użyć, aby uzyskać dostęp do parametrów:

  • GetTextParameter(ParNum : Integer) : Text
    • Ustawia parametr i próbuje wpisać go do tekstu typu danych.
  • GetIntegerParameter(ParNum : Integer) : Integer
    • Ustawia parametr i próbuje go rzucić na liczbę całkowitą typu danych.
  • GetBooleanParameter(ParNum : Integer) : Boolean
    • Ustawia parametr i próbuje go oddać na typ danych boolean.
  • GetDecimalParameter(ParNum : Integer) : Decimal
    • Ustawia parametr i próbuje rzucić go na typ danych dziesiętnych.
  • GetDateParameter(ParNum : Integer) : Date
    • Ustawia parametr i próbuje wpisać go do daty typu danych.
  • GetTimeParameter(ParNum : Integer) : Time
    • Ustawia parametr i próbuje wpisać go do czasu typu danych.
  • GetDateTimeParameter(ParNum : Integer) : DateTime
    • Ustawia parametr i próbuje wpisać go do typu danych data/czas.
  • GetParameter(ParNum : Integer;VAR EDIVariant : Codeunit
    • Ustawia parametr jako instancję Codeunit ANVEDI Variant.

CallbackRegistration

Funkcja ta jest wywoływana za każdym razem, gdy coś się dzieje w module, na co można zareagować. Funkcja zawiera strukturę przypadków, gdzie można sprawdzić, co się stało z przekazanym parametrem CallbackSupport.

Nie należy umieszczać żadnego kodu poza zdefiniowaną wcześniej strukturą przypadku, ponieważ funkcja ta może być nazywana dość często, a każdy dodatkowy kod może mieć negatywny wpływ na wydajność.

Ta struktura może wyglądać nietypowo dla programistów C/AL, ale możemy w ten sposób dodać funkcjonalność, bez konieczności aktualizacji Codeunit ANVEDI Callback.

Dostępne zdarzenia są definiowane przez dział ANVEDI Callback Support Codeunit. W kolejnych rozdziałach omówimy dostępne wydarzenia.

OnJobCallback

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

OnAcceptTransmission

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.

Parametry:

EDITransmission

Zapis z tabeli EDI Transmission z danymi, które są znane do tej pory. Zapis nie jest jeszcze zapisany.

Jeśli zareagujesz na to zdarzenie, musisz wywołać następującą funkcję:

HandleAcceptTransmission(Result : Boolean;VAR EDITransmission : Record "ANVEDI Transmission")

Parametry:

Result

Czy odebrać transmisję, czy nie. Wartość True oznacza, że chcesz otrzymać dane, wartość False, że chcesz zignorować transmisję.

EDITransmission

Do tego parametru należy przekazać zapis z wywołania OnAcceptTransmission.

CASE TRUE OF
  // ...
  CallbackSupport.OnAcceptTransmission(ANVEDITransmission):
    BEGIN
      // Ignore files with the name "FileList.txt"
      // Usually you also want to check the communication channel etc. to only run this for specific channels
      IF ANVEDITransmission."Tag 2" = 'FileList.txt' THEN BEGIN
        CallbackSupport.AcceptTransmission(FALSE. ANVEDITransmission);
      END ELSE BEGIN
        CallbackSupport.AcceptTransmission(TRUE. ANVEDITransmission);
      END;
    END;
  END;
END;
Przykład: OnAcceptTransmission

OnBeforeList

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.

Parametry:

EDICommunicationChannel

Określa zapis danych w tabeli EDI Communication Channel, dla których mają być wyszukiwane nowe wiadomości.

To zdarzenie nie wymaga wywołania innej funkcji, ponieważ nie obsługuje żadnych wartości zwrotnych.

OnAfterList

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

Parametry:

EDICommunicationChannel

Określa zapis danych w tabeli EDI Communication Channel.

To zdarzenie nie wymaga wywołania innej funkcji, ponieważ nie obsługuje żadnych wartości zwrotnych.

OnBeforeReceive

To zdarzenie jest wywoływane przed odtworzeniem transmisji.

Parametry:

EDITransmission

Określa zapis danych w tabeli EDI Transmission.

To zdarzenie nie wymaga wywołania innej funkcji, ponieważ nie obsługuje żadnych wartości zwrotnych.

OnAfterReceive

To zdarzenie jest wywoływane po odebraniu transmisji.

Parametry:

EDITransmission

Określa zapis danych w tabeli EDI Transmission.

To zdarzenie nie wymaga wywołania innej funkcji, ponieważ nie obsługuje żadnych wartości zwrotnych.

OnBeforeArchive

Zdarzenie to jest wywoływane przed zarchiwizowaniem transmisji.

Parametry:

EDITransmission

Określa zapis danych w tabeli EDI Transmission.

To zdarzenie nie wymaga wywołania innej funkcji, ponieważ nie obsługuje żadnych wartości zwrotnych.

OnAfterArchive

To zdarzenie jest wywoływane po zarchiwizowaniu transmisji.

Parametry:

EDITransmission

Określa zapis danych w tabeli EDI Transmission.

To zdarzenie nie wymaga wywołania innej funkcji, ponieważ nie obsługuje żadnych wartości zwrotnych.

OnBeforeDelete

Zdarzenie to jest wywoływane przed usunięciem transmisji.

Parametry:

EDITransmission

Określa zapis danych w tabeli EDI Transmission.

To zdarzenie nie wymaga wywołania innej funkcji, ponieważ nie obsługuje żadnych wartości zwrotnych.

OnAfterDelete

Zdarzenie to jest wywoływane po usunięciu transmisji.

Parametry:

EDITransmission

Określa zapis danych w tabeli EDI Transmission.

To zdarzenie nie wymaga wywołania innej funkcji, ponieważ nie obsługuje żadnych wartości zwrotnych.

OnBeforeSend

To zdarzenie jest wywoływane przed wysłaniem transmisji.

Parametry:

EDITransmission

Określa zapis danych w tabeli EDI Transmission.

Reagując na to zdarzenie należy wywołać tę funkcję:

HandleBeforeSendTransmission(Result, EDITransmission)
Result

Czy wysłać transmisję. Wartość True oznacza, że transmisja powinna zostać wysłana.

EDITransmission

Transmisja, którą dostał pan wraz z wezwaniem na imprezę.

OnComposeMessage

Zdarzenie to jest wywoływane podczas komponowania transmisji.

Parametry:

EDITransmission

Określa zapis danych w tabeli EDI Transmission.

To zdarzenie nie wymaga wywołania innej funkcji, ponieważ nie obsługuje żadnych wartości zwrotnych.

OnAfterSend

To zdarzenie jest wywoływane po wysłaniu transmisji.

Parametry:

EDITransmission

Określa rekord danych w tabeli EDI Transmission.

Reagując na to zdarzenie należy wywołać tę funkcję:

HandleAfterSendTransmission(Result, EDITransmission)
Result

Wynik jest obecnie ignorowany.

EDITransmission

Transmisja, którą dostał pan wraz z wezwaniem na imprezę.

OnReplacePlaceholder

Funkcja ta jest wywoływana, gdy oceniany jest łańcuch, który może zawierać zmienne zdefiniowane przez użytkownika, takie jak nazwa pliku.

Poniżej znajduje się przykład:

If Placeholder = 'MyNumber' THEN BEGIN
    IF EDILinkedDocument.FINDSET THEN REPEAT
      RecID := EDILinkedDocument."Record ID";
      IF (RecID.TABLENO = DATABASE::"EDI Document") THEN BEGIN
        RecRef.GET(EDILinkedDocument."Record ID");
        RecRef.SETTABLE(EDIDocument);
        CallbackSupport.HandleReplacePlaceholder(TRUE, EDIDocument."System Document No.");
        EXIT;
      END;
    UNTIL EDILinkedDocument.NEXT = 0;
  
    CallbackSupport.HandleReplacePlaceholder(FALSE, '');
  END ELSE BEGIN
    CallbackSupport.HandleReplacePlaceholder(FALSE, '');
  END;
Przykładowy kod: OnReplacePlacePlaceholder

Parametry:

Placeholder

Nazwa zmiennej pomiędzy nawiasami klamrowymi, dla których wyszukiwana jest wartość.

Reagując na to zdarzenie należy wywołać tę funkcję:

CallbackSupport.HandleReplacePlaceholder(Result,Value)

Parametry:

Result

Czy chcesz zwrócić wartość. Jeśli zwrócisz True, powinieneś określić wartość zmiennej. Możesz pominąć zmienne systemowe.

Value

Wartość, która powinna być użyta.

OnError

Zdarzenie to jest wywoływane w przypadku wystąpienia błędu w kolejce przetwarzania.

Parametry:

EDIProcessingQueue

Przykład EDI Processing Queue tabeli, której przetwarzanie zakończyło się niepowodzeniem.

AfterProcess

Zdarzenie to jest wywoływane po przetworzeniu wpisu w EDI Processing Queue tabeli. Należy sprawdzić status przyjętego wpisu i odpowiednio zareagować.

Parametry:

EDIProcessingQueue

Przykład EDI Processing Queue tabeli, która została przetworzona.

LookupLinkedDocument

Funkcja ta jest wywoływana z listy dokumentów powiązanych, jeśli użytkownik chce otworzyć stronę karty. W module znajduje się kilka predefiniowanych stron i staramy się wrócić do domyślnej strony odnośnika, w przypadku gdy funkcja ta zwraca False.

LookupLinkedDocument(RecRef: RecordRef) : Boolean
RecRef

Rekord, dla którego użytkownik chce otworzyć stronę.

Wartość zwrotu

Wartość boolean. Zwróć wartość True, jeśli strona została otwarta przez tę funkcję; False inaczej.

     CASE RecRef.NUMBER OF
       DATABASE::"Sales Header":
          BEGIN
            RecRef.SETTABLE(SalesHeader);
            PAGE.RUN(PAGE::"Sales Order", SalesHeader);
            EXIT(TRUE);
          END;
      END;
Przykładowy kod: Otwórz stronę karty do zamówienia sprzedaży

BeforeConvert

Ta funkcja jest wywoływana przed uruchomieniem mapping. Połączenie znajduje się wewnątrz transakcji bazy danych mapping. Możesz anulować wykonanie mapping, zanim jeszcze rozpocznie się mapping, zwracając wartość True. Zasadniczo nie zalecamy korzystania z tej funkcji. Jeśli chcesz wywołać niestandardowy kod, skorzystaj z nowszej funkcji CallbackRegistration lub OnFunction.

AfterConvert

Funkcja ta jest wywoływana po pomyślnym zakończeniu mapping. Połączenie znajduje się wewnątrz transakcji bazy danych mapping. Zasadniczo nie zalecamy korzystania z tej funkcji. Jeśli chcesz wywołać niestandardowy kod, skorzystaj z nowszej funkcji CallbackRegistration lub OnFunction.

W Anveo EDI Connect 4.00 dodaliśmy do zdarzeń funkcję CallbackRegistration zwaną OnError i AfterProcess. Proszę skorzystać z nowej funkcji, jeśli to możliwe.

Referencje krzyżowe

Możesz zdefiniować swoją własną logikę powiązań. Funkcja ta jest wywoływana, gdy typ odsyłacza jest ustawiony na wywołanie callback. Często zalecamy stosowanie mapowań zamiast niestandardowego kodu wywołania zwrotnego, aby ułatwić czytanie mapowań. Niestandardowy kod odsyłacza jest z naszego punktu widzenia trudniejszy do utrzymania.

ValidateCrossReferenceNumber

Sprawdź, czy zewnętrzny numer referencyjny jest prawidłowy.

Funkcja ta jest przestarzała i nie powinna być używana.

GetInternalNo

Zwraca wewnętrzny numer z zewnętrznego.

GetInternalNo(TableID: Integer; FieldNo: Integer; RelationTableID: Integer; RelationFieldNo: Integer; RelationTableView: Text[1024]; RelationTableViewPar1: Variant; VAR InternalNo: Code[20]; EDICrossReferenceType: Record 5327361; ExternalNo: Text[64]; EDIProject: Code[20]) : Boolean

GetExternalNo

Zwraca zewnętrzny numer z wewnętrznego.

GetExternalNo(TableID: Integer; FieldNo: Integer; RelationTableID: Integer; RelationFieldNo: Integer; RelationTableView: Text[1024]; RelationTableViewPar1: Variant; InternalNo: Code[20]; EDICrossReferenceType: Record 5327361; VAR ExternalNo: Text[64]; EDIProject: Code[20]) : Boolean

UpdateCrossReference

Jest wywoływany, jeśli użytkownik próbuje zaktualizować odnośnik.

UpdateCrossReference(TableID : Integer; FieldNo: Integer; RelationTableID: Integer; RelationFieldNo: Integer; RelationTableView: Text[1024]; RelationTableViewPar1: Variant; InternalNo: Code[20]; EDICrossReferenceType: Record 5327361; CrossReference: Text[64]; EDIProject : Code[20])

Zdeprecjonowane funkcje

Poniższa funkcjonalność jest tylko częściowo zaimplementowana i tym samym nie jest bezpieczna. Zalecamy korzystanie z domyślnych filtrów bezpieczeństwa Microsoft Dynamics NAV 2013R2 i pozostawienie obu funkcji pustych.

ApplyUserFilter

Pozwala na filtrowanie przekazywanych danych w taki sposób, aby użytkownik mógł je później zmienić. Korzystanie z tej funkcji nie jest już zalecane. Funkcja ta może być usunięta w nowszych wersjach.

ApplySecurityFilter

Pozwala na filtrowanie danych w sposób uniemożliwiający zmianę filtra przez użytkownika. Ta funkcja nie jest wywoływana we wszystkich przypadkach. Korzystanie z tej funkcji nie jest już zalecane. Funkcja ta może być usunięta w nowszych wersjach.