bcquality/microsoft/knowledge/performance/addloadfields-in-report-onpredataitem.md
Jesper Schulz-Wedde 0e06485027
Correct performance knowledge guidance (#94)
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>

Copilot-Session: 667c64a8-eb36-4440-bc41-6a97d8fb5542

Co-authored-by: Jesper Schulz-Wedde <jesper.schulzwedde@microsoft.com>
2026-07-14 11:26:29 +02:00

26 lines
1.3 KiB
Markdown

---
bc-version: [all]
domain: performance
keywords: [report, addloadfields, onpredataitem, dataitem, partial-record, layout]
technologies: [al]
countries: [w1]
application-area: [all]
---
# Add trigger-only report fields in OnPreDataItem
## Description
Report dataitem field selection is calculated at compile time and once per dataitem type during execution. Fields referenced by dataset columns are selected automatically; fields used only in triggers are not. Use `AddLoadFields` in `OnPreDataItem` to supplement the automatic selection with normal fields that trigger code needs.
## Best Practice
When a dataitem trigger needs an extra field, add that field in `OnPreDataItem` before iteration starts. This supplements the compiler-selected fields and avoids the first just-in-time load and enumerator update when the trigger reads the extra field.
See sample: `addloadfields-in-report-onpredataitem.good.al`.
## Anti Pattern
Listing every dataset column in `AddLoadFields`, or omitting a known trigger-only field because the dataset already uses other fields. The former is redundant; the latter causes a just-in-time load on first access and can cause repeated loads when the record is copied or passed by value.
See sample: `addloadfields-in-report-onpredataitem.bad.al`.