A simple overview report listing all users of a tenant.
This example demonstrates a script-driven report — the query and parameter are set
dynamically via startExpression and buildExpression rather than a static query binding.
| Property | Value |
|---|---|
| Report name | Users |
| Template | Report.frx (FastReport) |
| Cultures | de, en |
| Cluster | User |
| Query | QueryUsers (set via startExpression) |
Unlike fully static reports, UsersSimple uses expressions to configure the query at runtime:
{
"name": "UsersSimple",
"buildExpression": "SetParameter(\"Users.TenantId\", TenantId);",
"startExpression": "SetQuery(\"Users\", \"QueryUsers\"); return null;"
}startExpression registers the QueryUsers API query for the Users data table.
buildExpression injects the current TenantId as a query filter parameter so only
users belonging to the active tenant are returned.
| Column | Description |
|---|---|
Identifier |
Unique user login identifier |
FirstName |
User's first name |
LastName |
User's last name |
# import report definition
Exchange Import.pecmd
# generate PDF (opens automatically)
Report tenant:Report.Tenant user:lucy.smith@foo.com regulation:Report.Regulation report:Users culture:de /pdf /shellopen
| File | Description |
|---|---|
Report.json |
Report definition — query expressions, template references |
Report.frx |
FastReport template — "Clean Lines" layout |
Import.pecmd |
Import script for PayrollConsole |
- Best Practices: Reporting
- Tenants — same layout, tenants with attributes
- Regulation — multi-section regulation detail report
- Dynamic query injection —
startExpressioncallsSetQuery("Users", "QueryUsers")to assign the API query at runtime; no static query binding inReport.jsonrequired - Build-phase parameter injection —
buildExpressioncallsSetParameter("Users.TenantId", TenantId)to filter users to the active tenant before the query runs - Inline expressions instead of script files —
buildExpressionandstartExpressiondeclared directly inReport.json; no separate.csscript file needed for simple logic - Script-free UI — no parameters visible to the user; the tenant filter is injected automatically without any parameter form