Custom columns

Quality Control (BC)  •  Article  •  8/26/2026  • 

Custom columns allow you to add additional data columns to Quality Control App list tables via a per-tenant extension (PTE). Columns are populated dynamically per row when the table loads.

Supported tables

Custom columns can be added to the following tables:

  • QC check list
  • Posted QC check list
  • QC action list
  • Posted QC action list

CustomColumn object

Each custom column is represented as a JsonObject with the following fields:

FieldTypeDescription
columnCaptionstringThe column header displayed in the app.
columnValuestringThe value to display for the current row.
isFilterablebooleanWhen true, the column's values are included in the app's search functionality. This value must be consistent across all rows for columns with the same caption.

Events

To add columns to a table, subscribe to the relevant event and append CustomColumn objects to the CustomColumns parameter.

QCABCQualityCheck92FDW.Codeunit.al

[IntegrationEvent(false, false)]
local procedure OnGetQualityCheckCustomColumns(QCCheckHeader: Record QCCheckHeader92FDW; var CustomColumns: JsonArray)
begin
end;

[IntegrationEvent(false, false)]
local procedure OnGetPostedQualityCheckCustomColumns(PostedQCCheckHeader: Record PostedQCCheckHeader92FDW; var CustomColumns: JsonArray)
begin
end;
QCABCAction92FDW.Codeunit.al

[IntegrationEvent(false, false)]
local procedure OnGetQualityActionCustomColumns(QCActionHeader: Record QCActionHeader92FDW; var CustomColumns: JsonArray)
begin
end;

[IntegrationEvent(false, false)]
local procedure OnGetPostedQualityActionCustomColumns(PostedQCActionHeader: Record PostedQCActionHeader92FDW; var CustomColumns: JsonArray)
begin
end;

The record parameter in each event represents the row currently being rendered. Use it to read field values from the record and populate columnValue accordingly.

Example

The following example adds a custom column showing the item description to the QC check list:

[EventSubscriber(ObjectType::Codeunit, Codeunit::QCABCQualityCheck92FDW, OnGetQualityCheckCustomColumns, '', false, false)]
local procedure AddItemDescriptionColumn(QCCheckHeader: Record QCCheckHeader92FDW; var CustomColumns: JsonArray)
var
    Item: Record Item;
    ColumnObject: JsonObject;
begin
    Clear(ColumnObject);
    if Item.Get(QCCheckHeader."Item No.") then
        ColumnObject.Add('columnValue', Item.Description)
    else
        ColumnObject.Add('columnValue', '');
    ColumnObject.Add('columnCaption', 'Item Description');
    ColumnObject.Add('isFilterable', true);
    CustomColumns.Add(ColumnObject);
end;