Uruchamianie replikacji na poziomie rekordu
Określenie podzestawu rekordów, które mają zostać zreplikowane do określonych odbiorców, może być konieczne w niektórych sytuacjach. Replikacja na poziomie rekordu uwzględnia konfigurację subskrybenta rekordu. Każda tabela może być replikowana na poziomie rekordu. Aby jednak ułatwić użytkownikom zarządzanie subskrypcjami rekordów, zaleca się dodanie akcji Macierz odbiorców rekordów lub akcji Odbiorcy do wybranych list jako rozszerzenia AL aplikacji.
Rozszerzenie MDMS poprzez dodanie akcji do wybranych list
W ramach replikacji na poziomie rekordu dostępne są dwie opcje. Pierwsza to akcja Macierz odbiorcy rekordów, która umożliwia replikację wybranych rekordów, a druga to akcja Odbiorcy, która pozwala na replikację pojedynczego rekordu.
Macierz odbiorcy rekordów
Aby dodać akcję Macierz odbiorcy rekordów do wybranej listy:
- Poproś programistów o przygotowanie następującego rozszerzenia strony dla każdej wybranej listy (listy zapasów, listy dzierżawców, niestandardowych list itp.):
pageextension 50100 "ITI MDMS Item List" extends "Item List"
{
actions
{
addlast(processing)
{
action(ITIRecordReceiversMatrix)
{
ApplicationArea = All;
Caption = 'Record Receivers Matrix';
ToolTip = 'Specify receivers for the selected records.';
Image = Company;
trigger OnAction()
var
Item: Record "Item";
RecordLevelMgt: Codeunit "ITI MDMS Record-Level Mgt.";
RecRef: RecordRef;
begin
CurrPage.SetSelectionFilter(Item);
RecRef.GetTable(Item);
RecordLevelMgt.ShowRecordReceiversMatrix(RecRef);
end;
}
}
}
}
- Dodaj nazwę wybranej listy po słowie kluczowym extends w pierwszym wierszu kodu. na przykład Warunki płatności.
Uwaga
Funkcjonalność replikacji na poziomie rekordu można być zastosowana dla każdej tabeli.
Odbiorcy
Aby dodać akcję Odbiorcy do wybranej listy:
- Poproś programistów o przygotowanie następującego rozszerzenia strony dla każdej wybranej listy (listy zapasów, listy dzierżawców, niestandardowych list itp.):
pageextension 50100 "ITI MDMS Item List" extends "Item List"
{
actions
{
addlast(processing)
{
action(Receivers)
{
ApplicationArea = All;
Caption = 'Receivers';
ToolTip = 'Allow to specify Receivers for current record';
Image = Company;
trigger OnAction()
var
RecordLevelMgt: Codeunit "ITI MDMS Record-Level Mgt.";
begin
Clear(RecordLevelMgt);
RecordLevelMgt.OpenRecordReceivers(Rec.RecordId());
end;
}
}
}
}
- Dodaj nazwę wybranej listy po słowie kluczowym extends w pierwszym wierszu kodu, na przykład Warunki płatności.
Uwaga
Funkcjonalność replikacji na poziomie rekordu można być zastosowana dla każdej tabeli.
Konfigurowanie replikacji na poziomie rekordu
Aby skonfigurować funkcjonalność na poziomie rekordu dla tabeli:
Wybierz ikonę , wprowadź Tabele aktywne dla replikacji z poziomu rekordu, a następnie wybierz powiązane łącze.
Dodaj nowy rekord. Pola dostępne do skonfigurowania to:
- Nr tabeli - Określa numer użytej tabeli.
- Filtrowanie na poziomie rekordu - Określa, czy filtrowanie na poziomie rekordu jest jedynym wykorzystywanym sposobem filtrowania. Aby skrócić całkowity czas przetwarzania replikacji, inne filtry nie zostaną zastosowane.
- Uwzględnij podrzędne wiersze przy subskrypcji - Określa, czy należy uwzględnić wszystkie podrzędne zestawy danych zawierające subskrybowany rekord.
- Sprawdź uprawnienia odbiorcy - Określa, czy rekordy wyświetlane na stronie Odbiorcy rekordów są filtrowane na podstawie uprawnień odbiorcy. Dodatkowe informacje zamieszczono w artykule Uprawnienia odbiorcy.
Wyjątki replikacji na poziomie rekordu
MDMS umożliwia wykluczenie rekordu z replikacji na poziomie rekordu. Procedura wydawcy zdarzenia OnBeforeExportRecord zawiera informacje, czy filtr został ustawiony na poziomie rekordu. Aby wykluczyć rekord z replikacji na poziomie rekordu, można zmienić wartość parametru.
Aby wykluczyć rekord z replikacji na poziomie rekordu:
- Poproś programistę o przygotowanie następującej procedury wydawcy zdarzenia:
[EventSubscriber(ObjectType::Codeunit, Codeunit::"ITI Replication Mgt.", 'OnBeforeExportRecord', '', false, false)]
local procedure OnBeforeExportRecord(ReplicationNo: Code[20]; ReceiverNo: Code[20]; ExportedRecord: RecordRef; IncludeRecord: Boolean; var OverrideIncludeRecord: Boolean; var NewIncludeRecord: Boolean; var UseRecordLevel: Boolean)
begin
if ExportedRecord.Number() in [Database::Customer, Database::Item] then
UseRecordLevel := false;
end;
- Napisz kod procedury na podstawie powyższego szablonu, aby przetworzyć zdarzenie przy użyciu logiki biznesowej.
Konfigurowanie odbiorcy rekordów przy pomocy macierzy odbiorcy rekordów
Replikacja na poziomie rekordu umożliwia konfigurowanie odbiorców wybranego rekordu.
Aby skonfigurować odbiorcę rekordów z macierzą odbiorcy rekordu:
Przejdź do wybranej strony listy i wybierz rekordy.
Wybierz akcję Macierz odbiorcy rekordów.
Uwaga
Należy pamiętać, że akcja Macierz odbiorcy rekordów pojawia się na liście tylko, kiedy została dodana za pomocą rozszerzenia.
Zaznacz pole dla każdego odbiorcy, dla którego należy pobrać rekord.
Opcjonalnie, użyj akcji Subskrypcja seryjna.
Subskrypcja seryjna
Akcja Subskrypcja seryjna umożliwia wybranie rekordów na stronie Macierz odbiorcy rekordów i ich jednoczesną subskrypcję.
Aby użyć akcji Subskrypcja seryjna:
Wybierz rekordy na stronie Macierz odbiorcy rekordów.
Użyj akcji Subskrypcja seryjna.
Sprawdź następujące pola:
Odbiorca - Określa odbiorców, którzy powinni ustawić subskrypcję seryjną wybranych rekordów.
Subskrybuj - Określa, czy wybrane rekordy zostaną zasubskrybowane lub, czy ich subskrypcja powinna zostać cofnięta.
Konfigurowanie odbiorców rekordów
Replikacja na poziomie rekordu umożliwia konfigurowanie odbiorców każdego rekordu.
Aby skonfigurować odbiorców rekordu:
Przejdź do wybranej strony listy i wybierz rekord.
Wybierz akcję Odbiorcy.
Uwaga
Należy pamiętać, że akcja Odbiorcy pojawia się na liście tylko, kiedy została wprowadzona za pomocą rozszerzenia.
Zaznacz pole Jest replikowany dla każdego odbiorcy, dla którego należy pobrać rekord.
Opcjonalnie, użyj następujących funkcji, które są dostępne na stronie Odbiorcy rekordów:
- Subskrybuj wszystko - Umożliwia zaznaczenie wszystkich odbiorców jednocześnie.
- Anuluj subskrypcję wszystkich - Umożliwia odznaczenie wszystkich odbiorców jednocześnie.
Czyszczenie odbiorców rekordów
Jeśli pole Wyczyść odbiorców rekordów jest zaznaczone na stronie Ustawienia MDMS, odbiorcy rekordów są usuwani automatycznie po usunięciu rekordu z firmy głównej.
Aby ręcznie wyczyścić odbiorców nieistniejących rekordów:
Wybierz ikonę , wprowadź Ustawienia MDMS, a następnie wybierz powiązane łącze.
Wybierz akcję Wyczyść odbiorców rekordów.
Informacje dla programistów
Istnieją dwie dodatkowe funkcje, które umożliwiają zaznaczenie/odznaczenie odbiorców rekordów w jednostce kodu ITI MDMS Record-Level Mgt..
SetRecordForAllReceivers
Funkcja umożliwia zaznaczenie/odznaczenie wszystkich odbiorców rekordów dla danego identyfikatora rekordu.
[EventSubscriber(ObjectType::Table, Database::Item, 'OnAfterInsertEvent', '', false, false)]
local procedure OnAfterInsertItemEvent(var Rec: Record Item; RunTrigger: Boolean)
var
MDMSRecordLevelMgt: Codeunit "ITI MDMS Record-Level Mgt.";
begin
MDMSRecordLevelMgt.SetRecordForAllReceivers(Rec.RecordId(), true);
end;
SetRecordReceiver
Funkcja umożliwia zaznaczenie/odznaczenie odbiorców rekordów dla danego identyfikatora rekordu i kodu odbiorcy.
[EventSubscriber(ObjectType::Table, Database::Item, 'OnAfterInsertEvent', '', false, false)]
local procedure OnAfterInsertItemEvent(var Rec: Record Item; RunTrigger: Boolean)
var
MDMSRecordLevelMgt: Codeunit "ITI MDMS Record-Level Mgt.";
begin
MDMSRecordLevelMgt.SetRecordReceiver(Rec.RecordId(), 'DK', true);
end;
OnAfterSetRecordReceiver
Procedura wydawcy zdarzenia jest uruchamiana po wybraniu/cofnięciu wyboru odbiorcy rekordów.
[EventSubscriber(ObjectType::Codeunit, Codeunit::"ITI MDMS Record-Level Mgt.", 'OnAfterSetRecordReceiver', '', false, false)]
local procedure OnAfterSetRecordReceiver(var RecordReceiver: Record "ITI Record Receiver"; IsReplicated: Boolean)
begin
end;