bcquality/community/knowledge/ui/validate-request-page-input-in-onqueryclosepage.good.al
Kilian Seizinger 182180913e
ShowMandatory + OnQueryClosePage Check (#147)
* ShowMandatory + OnQueryClosePage Check

* Tighten mandatory-field review guidance

Require explicit ShowMandatory in the good sample, acknowledge that NotBlank marking is unreliable, and limit findings to visible editable controls on paths where users must supply a value.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>

Copilot-Session: 89dba8c8-6529-4b60-956f-875a59be499d

---------

Co-authored-by: Jesper Schulz-Wedde <jesper.schulzwedde@microsoft.com>
Copilot-Session: 89dba8c8-6529-4b60-956f-875a59be499d
2026-09-02 15:21:06 +02:00

62 lines
1.7 KiB
AL

report 50547 "Sample Statement Good"
{
ApplicationArea = All;
UsageCategory = ReportsAndAnalysis;
Caption = 'Sample Statement Good';
dataset
{
dataitem(CustLedgerEntry; "Cust. Ledger Entry")
{
column(CustomerNo; "Customer No.") { }
column(Amount; Amount) { }
}
}
requestpage
{
layout
{
area(content)
{
group(Options)
{
field(StatementDateField; StatementDate)
{
ApplicationArea = All;
Caption = 'Statement Date';
ToolTip = 'Specifies the date the statement is printed for.';
ShowMandatory = true;
}
}
}
}
trigger OnQueryClosePage(CloseAction: Action): Boolean
begin
// Only when the user confirmed the run. Erroring on Cancel or Esc
// would trap the user in a page that refuses to close. The error
// itself keeps the page open, so the date can be fixed in place.
if CloseAction = Action::OK then
CheckStatementDate();
end;
}
var
StatementDate: Date;
StatementDateMissingErr: Label 'Enter a statement date.';
trigger OnPreReport()
begin
// The same check for runs that have no request page: job queue entries,
// Report.Run with the request window suppressed, scheduled and
// web-service invocations.
CheckStatementDate();
end;
local procedure CheckStatementDate()
begin
if StatementDate = 0D then
Error(StatementDateMissingErr);
end;
}