mirror of
https://github.com/microsoft/BCQuality.git
synced 2026-10-06 23:26:55 +01:00
Merge pull request #57 from Curabis/rule/document-reports-should-default-to-word-layout
[BCQuality] Document reports should default to Word layout, not RDLC
This commit is contained in:
commit
5e55e5b197
1 changed files with 83 additions and 0 deletions
|
|
@ -0,0 +1,83 @@
|
||||||
|
---
|
||||||
|
bc-version: [all]
|
||||||
|
domain: performance
|
||||||
|
keywords: [report-layout, word-layout, rdlc, document-report, sandbox-app-domain, rendering]
|
||||||
|
technologies: [al]
|
||||||
|
countries: [w1]
|
||||||
|
application-area: [all]
|
||||||
|
---
|
||||||
|
|
||||||
|
# Document reports should default to a Word layout, not RDLC
|
||||||
|
|
||||||
|
## Description
|
||||||
|
|
||||||
|
When a new or extended report is a document report — an invoice,
|
||||||
|
statement, order confirmation, or any report meant to be printed, emailed,
|
||||||
|
or exported as a single-record document — its default rendering layout
|
||||||
|
should be `Word`, not `RDLC`. This is Microsoft's own current
|
||||||
|
recommendation, not just a style preference: RDLC layouts run in a
|
||||||
|
sandboxed app domain that only lives for the current report invocation,
|
||||||
|
which is slower for UI-related actions (like sending the resulting
|
||||||
|
document by email) than a Word layout, which is not subject to that
|
||||||
|
sandbox constraint.
|
||||||
|
|
||||||
|
This does not apply uniformly to every report. Tabular/list reports with
|
||||||
|
heavy aggregation or complex calculated columns are still often a better
|
||||||
|
fit for RDLC (or Excel), because Word's table-based layout model doesn't
|
||||||
|
handle that as well. The distinguishing question is whether the report
|
||||||
|
represents one structured document per record (Word) or a data listing
|
||||||
|
(RDLC/Excel) — not "RDLC vs. Word" as a blanket choice.
|
||||||
|
|
||||||
|
## Best Practice
|
||||||
|
|
||||||
|
```al
|
||||||
|
report 50100 "Sales Quote Confirmation"
|
||||||
|
{
|
||||||
|
// ...
|
||||||
|
rendering
|
||||||
|
{
|
||||||
|
layout(Word)
|
||||||
|
{
|
||||||
|
Type = Word;
|
||||||
|
LayoutFile = './Layouts/SalesQuoteConfirmation.docx';
|
||||||
|
Caption = 'Word Layout';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
DefaultRenderingLayout = Word;
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
## Anti Pattern
|
||||||
|
|
||||||
|
```al
|
||||||
|
report 50100 "Sales Quote Confirmation"
|
||||||
|
{
|
||||||
|
// ...
|
||||||
|
rendering
|
||||||
|
{
|
||||||
|
layout(RDLC)
|
||||||
|
{
|
||||||
|
Type = RDLC;
|
||||||
|
LayoutFile = './Layouts/SalesQuoteConfirmation.rdl';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
DefaultRenderingLayout = RDLC;
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
Building a document report's default layout in RDLC by default — because
|
||||||
|
it's the more familiar tool, or because a template happened to use it —
|
||||||
|
inherits RDLC's sandboxed-app-domain performance cost for no reason tied
|
||||||
|
to the report's actual content or calculation needs.
|
||||||
|
|
||||||
|
## Source
|
||||||
|
|
||||||
|
Microsoft Learn, "Creating an RDL layout report" and "(Obsolete) Set the
|
||||||
|
Layout Used by a Report": "RDL layouts can result in slower performance
|
||||||
|
with document reports... we recommend that you design Word layouts
|
||||||
|
instead of RDL... reports are not impacted by the security constraints on
|
||||||
|
sandbox app domains like they are with RDL layouts" — and "Document
|
||||||
|
reports (not lists) that use a Word report layout are typically faster
|
||||||
|
than those that use an RDLC report layout." Verified 2026-08-12.
|
||||||
Loading…
Add table
Add a link
Reference in a new issue