Subskrypcje zdarzeń
W artykule opisano, jak rozbudować funkcjonalność przy użyciu niestandardowych rozszerzeń.
Zdarzenia
codeunit 20020851 "ITI ICI Management"
OnBeforeInsertAvailabilityLine(var ITIICIAvailability: Record "ITI ICI Availability"; JsonObj: JsonObject)
Powyższe zdarzenie jest wywoływane po otrzymaniu odpowiedzi z danymi dostępności i występuje bezpośrednio przed wstawieniem zapisu dostępności. Można je wykorzystać do skopiowania dodatkowych pól z odpowiedzi w formacie json.
Pola są wstawiane do obiektów w formacie json przy użyciu nazw ze strony 20020852 ITI ICI Availability WS. Spacje zastąpione przez znaki podkreślenia i kropki są usuwane, na przykład Nr zapasu zamienia się na Nr_zapasu.
OnBeforeInsertCustomerBalanceLine(var ITIICICustomerBalance: Record "ITI ICI Customer Balance"; JsonObj: JsonObject)
Powyższe zdarzenie jest wywoływane po otrzymaniu odpowiedzi z danymi nabywcy i występuje bezpośrednio przed wstawieniem zapisu salda nabywcy. Można je wykorzystać do skopiowania dodatkowych pól z odpowiedzi w formacie json.
Pola są wstawiane do obiektów w formacie json przy użyciu nazw ze strony 20020852 ITI ICI Availability WS. Spacje zastąpione przez znaki podkreślenia i kropki są usuwane.
OnBeforeInsertCustomerBalanceDetailLine(var ITIICICustLEntryBuffer: Record "ITI ICI Cust. L. Entry Buffer"; JsonObj: JsonObject)
Powyższe zdarzenie jest wywoływane po otrzymaniu odpowiedzi z danymi nabywcy i występuje bezpośrednio przed wstawieniem tymczasowego zapisu księgi nabywców. Można je wykorzystać do skopiowania dodatkowych pól z odpowiedzi w formacie json.
Pola są wstawiane do obiektów w formacie json przy użyciu nazw ze strony 20020858 ITI ICI Cust. Ledger Entry WS. Spacje zastąpione przez znaki podkreślenia i kropki są usuwane, na przykład Nr dokumentu zamienia się na Nr_dokumentu.
codeunit 20020852 "ITI ICI Sender Mgt."
OnCreateAvailabilityLine(var Item: Record Item; var ITIICIAvailability: Record "ITI ICI Availability" temporary)
To zdarzenie jest wywoływane po otrzymaniu żądania danych dostępności i utworzeniu odpowiedzi. Zdarzenie występuje dla każdego zapasu, wariantu oraz kombinacji lokalizacji, które są zgodne z filtrami (zapasów i wariantów) oraz ustawieniami (lokalizacji).
Można ich użyć, aby uzupełnić dodatkowe pola w buforze. Zapas jest przekazywany jako zmienna, aby zachować filtry lokalizacji i wariantów i umożliwić wywołanie funkcji CalcFields. Pola należy uzupełnić przy użyciu operatora += zamiast :=, aby zapewnić zgodność wyniku z sumą wszystkich lokalizacji scenariusza.
OnCreateCustomerBalanceLine(Customer: Record Customer; var ITIICICustomerBalance: Record "ITI ICI Customer Balance" temporary)
To zdarzenie jest wywoływane po otrzymaniu żądania danych nabywcy i utworzeniu odpowiedzi. Zdarzenie występuje dla każdego nabywcy zgodnego z filtrami.
Można ich użyć, aby uzupełnić dodatkowe pola w buforze.
Przykład
Rozszerzenie tabeli
Należy dodać nowe pola do rozszerzonej tabeli.
tableextension 50149 "ITIICIAvailability" extends "ITI ICI Availability"
{
fields
{
field(50149; "Description"; Text[100])
{
}
field(50148; "Sales (Qty.)"; Decimal)
{
}
}
}
Rozszerzenia strony
Należy dodać nowe pola do strony Usługi sieci Web. Jeśli pola są widoczne w przeglądzie dostępności, można je dodać do strony Przegląd. Nie zaleca się używania spacji i kropek w nazwach pól na stronie Usługi sieci Web, ponieważ zostaną wykorzystane dla obiektów typu json.
```cal pageextension 50148 MyExtension2 extends "ITI ICI Availability WS" { layout { addlast(Group) { field(Description; "Description") { ApplicationArea = All; } field(SalesQty; "Sales (Qty.)") { ApplicationArea = All; } } } }
pageextension 50149 MyExtension extends "ITI ICI Availability Overview" { layout { addlast(Group) { field(Description; "Description") { ApplicationArea = All; } field(SalesQty; "Sales (Qty.)") { ApplicationArea = All; } } } } ```
Dodawanie danych do bufora
Wszystkie dane zostaną poddane kalkulacji i dodane do bufora.
[EventSubscriber(ObjectType::Codeunit, Codeunit::"ITI ICI Sender Mgt.", 'OnCreateAvailabilityLine', '', false, false)]
local procedure MyProcedure(var Item: Record Item; var ITIICIAvailability: Record "ITI ICI Availability")
begin
Item.CalcFields("Sales (Qty.)");
ITIICIAvailability."Sales (Qty.)" += Item."Sales (Qty.)";
ITIICIAvailability."Description" := item.Description;
end;
Odczytywanie danych z pliku json
Wartości należy pobrać z obiektu typu json, odczytać jako poprawne typy i przypisać do wybranych pól.
[EventSubscriber(ObjectType::Codeunit, Codeunit::"ITI ICI Management", 'OnBeforeInsertAvailabilityLine', '', false, false)]
local procedure MyProcedure2(JsonObj: JsonObject; var ITIICIAvailability: Record "ITI ICI Availability")
var
jsonTok: JsonToken;
begin
JsonObj.Get('Description', jsonTok);
ITIICIAvailability."Description" := jsonTok.AsValue().AsText();
JsonObj.Get('SalesQty', jsonTok);
ITIICIAvailability."Sales (Qty.)" := jsonTok.AsValue().AsDecimal();
end;
Salda nabywcy
Proces przeglądu salda nabywcy można zmodyfikować podobnie do dostępności zapasu.
Strona usługi sieci Web Dane nabywcy bazuje na tabeli zawierającej zapisy księgi nabywców, dzięki czemu, aby dodać nowe pole do odpowiedzi, nie jest potrzebna znajomość kodu - wystarczy dodać pole na stronie. Kod jest wymagany jedynie do odczytu danych z obiektu o rozszerzeniu json.