Table extension object

The table extension object allows you to add extra fields or to change some properties on a table provided by Business Central. In this way, you can add data to the same table and treat it as a single table. For example, you might want to create a table extension for a retail winter sports store. In your solution you want to have ShoeSize as an extra field on the customer table. Adding this as an extension allows you to write code for the customer record and also include values for the ShoeSize.

Along with defining other fields, the table extension is where you write trigger code for your extra fields.

When developing a solution for Business Central, you can follow the code layout for a table extension as shown in the example below.

Important

Only tables with the Extensible Property set to true can be extended.

Note

Extension objects can have a name with a maximum length of 30 characters.

Important

System and virtual tables cannot be extended. System tables are created in the ID range of 2.000.000.000 and above. For more information about object ranges, see Object ranges.

Important

Extending tables from Dynamics 365 for Sales isn't currently supported.

Using a table extension to add a key to the base table

Just like in the table object, you can define keys for fields added in the table extension. But you can also add keys for fields that only exist on the table you extend, in case you want to extend the keys provided in the base table definition. See Table keys for examples on how to define keys in a table extension.

Snippet support

Typing the shortcut ttableext creates the basic layout for a table extension object when using the AL Language extension for Microsoft Dynamics 365 Business Central in Visual Studio Code.

Properties

Using a table extension allows you to overwrite some properties on fields in the base table. For a list of Table properties, see Table and table extension properties.

Add tooltips on table fields

Starting in Business Central 2024 release wave 1, you can define tooltips on table fields. When a tooltip is defined on a table field, any page that uses the field automatically inherits the tooltip.

For more information, see Add tooltips to table and page fields.

Table extension syntax

tableextension Id MyExtension extends MyTargetTable
{
    fields
    {
        // Add changes to table fields here
    }
    
    var
        myInt: Integer;
}

Table extension example

This table extension object extends the Customer table object by adding a field ShoeSize, with ID 50116 and the data type Integer. It also contains a procedure to check if the ShoeSize field is filled in.

tableextension 50115 RetailWinterSportsStore extends Customer
{
    fields
    {
        field(50116;ShoeSize;Integer)
        {
            trigger OnValidate();
            begin
                if (rec.ShoeSize < 0) then
                begin
                   message('Shoe size not valid: %1', rec.ShoeSize);
                end;
            end;
        }
    }

    procedure HasShoeSize() : Boolean;
    begin
        exit(ShoeSize <> 0);
    end;

    trigger OnBeforeInsert();
    begin
        if not HasShoeSize then
            ShoeSize := Random(42);
    end;
}

See also

AL development environment
Table overview
Table object
Table, table fields, and table extension properties
Table keys