These articles capture BC-specific mechanics agents still invert: partial-record JIT on writes, Reset clearing SetLoadFields, HttpClient inside write transactions, and batched number series, plus negative guidance that stops over-eager Query and IsEmpty "fixes". Co-authored-by: Cursor <cursoragent@cursor.com>
1.3 KiB
| bc-version | domain | keywords | technologies | countries | application-area | ||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
performance |
|
|
|
|
Point lookups at a dedicated lookup page, not the full list
Contributions welcome — open a PR to refine or extend this article.
Description
A TableRelation lookup opens the table's LookupPageId. If that is the full list page, the lookup runs that page's triggers, FactBoxes, and calculated fields even though the dropdown never shows them. The base application added dedicated Customer, Vendor, and Item lookup pages for this reason. Agents set LookupPageId to the main list because it already exists.
Best Practice
Give master tables a slim lookup page (PageType = List, few columns, no FactBoxes, no heavy OnAfterGetRecord) and assign it to LookupPageId. Keep the full list for DrillDownPageId and the role-explorer entry.
See sample: use-dedicated-lookup-pages-not-full-lists.good.al.
Anti Pattern
LookupPageId = Page::"... List" on a table that already has (or should have) a lookup page. Opening a field lookup then pays list-page cost. The signal is LookupPageId pointing at a page that declares FactBoxes or a wide repeater.
See sample: use-dedicated-lookup-pages-not-full-lists.bad.al.