mirror of
https://github.com/microsoft/BCQuality.git
synced 2026-08-06 09:26:52 +01:00
Author 7 remedial BCQuality knowledge articles plus good/bad AL samples (21 files) covering AL master-table and data-model design: - data-modeling: master No. from number series in OnInsert; use codeunit "No. Series" not obsolete NoSeriesManagement; setup table is a singleton; set Last Date Modified in OnModify and OnRename; enforce Blocked in referencing code not in the master. - style: ApplicationArea required on page controls (AS0062). - appsource: object affixes prevent collisions (AS0011). Clean-room authored from own BC knowledge; specifics verified against public sources only (learn.microsoft.com, microsoft/BCApps). Introduces two new domains (data-modeling, appsource). Co-authored-by: Jesper Schulz-Wedde <jesper.schulzwedde@microsoft.com> Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
43 lines
1 KiB
AL
43 lines
1 KiB
AL
// Anti-pattern: an own object with no affix. Another app that also defines a
|
|
// "Loyalty Tier" table cannot be installed alongside this one.
|
|
table 50379 "Loyalty Tier"
|
|
{
|
|
Caption = 'Loyalty Tier';
|
|
DataClassification = CustomerContent;
|
|
|
|
fields
|
|
{
|
|
field(1; "Code"; Code[20])
|
|
{
|
|
Caption = 'Code';
|
|
}
|
|
field(10; Description; Text[100])
|
|
{
|
|
Caption = 'Description';
|
|
}
|
|
}
|
|
|
|
keys
|
|
{
|
|
key(PK; "Code")
|
|
{
|
|
Clustered = true;
|
|
}
|
|
}
|
|
}
|
|
|
|
// Anti-pattern (the common half-measure): the extension object carries the
|
|
// affix, but the field it adds to the standard Customer table does not. That
|
|
// unaffixed field still collides with any other app that adds "Loyalty Points"
|
|
// to Customer, and AS0011 flags it.
|
|
tableextension 50378 "ABC Customer Ext" extends Customer
|
|
{
|
|
fields
|
|
{
|
|
field(50378; "Loyalty Points"; Integer)
|
|
{
|
|
Caption = 'Loyalty Points';
|
|
DataClassification = CustomerContent;
|
|
}
|
|
}
|
|
}
|