Page 593 Change Log Setup (Table) List, source in 29
Source29
src/Layers/W1/BaseApp/System/ChangeLog/ChangeLogSetupTableList.Page.al286 lines, Copyright (c) Microsoft Corporation. MIT
namespace System.Diagnostics;
using System.Reflection;
using System.Utilities;
page 593 "Change Log Setup (Table) List"
{
Caption = 'Change Log Setup (Table) List';
DeleteAllowed = false;
InsertAllowed = false;
LinksAllowed = true;
PageType = List;
SourceTable = AllObjWithCaption;
SourceTableTemporary = true;
layout
{
area(content)
{
repeater(Control1)
{
ShowCaption = false;
field("Object ID"; Rec."Object ID")
{
ApplicationArea = Basic, Suite;
Caption = 'ID';
Editable = false;
ToolTip = 'Specifies the ID of the table. ';
}
field("Object Caption"; Rec."Object Caption")
{
ApplicationArea = Basic, Suite;
Caption = 'Name';
Editable = false;
ToolTip = 'Specifies the name of the table.';
}
field(LogInsertion; ChangeLogSetupTable."Log Insertion")
{
ApplicationArea = Basic, Suite;
Caption = 'Log Insertion';
Editable = PageIsEditable;
Enabled = PageIsEditable;
OptionCaption = ' ,Some Fields,All Fields';
ToolTip = 'Specifies where insertions of new data are logged. Blank: No insertions in any fields are logged. Some fields: Insertions are logged for selected fields. All fields: Insertions are logged for all fields.';
trigger OnAssistEdit()
begin
ChangeLogSetupTable.TestField("Log Insertion", ChangeLogSetupTable."Log Insertion"::"Some Fields");
AssistEdit();
end;
trigger OnValidate()
var
ConfirmManagement: Codeunit "Confirm Management";
NewValue: Option;
begin
if ChangeLogSetupTable."Table No." <> Rec."Object ID" then begin
NewValue := ChangeLogSetupTable."Log Insertion";
GetRec();
ChangeLogSetupTable."Log Insertion" := NewValue;
end;
if xChangeLogSetupTable.Get(ChangeLogSetupTable."Table No.") then
if (xChangeLogSetupTable."Log Insertion" = xChangeLogSetupTable."Log Insertion"::"Some Fields") and
(xChangeLogSetupTable."Log Insertion" <> ChangeLogSetupTable."Log Insertion")
then
if ConfirmManagement.GetResponseOrDefault(
StrSubstNo(RemoveSelectionsQst, xChangeLogSetupTable.FieldCaption("Log Insertion"), xChangeLogSetupTable."Log Insertion"), true)
then
ChangeLogSetupTable.DelChangeLogFields(0);
ChangeLogSetupTableLogInsertio();
end;
}
field(LogModification; ChangeLogSetupTable."Log Modification")
{
ApplicationArea = Basic, Suite;
Caption = 'Log Modification';
Editable = PageIsEditable;
Enabled = PageIsEditable;
OptionCaption = ' ,Some Fields,All Fields';
ToolTip = 'Specifies that any modification of data is logged.';
trigger OnAssistEdit()
begin
ChangeLogSetupTable.TestField("Log Modification", ChangeLogSetupTable."Log Modification"::"Some Fields");
AssistEdit();
end;
trigger OnValidate()
var
ConfirmManagement: Codeunit "Confirm Management";
NewValue: Option;
begin
if ChangeLogSetupTable."Table No." <> Rec."Object ID" then begin
NewValue := ChangeLogSetupTable."Log Modification";
GetRec();
ChangeLogSetupTable."Log Modification" := NewValue;
end;
if xChangeLogSetupTable.Get(ChangeLogSetupTable."Table No.") then
if (xChangeLogSetupTable."Log Modification" = xChangeLogSetupTable."Log Modification"::"Some Fields") and
(xChangeLogSetupTable."Log Modification" <> ChangeLogSetupTable."Log Modification")
then
if ConfirmManagement.GetResponseOrDefault(
StrSubstNo(RemoveSelectionsQst, xChangeLogSetupTable.FieldCaption("Log Modification"), xChangeLogSetupTable."Log Modification"), true)
then
ChangeLogSetupTable.DelChangeLogFields(1);
ChangeLogSetupTableLogModifica();
end;
}
field(LogDeletion; ChangeLogSetupTable."Log Deletion")
{
ApplicationArea = Basic, Suite;
Caption = 'Log Deletion';
Editable = PageIsEditable;
Enabled = PageIsEditable;
OptionCaption = ' ,Some Fields,All Fields';
ToolTip = 'Specifies that any deletion of data is logged.';
trigger OnAssistEdit()
begin
ChangeLogSetupTable.TestField("Log Deletion", ChangeLogSetupTable."Log Deletion"::"Some Fields");
AssistEdit();
end;
trigger OnValidate()
var
ConfirmManagement: Codeunit "Confirm Management";
NewValue: Option;
begin
if ChangeLogSetupTable."Table No." <> Rec."Object ID" then begin
NewValue := ChangeLogSetupTable."Log Deletion";
GetRec();
ChangeLogSetupTable."Log Deletion" := NewValue;
end;
if xChangeLogSetupTable.Get(ChangeLogSetupTable."Table No.") then
if (xChangeLogSetupTable."Log Deletion" = xChangeLogSetupTable."Log Deletion"::"Some Fields") and
(xChangeLogSetupTable."Log Deletion" <> ChangeLogSetupTable."Log Deletion")
then
if ConfirmManagement.GetResponseOrDefault(
StrSubstNo(RemoveSelectionsQst, xChangeLogSetupTable.FieldCaption("Log Deletion"), xChangeLogSetupTable."Log Deletion"), true)
then
ChangeLogSetupTable.DelChangeLogFields(2);
ChangeLogSetupTableLogDeletion();
end;
}
}
}
}
actions
{
}
trigger OnAfterGetRecord()
begin
GetRec();
end;
trigger OnAfterGetCurrRecord()
begin
PageIsEditable := CurrPage.Editable();
end;
trigger OnOpenPage()
begin
Rec.FilterGroup(2);
Rec.SetRange("Object Type", Rec."Object Type"::Table);
Rec.SetRange("Object ID", 0, 2000000000);
MonitorSensitiveField.ExcludeMonitorTablesFromChangeLog(Rec);
Rec.FilterGroup(0);
end;
var
ChangeLogSetupTable: Record "Change Log Setup (Table)";
xChangeLogSetupTable: Record "Change Log Setup (Table)";
MonitorSensitiveField: Codeunit "Monitor Sensitive Field";
RemoveSelectionsQst: Label 'You have changed the %1 field to no longer be %2. Do you want to remove the field selections?', Comment = '%1: Field caption, %2: The selected log action. Example: You have changed the Log Modification field to no longer be Some Fields';
CannotSelectTableErr: Label 'Change log cannot be enabled for the table %1.', Comment = '%1: Table caption.';
PageIsEditable: Boolean;
ChangeLogSettingsUpdated: Boolean;
local procedure AssistEdit()
var
"Field": Record "Field";
ChangeLogSetupFieldList: Page "Change Log Setup (Field) List";
begin
Field.FilterGroup(2);
Field.SetRange(TableNo, Rec."Object ID");
Field.SetFilter(ObsoleteState, '<>%1', Field.ObsoleteState::Removed);
Field.FilterGroup(0);
ChangeLogSetupFieldList.SelectColumn(
ChangeLogSetupTable."Log Insertion" = ChangeLogSetupTable."Log Insertion"::"Some Fields",
ChangeLogSetupTable."Log Modification" = ChangeLogSetupTable."Log Modification"::"Some Fields",
ChangeLogSetupTable."Log Deletion" = ChangeLogSetupTable."Log Deletion"::"Some Fields");
ChangeLogSetupFieldList.SetTableView(Field);
ChangeLogSetupFieldList.Run();
end;
local procedure UpdateRec()
var
IsHandled: Boolean;
begin
IsHandled := false;
OnBeforeUpdateRec(Rec, ChangeLogSetupTable, IsHandled);
if IsHandled then
exit;
if ChangeLogSetupTable."Table No." = Database::"Change Log Entry" then begin
ChangeLogSetupTable.CalcFields("Table Caption");
Error(CannotSelectTableErr, ChangeLogSetupTable."Table Caption");
end;
if (ChangeLogSetupTable."Log Insertion" = ChangeLogSetupTable."Log Insertion"::" ") and
(ChangeLogSetupTable."Log Modification" = ChangeLogSetupTable."Log Modification"::" ") and
(ChangeLogSetupTable."Log Deletion" = ChangeLogSetupTable."Log Deletion"::" ")
then begin
if ChangeLogSetupTable.Delete() then;
end else
if not ChangeLogSetupTable.Modify() then
ChangeLogSetupTable.Insert();
ChangeLogSettingsUpdated := true;
end;
local procedure GetRec()
begin
if not ChangeLogSetupTable.Get(Rec."Object ID") then begin
ChangeLogSetupTable.Init();
ChangeLogSetupTable."Table No." := Rec."Object ID";
end;
OnAfterGetRec(ChangeLogSetupTable);
end;
procedure SetSource()
var
AllObjWithCaption: Record AllObjWithCaption;
begin
Rec.DeleteAll();
AllObjWithCaption.SetCurrentKey("Object Type", "Object ID");
AllObjWithCaption.SetRange("Object Type", Rec."Object Type"::Table);
AllObjWithCaption.SetRange("Object ID", 0, 2000000006);
if AllObjWithCaption.Find('-') then
repeat
Rec := AllObjWithCaption;
Rec.Insert();
until AllObjWithCaption.Next() = 0;
Rec.FindFirst();
end;
procedure IsChangeLogSettingsUpdated(): Boolean
begin
exit(ChangeLogSettingsUpdated);
end;
local procedure ChangeLogSetupTableLogInsertio()
begin
UpdateRec();
end;
local procedure ChangeLogSetupTableLogModifica()
begin
UpdateRec();
end;
local procedure ChangeLogSetupTableLogDeletion()
begin
UpdateRec();
end;
[IntegrationEvent(false, false)]
local procedure OnAfterGetRec(var ChangeLogSetupTable: Record "Change Log Setup (Table)")
begin
end;
[IntegrationEvent(false, false)]
local procedure OnBeforeUpdateRec(var AllObjWithCaption: Record AllObjWithCaption; ChangeLogSetupTable: Record "Change Log Setup (Table)"; var IsHandled: Boolean)
begin
end;
}