Table 8622 Config. Line
- App
- Base Application
- Namespace
- System.IO
- Versions
- 17-28
Fields, 27Keys, 6Procedures, 13Events, 2
Versions171819202122232425262728
Source29
Source in 29
src/Layers/W1/BaseApp/System/RapidStart/ConfigLine.Table.al579 lines, Copyright (c) Microsoft Corporation. MIT
namespace System.IO;
using System.Environment;
using System.Reflection;
using System.Security.AccessControl;
using System.Security.User;
table 8622 "Config. Line"
{
Caption = 'Config. Line';
DataCaptionFields = Name;
ReplicateData = false;
DataClassification = CustomerContent;
fields
{
field(1; "Line No."; Integer)
{
Caption = 'Line No.';
}
field(2; "Line Type"; Option)
{
Caption = 'Line Type';
OptionCaption = 'Area,Group,Table';
OptionMembers = "Area",Group,"Table";
trigger OnValidate()
begin
if "Line Type" <> "Line Type"::Table then
TestField("Table ID", 0);
end;
}
field(3; "Table ID"; Integer)
{
Caption = 'Table ID';
TableRelation = if ("Line Type" = const(Table)) AllObjWithCaption."Object ID" where("Object Type" = const(Table),
"Object ID" = filter(.. 1260 | 1262 .. 99999999 | 2000000004 | 2000000005));
trigger OnLookup()
var
ConfigValidateMgt: Codeunit "Config. Validate Management";
begin
TestField("Line Type", "Line Type"::Table);
ConfigValidateMgt.LookupTable("Table ID");
Validate("Table ID");
end;
trigger OnValidate()
var
RecRef: RecordRef;
begin
if CurrFieldNo > 0 then
TestField("Line Type", "Line Type"::Table);
if ("Table ID" <> xRec."Table ID") and (xRec."Table ID" > 0) then
TestField("Dimensions as Columns", false);
if ("Table ID" <> xRec."Table ID") and ("Package Code" <> '') then
if Confirm(RemovePackageLinkQst, false) then
"Package Code" := ''
else begin
"Table ID" := xRec."Table ID";
exit;
end;
if "Table ID" > 0 then begin
RecRef.Open("Table ID");
Validate(Name, RecRef.Caption);
"Page ID" := ConfigMgt.FindPage("Table ID");
"Copying Available" := ConfigMgt.TransferContents("Table ID", '', false);
GetRelatedTables();
end else
if xRec."Table ID" > 0 then
Error(DeleteLineInsteadErr);
end;
}
field(4; Name; Text[250])
{
Caption = 'Name';
}
field(5; "Company Filter"; Text[30])
{
Caption = 'Company Filter';
FieldClass = FlowFilter;
TableRelation = Company;
}
field(6; "Company Filter (Source Table)"; Text[30])
{
Caption = 'Company Filter (Source Table)';
FieldClass = FlowFilter;
TableRelation = Company;
}
field(8; "No. of Records"; Integer)
{
BlankZero = true;
CalcFormula = sum("Table Information"."No. of Records" where("Company Name" = field("Company Filter"),
"Table No." = field("Table ID")));
Caption = 'No. of Records';
Editable = false;
FieldClass = FlowField;
}
field(9; "No. of Records (Source Table)"; Integer)
{
BlankZero = true;
CalcFormula = sum("Table Information"."No. of Records" where("Company Name" = field("Company Filter (Source Table)"),
"Table No." = field("Table ID")));
Caption = 'No. of Records (Source Table)';
Editable = false;
FieldClass = FlowField;
}
field(10; "Licensed Table"; Boolean)
{
BlankZero = true;
CalcFormula = exist("License Permission" where("Object Type" = const(TableData),
"Object Number" = field("Table ID"),
"Read Permission" = const(Yes),
"Insert Permission" = const(Yes),
"Modify Permission" = const(Yes),
"Delete Permission" = const(Yes)));
Caption = 'Licensed Table';
Editable = false;
FieldClass = FlowField;
}
field(11; "Promoted Table"; Boolean)
{
Caption = 'Promoted Table';
trigger OnValidate()
begin
if "Promoted Table" then
TestField("Line Type", "Line Type"::Table);
end;
}
field(12; "Dimensions as Columns"; Boolean)
{
Caption = 'Dimensions as Columns';
trigger OnValidate()
var
ConfigPackageTable: Record "Config. Package Table";
begin
TestField("Line Type", "Line Type"::Table);
TestField("Table ID");
TestField("Package Code");
ConfigPackageTable.Get("Package Code", "Table ID");
ConfigPackageTable.SetHideValidationDialog(HideValidationDialog);
ConfigPackageTable.Validate("Dimensions as Columns", "Dimensions as Columns");
ConfigPackageTable.Modify();
end;
}
field(13; "Copying Available"; Boolean)
{
Caption = 'Copying Available';
Editable = false;
}
field(14; "Page ID"; Integer)
{
Caption = 'Page ID';
TableRelation = AllObjWithCaption."Object ID" where("Object Type" = const(Page));
trigger OnLookup()
var
ConfigValidateMgt: Codeunit "Config. Validate Management";
begin
ConfigValidateMgt.LookupPage("Page ID");
Validate("Page ID");
end;
}
field(15; "Page Caption"; Text[250])
{
CalcFormula = lookup(AllObjWithCaption."Object Name" where("Object Type" = const(Page),
"Object ID" = field("Page ID")));
Caption = 'Page Caption';
Editable = false;
FieldClass = FlowField;
}
field(18; "Starting Date"; Date)
{
Caption = 'Starting Date';
trigger OnValidate()
begin
if ("Starting Date" <> 0D) and (xRec."Starting Date" <> 0D) and ("Ending Date" <> 0D) then
"Ending Date" := "Ending Date" + ("Starting Date" - xRec."Starting Date");
end;
}
field(19; "Ending Date"; Date)
{
Caption = 'Ending Date';
}
field(20; "Responsible ID"; Code[50])
{
Caption = 'Responsible ID';
DataClassification = EndUserIdentifiableInformation;
TableRelation = User."User Name";
ValidateTableRelation = false;
trigger OnValidate()
var
UserSelection: Codeunit "User Selection";
begin
UserSelection.ValidateUserName("Responsible ID");
end;
}
field(21; Status; Option)
{
Caption = 'Status';
OptionCaption = ' ,In Progress,Completed,Ignored,Blocked';
OptionMembers = " ","In Progress",Completed,Ignored,Blocked;
}
field(25; "Vertical Sorting"; Integer)
{
Caption = 'Vertical Sorting';
}
field(26; "Data Origin"; Text[50])
{
Caption = 'Data Origin';
}
field(28; Reference; Text[250])
{
Caption = 'Reference';
ExtendedDatatype = URL;
}
field(30; "Licensed Page"; Boolean)
{
BlankZero = true;
CalcFormula = exist("License Permission" where("Object Type" = const(Page),
"Object Number" = field("Page ID"),
"Execute Permission" = const(Yes)));
Caption = 'Licensed Page';
Editable = false;
FieldClass = FlowField;
}
field(31; "No. of Question Groups"; Integer)
{
CalcFormula = count("Config. Question Area" where("Table ID" = field("Table ID")));
Caption = 'No. of Question Groups';
Editable = false;
FieldClass = FlowField;
}
field(32; "Parent Line No."; Integer)
{
Caption = 'Parent Line No.';
}
field(36; "Package Code"; Code[20])
{
Caption = 'Package Code';
TableRelation = "Config. Package";
}
field(37; "Package Caption"; Text[50])
{
CalcFormula = lookup("Config. Package"."Package Name" where(Code = field("Package Code")));
Caption = 'Package Caption';
Editable = false;
FieldClass = FlowField;
}
field(38; "Package Exists"; Boolean)
{
CalcFormula = exist("Config. Package" where(Code = field("Package Code")));
Caption = 'Package Exists';
Editable = false;
FieldClass = FlowField;
}
}
keys
{
key(Key1; "Line No.")
{
Clustered = true;
}
key(Key2; "Line Type", Status, "Promoted Table")
{
}
key(Key3; "Table ID")
{
}
key(Key4; "Vertical Sorting")
{
}
key(Key5; "Line Type", "Parent Line No.")
{
}
key(Key6; "Package Code")
{
}
}
fieldgroups
{
}
trigger OnDelete()
var
ConfigRelatedTable: Record "Config. Related Table";
begin
if CountWorksheetTableOccurrences("Table ID") = 1 then begin
ConfigRelatedTable.SetRange("Table ID", "Table ID");
ConfigRelatedTable.DeleteAll(true);
end;
end;
var
ConfigMgt: Codeunit "Config. Management";
ConfigPackageMgt: Codeunit "Config. Package Management";
DeleteLineInsteadErr: Label 'Delete the line instead.';
#pragma warning disable AA0470
UnsupportedStatusErr: Label 'The status %1 is not supported.';
#pragma warning restore AA0470
RemovePackageLinkQst: Label 'The table you are trying to rename is linked to a package. Do you want to remove the link?';
#pragma warning disable AA0470
BlockedTableErr: Label 'You cannot process line for table %1 and package code %2 because it is blocked.';
#pragma warning restore AA0470
NoDuplicateLinesMsg: Label 'There are no duplicate lines.';
#pragma warning disable AA0470
NoOfDuplicateLinesDeletedMsg: Label '%1 line(s) were deleted.';
#pragma warning restore AA0470
protected var
HideValidationDialog: Boolean;
procedure CheckBlocked()
begin
if Status = Status::Blocked then
Error(BlockedTableErr, "Table ID", "Package Code");
end;
procedure ShowTableData()
var
IsHandled: Boolean;
begin
IsHandled := false;
OnBeforeShowTableData(Rec, IsHandled);
if IsHandled then
exit;
if ("Line Type" = "Line Type"::Table) and ("Page ID" <> 0) then
PAGE.Run("Page ID");
end;
procedure ShowQuestions()
var
ConfigQuestionArea: Record "Config. Question Area";
ConfigQuestionAreaPage: Page "Config. Question Area";
begin
TestField("Line Type", "Line Type"::Table);
TestField("Table ID");
ConfigQuestionArea.SetRange("Table ID", "Table ID");
ConfigQuestionArea.FindFirst();
ConfigQuestionArea.Reset();
ConfigQuestionArea.FilterGroup(2);
ConfigQuestionArea.SetRange("Table ID", "Table ID");
ConfigQuestionArea.FilterGroup(0);
ConfigQuestionAreaPage.SetTableView(ConfigQuestionArea);
ConfigQuestionAreaPage.RunModal();
Clear(ConfigQuestionAreaPage);
end;
procedure GetProgress(): Integer
var
Total: Integer;
TotalStatusWeight: Decimal;
begin
Total := GetNoTables();
TotalStatusWeight := GetTotalStatusWeight();
if Total = 0 then
exit(0);
exit(Round(100 * TotalStatusWeight / Total, 1));
end;
procedure GetNoOfDirectChildrenTables(): Integer
var
ConfigLine: Record "Config. Line";
begin
ConfigLine.Reset();
ConfigLine.SetCurrentKey("Line Type");
ConfigLine.SetRange("Line Type", ConfigLine."Line Type"::Table);
ConfigLine.SetRange("Parent Line No.", Rec."Line No.");
exit(ConfigLine.Count);
end;
procedure GetDirectChildrenTablesStatusWeight() StatusWeight: Decimal
var
ConfigLine: Record "Config. Line";
begin
ConfigLine.Reset();
ConfigLine.SetCurrentKey("Line Type");
ConfigLine.SetRange("Line Type", ConfigLine."Line Type"::Table);
ConfigLine.SetRange("Parent Line No.", Rec."Line No.");
if ConfigLine.FindSet() then
repeat
StatusWeight += ConfigLine.GetLineStatusWeight();
until ConfigLine.Next() = 0;
end;
procedure GetNoTables() Total: Integer
var
ConfigLine: Record "Config. Line";
begin
case "Line Type" of
"Line Type"::Table:
Total := 0;
"Line Type"::Group:
Total := GetNoOfDirectChildrenTables();
"Line Type"::Area:
begin
Total := GetNoOfDirectChildrenTables();
ConfigLine.SetRange("Line Type", ConfigLine."Line Type"::Group);
ConfigLine.SetRange("Parent Line No.", "Line No.");
if ConfigLine.FindSet() then
repeat
Total += ConfigLine.GetNoOfDirectChildrenTables();
until ConfigLine.Next() = 0;
end;
end;
end;
local procedure GetTotalStatusWeight() Total: Decimal
var
ConfigLine: Record "Config. Line";
begin
case "Line Type" of
"Line Type"::Table:
Total := 0;
"Line Type"::Group:
Total := GetDirectChildrenTablesStatusWeight();
"Line Type"::Area:
begin
Total := GetDirectChildrenTablesStatusWeight();
ConfigLine.SetRange("Line Type", ConfigLine."Line Type"::Group);
ConfigLine.SetRange("Parent Line No.", "Line No.");
if ConfigLine.FindSet() then
repeat
Total += ConfigLine.GetDirectChildrenTablesStatusWeight();
until ConfigLine.Next() = 0;
end;
end;
end;
local procedure GetRelatedTables()
var
ConfigRelatedTable: Record "Config. Related Table";
ConfigRelatedField: Record "Config. Related Field";
"Field": Record "Field";
begin
ConfigPackageMgt.SetFieldFilter(Field, "Table ID", 0);
OnGetRelatedTablesOnAfterFieldSetFilters(Rec, Field);
if Field.FindSet() then
repeat
if Field.RelationTableNo <> 0 then
if not ConfigRelatedField.Get("Table ID", Field."No.") then begin
ConfigRelatedField.Init();
ConfigRelatedField."Table ID" := "Table ID";
ConfigRelatedField."Field ID" := Field."No.";
ConfigRelatedField."Relation Table ID" := Field.RelationTableNo;
ConfigRelatedField.Insert();
end;
until Field.Next() = 0;
if ConfigRelatedField.FindSet() then
repeat
if not ConfigRelatedTable.Get(ConfigRelatedField."Table ID", ConfigRelatedField."Relation Table ID") then begin
ConfigRelatedTable."Table ID" := ConfigRelatedField."Table ID";
ConfigRelatedTable."Relation Table ID" := ConfigRelatedField."Relation Table ID";
ConfigRelatedTable.Insert();
end;
until ConfigRelatedField.Next() = 0;
end;
procedure GetLineStatusWeight(): Decimal
begin
case Status of
Status::" ":
exit(0);
Status::Completed, Status::Ignored:
exit(1);
Status::"In Progress", Status::Blocked:
exit(0.5);
else
Error(UnsupportedStatusErr, Status);
end;
end;
local procedure CountWorksheetTableOccurrences(TableID: Integer): Integer
var
ConfigLine: Record "Config. Line";
begin
ConfigLine.SetRange("Table ID", TableID);
exit(ConfigLine.Count);
end;
procedure SetHideValidationDialog(NewHideValidationDialog: Boolean)
begin
HideValidationDialog := NewHideValidationDialog;
end;
procedure GetNoOfRecords(): Integer
begin
exit(GetNoOfDatabaseRecords("Table ID", "Company Filter"));
end;
procedure GetNoOfRecordsSourceTable(): Integer
begin
exit(GetNoOfDatabaseRecords("Table ID", "Company Filter (Source Table)"));
end;
local procedure GetNoOfDatabaseRecords(TableID: Integer; "Filter": Text): Integer
var
RecRef: RecordRef;
begin
if TableID = 0 then
exit(0);
RecRef.Open(TableID, false, Filter);
if not RecRef.ReadPermission() then
exit(0);
exit(RecRef.Count());
end;
procedure GetNoOfRecordsText(): Text
var
RecRef: RecordRef;
begin
if "Table ID" = 0 then
exit;
RecRef.Open("Table ID", false, "Company Filter");
if not RecRef.ReadPermission() then
exit;
exit(Format(RecRef.Count()));
end;
procedure DeleteDuplicateLines()
var
ConfigLine: Record "Config. Line";
TempConfigLine: Record "Config. Line" temporary;
NoOfDuplicateLines: Integer;
begin
if FindSet() then
repeat
TempConfigLine.Reset();
TempConfigLine.SetRange("Line Type", "Line Type"::Table);
TempConfigLine.SetRange("Table ID", "Table ID");
TempConfigLine.SetRange("Package Code", "Package Code");
if not TempConfigLine.IsEmpty() then begin
ConfigLine.Get("Line No.");
ConfigLine.Delete(true);
NoOfDuplicateLines := NoOfDuplicateLines + 1;
end else begin
TempConfigLine.Init();
TempConfigLine := Rec;
TempConfigLine.Insert();
end;
until Next() = 0;
if NoOfDuplicateLines = 0 then
Message(NoDuplicateLinesMsg)
else
Message(NoOfDuplicateLinesDeletedMsg, NoOfDuplicateLines);
end;
[IntegrationEvent(false, false)]
local procedure OnBeforeShowTableData(ConfigLine: Record "Config. Line"; var IsHandled: Boolean)
begin
end;
[IntegrationEvent(false, false)]
local procedure OnGetRelatedTablesOnAfterFieldSetFilters(var ConfigLine: Record "Config. Line"; var "Field": Record "Field")
begin
end;
}