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
This commit is contained in:
Kilian Seizinger 2026-09-02 15:21:06 +02:00 • committed by GitHub
parent 7a41d25bbd
commit 182180913e
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
6 changed files with 342 additions and 0 deletions

View file

@ -0,0 +1,62 @@
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;
}