Cue tiles, Activities CardPart, and FlowFields with drill-down for BC Role Centers
—
Pending
Does it follow best practices?
Impact
Pending
No eval scenarios have been run
Pending
The risk profile of this skill
Prerequisites: Identify source tables, filter criteria, and target Role Center (e.g., Order Processor 9006, Accountant 9027).
Architecture: Role Center Page → Activities CardPart (CueGroups) → Cue Table (FlowFields with CalcFormula counts)
The Cue Table contains FlowFields that calculate counts from source records.
Key patterns:
CalcFormula = count(...)table <ID> "<PREFIX> <Area> Cue"
{
Caption = '<Area> Cue';
DataClassification = CustomerContent;
fields
{
field(1; "Primary Key"; Code[10])
{
Caption = 'Primary Key';
DataClassification = SystemMetadata;
}
field(10; "<Status1> <Records>"; Integer)
{
CalcFormula = count("<Source Table>" where(
"<FilterField1>" = const(<Value1>),
"<StatusField>" = const(<Status1>)));
Caption = '<Status1> <Records>';
ToolTip = 'Number of <records> with status <Status1>';
Editable = false;
FieldClass = FlowField;
}
field(20; "<Status2> <Records>"; Integer)
{
CalcFormula = count("<Source Table>" where(
"<FilterField1>" = const(<Value1>),
"<StatusField>" = const(<Status2>)));
Caption = '<Status2> <Records>';
ToolTip = 'Number of <records> with status <Status2>';
Editable = false;
FieldClass = FlowField;
}
// Add more cue fields as needed...
}
keys
{
key(PK; "Primary Key")
{
Clustered = true;
}
}
}The Activities page displays the cue tiles and handles drill-down navigation.
Key patterns:
page <ID> "<PREFIX> <Area> Activities"
{
Caption = '<Area>';
PageType = CardPart;
RefreshOnActivate = true;
SourceTable = "<PREFIX> <Area> Cue";
layout
{
area(content)
{
cuegroup(<GroupName>)
{
Caption = '<Group Title>';
field("<Field1>"; Rec."<Field1>")
{
ApplicationArea = All;
DrillDownPageID = "<Target List Page>";
ToolTip = '<Tooltip>';
trigger OnDrillDown()
var
SourceRec: Record "<Source Table>";
begin
SourceRec.SetRange("<FilterField1>", <Value1>);
SourceRec.SetRange("<StatusField>", <StatusValue>);
Page.Run(Page::"<Target List Page>", SourceRec);
end;
}
field("<Field2>"; Rec."<Field2>")
{
ApplicationArea = All;
DrillDownPageID = "<Target List Page>";
ToolTip = '<Tooltip>';
Style = Attention; // Yellow highlight
trigger OnDrillDown()
// ... similar pattern
}
field("<Field3>"; Rec."<Field3>")
{
ApplicationArea = All;
Style = Favorable; // Green highlight
// ...
}
}
}
}
trigger OnOpenPage()
begin
Rec.Reset();
if not Rec.Get() then begin
Rec.Init();
Rec.Insert();
end;
end;
}Add your Activities page to an existing Role Center.
Key patterns:
addafter or addbefore for positioningpageextension <ID> "<PREFIX> <RoleCenterName> Ext" extends "<RoleCenterPageName>"
{
layout
{
addafter(<ExistingControlName>)
{
part("<PREFIX> <Area> Activities"; "<PREFIX> <Area> Activities")
{
ApplicationArea = All;
Caption = '<Area>';
}
}
}
actions
{
addlast(Sections)
{
group(<PREFIX><Area>Section)
{
Caption = '<Area>';
Image = Setup;
action(<PREFIX><Action1>)
{
Caption = '<Action Title>';
ApplicationArea = All;
ToolTip = '<Tooltip>';
RunObject = Page "<Target Page>";
}
}
}
}
}Cue Styles: Attention (yellow), Favorable (green), Unfavorable (red), Subordinate (gray), Ambiguous (orange)
Common Role Centers: Order Processor (9006), Accountant (9027), Business Manager (9022), Sales Manager (9005), Purchasing Agent (9007)
Best Practices: Efficient CalcFormula filters • OnDrillDown must match CalcFormula filters • Single record table (Primary Key = '') • RefreshOnActivate = true
See references/ folder for:
cue-patterns.md - Complete code examples