bcquality/microsoft/knowledge/ui/page-client-expression-must-not-use-in-list.bad.al
Michael Dieringer decbf7136c Add UI knowledge: client-expression in-list and Role Center AccessByPermission
Two ui articles with compiled good/bad samples:
- page-client-expression-must-not-use-in-list: an `in [...]` list in
  Enabled/Visible/Editable/StyleExpr is rejected (AL0573 on actions,
  groups and parts; AL0322 on fields); remediate with an or-chain or a
  global Boolean, not a procedure call. Plain comparisons stay valid.
- rolecenter-permission-gating-must-use-accessbypermission: Role Center
  pages and pageextensions of them cannot host triggers/procedures
  (AL0378/AL0569); gate parts by permission with AccessByPermission,
  with the UI Elements Removal and non-security-boundary caveats.

Wired into al-ui-review worklist tokens and high-signal mappings, and
registered both pairs in the ui review-fixtures override.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-01 23:14:09 +02:00

59 lines
1.2 KiB
AL

enum 50700 "Sample Request Status"
{
Extensible = false;
value(0; New) { Caption = 'New'; }
value(1; "Needs Review") { Caption = 'Needs Review'; }
value(2; Approved) { Caption = 'Approved'; }
}
table 50700 "Sample Request"
{
DataClassification = CustomerContent;
fields
{
field(1; "No."; Code[20]) { }
field(2; Status; Enum "Sample Request Status") { }
}
keys
{
key(PK; "No.") { Clustered = true; }
}
}
page 50700 "Sample Request Card"
{
PageType = Card;
SourceTable = "Sample Request";
ApplicationArea = All;
layout
{
area(Content)
{
field("No."; Rec."No.") { }
field(Status; Rec.Status) { }
}
}
actions
{
area(Processing)
{
action(Approve)
{
Caption = 'Approve';
// AL0573: InListExpression is not valid for client expressions.
Enabled = Rec.Status in [Rec.Status::New, Rec.Status::"Needs Review"];
trigger OnAction()
begin
Rec.Status := Rec.Status::Approved;
Rec.Modify(true);
end;
}
}
}
}