mirror of
https://github.com/microsoft/BCQuality.git
synced 2026-10-05 14:46:55 +01:00
Forslag: BC page-type conventions (naming, structure, links)
This commit is contained in:
parent
02f0d49654
commit
8ef8209cce
1 changed files with 101 additions and 0 deletions
|
|
@ -0,0 +1,101 @@
|
|||
---
|
||||
bc-version: [all]
|
||||
domain: architecture
|
||||
keywords: [pages, page-design, naming-conventions, page-type, card-page, list-page, factbox, worksheet-page, document-page, rolecenter, cardpageid, autosplitkey]
|
||||
technologies: [al]
|
||||
countries: [w1]
|
||||
application-area: [all]
|
||||
---
|
||||
|
||||
# CURABIS Architecture: BC Page-Type Conventions
|
||||
|
||||
## Description
|
||||
|
||||
Business Central's page types — RoleCenter, Card, List, CardPart, ListPart,
|
||||
Worksheet, Document, ListPlus, plus the system dialog types (Navigate,
|
||||
ConfirmationDialog, StandardDialog, HeadlinePart, API) — each fix a naming
|
||||
pattern and a structural constraint, not just a visual layout. A page whose
|
||||
name, primary-key handling, or linkage (`CardPageID`, `SubPageLink`,
|
||||
`AutoSplitKey`) doesn't match its own type's conventions is either the wrong
|
||||
page type for the job or built inconsistently with the rest of the
|
||||
application, and should be flagged in review even if it compiles and renders.
|
||||
|
||||
## Key Principle
|
||||
|
||||
"Before naming a new page or wiring its links, first ask: which page type is
|
||||
this, and does the source table actually fit that type's structural
|
||||
requirement (e.g. a Card page needs a single-field primary key)? The type
|
||||
fixes the naming suffix, which fields are visible, and which other page it
|
||||
must link back to."
|
||||
|
||||
## The Page Types
|
||||
|
||||
### RoleCenter
|
||||
- **Purpose:** the tailored home page for a role; links to List pages, shows Cues/Activities, may embed system parts (Outlook Inbox, Notes).
|
||||
- **Naming:** role name + `Role Center` (`Order Processor Role Center`).
|
||||
|
||||
### Card
|
||||
- **Purpose:** view/edit one record at a time.
|
||||
- **Naming:** table name + `Card` (`Customer Card`).
|
||||
- **Structural constraint:** always has FastTabs, never plain tabs; the first FastTab is always named `General`. A table only gets a Card page if its primary key has exactly one field — that field is always the first field shown in `General`. A table with a multi-field primary key needs a different page type (List/Worksheet/Tabular), not a Card page.
|
||||
|
||||
### List
|
||||
- **Purpose:** view multiple records from a table at once; also serves as the lookup/drilldown surface.
|
||||
- **Naming:** table name + `List` if the page is not editable (`Customer List`); plural of the table name if it is editable (`Currencies`).
|
||||
- **Structural constraint:** primary-key fields are shown in the left-most columns. Its `CardPageID` property must point at the associated Card page, if one exists.
|
||||
|
||||
### CardPart
|
||||
- **Purpose:** a single-column FactBox — fields or a special control (e.g. picture viewer) for a record shown on another page.
|
||||
- **Naming:** the information it shows + `FactBox` (`Sales Hist. Sell-to FactBox`).
|
||||
|
||||
### ListPart
|
||||
- **Purpose:** a multi-column FactBox, or a subpage (e.g. document lines).
|
||||
- **Naming:** the information it shows + `FactBox` or `SubPage` (`Dimensions FactBox`).
|
||||
- See [[factbox-design]] for `SubPageLink` filtering and SIFT-backed FlowField guidance — this rule only governs naming/classification, not FactBox internals.
|
||||
|
||||
### Worksheet
|
||||
- **Purpose:** multi-record entry page for a Journal (or similar) table; inserted records keep their entry order instead of re-sorting by key.
|
||||
- **Naming:** ends in `Journal` for Journal-table worksheets, otherwise named for the table's purpose.
|
||||
- **Structural constraint:** primary-key fields are never shown; order is preserved via `AutoSplitKey` combined with an `Integer` last-key-field on the source table.
|
||||
|
||||
### Document
|
||||
- **Purpose:** FastTabs plus a lines subpage on one page, lines filtered to the header.
|
||||
- **Naming:** the name of the document it represents (`Sales Invoice`).
|
||||
|
||||
### ListPlus
|
||||
- **Purpose:** like Document, but with multiple lists at the bottom instead of one (`Sales Invoice Statistics`).
|
||||
- **Naming:** follows the same pattern as the record/report it summarizes.
|
||||
|
||||
### Other system/dialog page types
|
||||
`Navigate`, `ConfirmationDialog`, `StandardDialog`, and `HeadlinePart` are
|
||||
fixed system dialog shapes (search-by-transaction, yes/no confirmation,
|
||||
single-input prompt, rotating RoleCenter headlines respectively) — the
|
||||
source material defines no page-name-suffix convention for these, so none
|
||||
is asserted here. `API` pages are governed separately by
|
||||
[[set-required-api-page-properties]], [[api-page-camelcase-properties]], and
|
||||
related rules — do not extend an API page via a page extension; add a new
|
||||
API page instead.
|
||||
|
||||
## Review Checklist
|
||||
|
||||
1. Which page type is this actually, based on structure and use — not the name someone already gave it?
|
||||
2. Does the table's primary key shape fit the page type (single field for Card; multi-field with `AutoSplitKey` for Worksheet)?
|
||||
3. Does the page name carry the expected suffix for its type (`Card`, `List` vs. plural, `FactBox`, `Journal`, `Role Center`)?
|
||||
4. If this is a List page for a Card-backed table, is `CardPageID` set? If this is a ListPart/CardPart, is `SubPageLink` actually filtering to the host record (see [[factbox-design]])?
|
||||
5. Is a Worksheet or List page showing primary-key fields it shouldn't (Worksheet), or hiding them when it should show them (List)?
|
||||
|
||||
A page that mixes conventions from two types (for example, a "Card" page
|
||||
built on a table with a two-field primary key, or a "List" page with no
|
||||
`CardPageID` even though a Card page exists for the same table) signals a
|
||||
design step was skipped, not a stylistic choice.
|
||||
|
||||
## Source
|
||||
|
||||
CURABIS Academy course "Your Key to Application Language for Microsoft
|
||||
Business Central" (rev. July 2022), Chapter 3: Pages, "Page Types and
|
||||
Characteristics" and "Design Pages: Best Practices" (p. 105–112). The source
|
||||
material's naming-convention detail is uneven across page types — several
|
||||
system dialog types (Navigate, ConfirmationDialog, StandardDialog,
|
||||
HeadlinePart) have no documented naming pattern, which is preserved here
|
||||
rather than invented. Cross-checked against the current Base Application
|
||||
page structure as of 2026-08-12 — the taxonomy still holds.
|
||||
Loading…
Add table
Add a link
Reference in a new issue