Page 9207 Sales Analysis Matrix

App
Base Application
Namespace
Microsoft.Sales.Analysis
Versions
17-28
Source table
7114

Procedures, 3

Versions171819202122232425262728

Source29

Source in 29

src/Layers/W1/BaseApp/Sales/Analysis/SalesAnalysisMatrix.Page.al825 lines, Copyright (c) Microsoft Corporation. MIT

// ------------------------------------------------------------------------------------------------
// Copyright (c) Microsoft Corporation. All rights reserved.
// Licensed under the MIT License. See License.txt in the project root for license information.
// ------------------------------------------------------------------------------------------------
namespace Microsoft.Sales.Analysis;

using Microsoft.Finance.Analysis;
using Microsoft.Foundation.Enums;
using Microsoft.Inventory.Analysis;

/// <summary>
/// Displays sales analysis data in a matrix format for the analysis report.
/// </summary>
page 9207 "Sales Analysis Matrix"
{
    Caption = 'Sales Analysis Matrix';
    Editable = false;
    LinksAllowed = false;
    PageType = List;
    SourceTable = "Analysis Line";

    layout
    {
        area(content)
        {
            repeater(Control1)
            {
                ShowCaption = false;
                field("Row Ref. No."; Rec."Row Ref. No.")
                {
                    ApplicationArea = SalesAnalysis;
                    Style = Strong;
                    StyleExpr = Emphasize;
                    ToolTip = 'Specifies a row reference number for the analysis line.';
                }
                field(Description; Rec.Description)
                {
                    ApplicationArea = SalesAnalysis;
                    Style = Strong;
                    StyleExpr = Emphasize;
                    ToolTip = 'Specifies a description for the analysis line.';
                }
                field(Field1; MatrixData[1])
                {
                    ApplicationArea = SalesAnalysis;
                    AutoFormatExpression = FormatStr(1);
                    AutoFormatType = 11;
                    BlankZero = true;
                    CaptionClass = '3,' + MatrixColumnCaptions[1];
                    StyleExpr = Field1Style;
                    Visible = Field1Visible;

                    trigger OnDrillDown()
                    begin
                        FieldDrillDown(1);
                    end;
                }
                field(Field2; MatrixData[2])
                {
                    ApplicationArea = SalesAnalysis;
                    AutoFormatExpression = FormatStr(2);
                    AutoFormatType = 11;
                    BlankZero = true;
                    CaptionClass = '3,' + MatrixColumnCaptions[2];
                    StyleExpr = Field2Style;
                    Visible = Field2Visible;

                    trigger OnDrillDown()
                    begin
                        FieldDrillDown(2);
                    end;
                }
                field(Field3; MatrixData[3])
                {
                    ApplicationArea = SalesAnalysis;
                    AutoFormatExpression = FormatStr(3);
                    AutoFormatType = 11;
                    BlankZero = true;
                    CaptionClass = '3,' + MatrixColumnCaptions[3];
                    StyleExpr = Field3Style;
                    Visible = Field3Visible;

                    trigger OnDrillDown()
                    begin
                        FieldDrillDown(3);
                    end;
                }
                field(Field4; MatrixData[4])
                {
                    ApplicationArea = SalesAnalysis;
                    AutoFormatExpression = FormatStr(4);
                    AutoFormatType = 11;
                    BlankZero = true;
                    CaptionClass = '3,' + MatrixColumnCaptions[4];
                    StyleExpr = Field4Style;
                    Visible = Field4Visible;

                    trigger OnDrillDown()
                    begin
                        FieldDrillDown(4);
                    end;
                }
                field(Field5; MatrixData[5])
                {
                    ApplicationArea = SalesAnalysis;
                    AutoFormatExpression = FormatStr(5);
                    AutoFormatType = 11;
                    BlankZero = true;
                    CaptionClass = '3,' + MatrixColumnCaptions[5];
                    StyleExpr = Field5Style;
                    Visible = Field5Visible;

                    trigger OnDrillDown()
                    begin
                        FieldDrillDown(5);
                    end;
                }
                field(Field6; MatrixData[6])
                {
                    ApplicationArea = SalesAnalysis;
                    AutoFormatExpression = FormatStr(6);
                    AutoFormatType = 11;
                    BlankZero = true;
                    CaptionClass = '3,' + MatrixColumnCaptions[6];
                    StyleExpr = Field6Style;
                    Visible = Field6Visible;

                    trigger OnDrillDown()
                    begin
                        FieldDrillDown(6);
                    end;
                }
                field(Field7; MatrixData[7])
                {
                    ApplicationArea = SalesAnalysis;
                    AutoFormatExpression = FormatStr(7);
                    AutoFormatType = 11;
                    BlankZero = true;
                    CaptionClass = '3,' + MatrixColumnCaptions[7];
                    StyleExpr = Field7Style;
                    Visible = Field7Visible;

                    trigger OnDrillDown()
                    begin
                        FieldDrillDown(7);
                    end;
                }
                field(Field8; MatrixData[8])
                {
                    ApplicationArea = SalesAnalysis;
                    AutoFormatExpression = FormatStr(8);
                    AutoFormatType = 11;
                    BlankZero = true;
                    CaptionClass = '3,' + MatrixColumnCaptions[8];
                    StyleExpr = Field8Style;
                    Visible = Field8Visible;

                    trigger OnAssistEdit()
                    begin
                        FieldDrillDown(8);
                    end;
                }
                field(Field9; MatrixData[9])
                {
                    ApplicationArea = SalesAnalysis;
                    AutoFormatExpression = FormatStr(9);
                    AutoFormatType = 11;
                    BlankZero = true;
                    CaptionClass = '3,' + MatrixColumnCaptions[9];
                    StyleExpr = Field9Style;
                    Visible = Field9Visible;

                    trigger OnDrillDown()
                    begin
                        FieldDrillDown(9);
                    end;
                }
                field(Field10; MatrixData[10])
                {
                    ApplicationArea = SalesAnalysis;
                    AutoFormatExpression = FormatStr(10);
                    AutoFormatType = 11;
                    BlankZero = true;
                    CaptionClass = '3,' + MatrixColumnCaptions[10];
                    StyleExpr = Field10Style;
                    Visible = Field10Visible;

                    trigger OnDrillDown()
                    begin
                        FieldDrillDown(10);
                    end;
                }
                field(Field11; MatrixData[11])
                {
                    ApplicationArea = SalesAnalysis;
                    AutoFormatExpression = FormatStr(11);
                    AutoFormatType = 11;
                    BlankZero = true;
                    CaptionClass = '3,' + MatrixColumnCaptions[11];
                    StyleExpr = Field11Style;
                    Visible = Field11Visible;

                    trigger OnDrillDown()
                    begin
                        FieldDrillDown(11);
                    end;
                }
                field(Field12; MatrixData[12])
                {
                    ApplicationArea = SalesAnalysis;
                    AutoFormatExpression = FormatStr(12);
                    AutoFormatType = 11;
                    BlankZero = true;
                    CaptionClass = '3,' + MatrixColumnCaptions[12];
                    StyleExpr = Field12Style;
                    Visible = Field12Visible;

                    trigger OnDrillDown()
                    begin
                        FieldDrillDown(12);
                    end;
                }
                field(Field13; MatrixData[13])
                {
                    ApplicationArea = SalesAnalysis;
                    AutoFormatExpression = FormatStr(13);
                    AutoFormatType = 11;
                    BlankZero = true;
                    CaptionClass = '3,' + MatrixColumnCaptions[13];
                    StyleExpr = Field13Style;
                    Visible = Field13Visible;

                    trigger OnDrillDown()
                    begin
                        FieldDrillDown(13);
                    end;
                }
                field(Field14; MatrixData[14])
                {
                    ApplicationArea = SalesAnalysis;
                    AutoFormatExpression = FormatStr(14);
                    AutoFormatType = 11;
                    BlankZero = true;
                    CaptionClass = '3,' + MatrixColumnCaptions[14];
                    StyleExpr = Field14Style;
                    Visible = Field14Visible;

                    trigger OnDrillDown()
                    begin
                        FieldDrillDown(14);
                    end;
                }
                field(Field15; MatrixData[15])
                {
                    ApplicationArea = SalesAnalysis;
                    AutoFormatExpression = FormatStr(15);
                    AutoFormatType = 11;
                    BlankZero = true;
                    CaptionClass = '3,' + MatrixColumnCaptions[15];
                    StyleExpr = Field15Style;
                    Visible = Field15Visible;

                    trigger OnDrillDown()
                    begin
                        FieldDrillDown(15);
                    end;
                }
                field(Field16; MatrixData[16])
                {
                    ApplicationArea = SalesAnalysis;
                    AutoFormatExpression = FormatStr(16);
                    AutoFormatType = 11;
                    BlankZero = true;
                    CaptionClass = '3,' + MatrixColumnCaptions[16];
                    StyleExpr = Field16Style;
                    Visible = Field16Visible;

                    trigger OnDrillDown()
                    begin
                        FieldDrillDown(16);
                    end;
                }
                field(Field17; MatrixData[17])
                {
                    ApplicationArea = SalesAnalysis;
                    AutoFormatExpression = FormatStr(17);
                    AutoFormatType = 11;
                    BlankZero = true;
                    CaptionClass = '3,' + MatrixColumnCaptions[17];
                    StyleExpr = Field17Style;
                    Visible = Field17Visible;

                    trigger OnDrillDown()
                    begin
                        FieldDrillDown(17);
                    end;
                }
                field(Field18; MatrixData[18])
                {
                    ApplicationArea = SalesAnalysis;
                    AutoFormatExpression = FormatStr(18);
                    AutoFormatType = 11;
                    BlankZero = true;
                    CaptionClass = '3,' + MatrixColumnCaptions[18];
                    StyleExpr = Field18Style;
                    Visible = Field18Visible;

                    trigger OnDrillDown()
                    begin
                        FieldDrillDown(18);
                    end;
                }
                field(Field19; MatrixData[19])
                {
                    ApplicationArea = SalesAnalysis;
                    AutoFormatExpression = FormatStr(19);
                    AutoFormatType = 11;
                    BlankZero = true;
                    CaptionClass = '3,' + MatrixColumnCaptions[19];
                    StyleExpr = Field19Style;
                    Visible = Field19Visible;

                    trigger OnDrillDown()
                    begin
                        FieldDrillDown(19);
                    end;
                }
                field(Field20; MatrixData[20])
                {
                    ApplicationArea = SalesAnalysis;
                    AutoFormatExpression = FormatStr(20);
                    AutoFormatType = 11;
                    BlankZero = true;
                    CaptionClass = '3,' + MatrixColumnCaptions[20];
                    StyleExpr = Field20Style;
                    Visible = Field20Visible;

                    trigger OnDrillDown()
                    begin
                        FieldDrillDown(20);
                    end;
                }
                field(Field21; MatrixData[21])
                {
                    ApplicationArea = SalesAnalysis;
                    AutoFormatExpression = FormatStr(21);
                    AutoFormatType = 11;
                    BlankZero = true;
                    CaptionClass = '3,' + MatrixColumnCaptions[21];
                    StyleExpr = Field21Style;
                    Visible = Field21Visible;

                    trigger OnDrillDown()
                    begin
                        FieldDrillDown(21);
                    end;
                }
                field(Field22; MatrixData[22])
                {
                    ApplicationArea = SalesAnalysis;
                    AutoFormatExpression = FormatStr(22);
                    AutoFormatType = 11;
                    BlankZero = true;
                    CaptionClass = '3,' + MatrixColumnCaptions[22];
                    StyleExpr = Field22Style;
                    Visible = Field22Visible;

                    trigger OnDrillDown()
                    begin
                        FieldDrillDown(22);
                    end;
                }
                field(Field23; MatrixData[23])
                {
                    ApplicationArea = SalesAnalysis;
                    AutoFormatExpression = FormatStr(23);
                    AutoFormatType = 11;
                    BlankZero = true;
                    CaptionClass = '3,' + MatrixColumnCaptions[23];
                    StyleExpr = Field23Style;
                    Visible = Field23Visible;

                    trigger OnDrillDown()
                    begin
                        FieldDrillDown(23);
                    end;
                }
                field(Field24; MatrixData[24])
                {
                    ApplicationArea = SalesAnalysis;
                    AutoFormatExpression = FormatStr(24);
                    AutoFormatType = 11;
                    BlankZero = true;
                    CaptionClass = '3,' + MatrixColumnCaptions[24];
                    StyleExpr = Field24Style;
                    Visible = Field24Visible;

                    trigger OnDrillDown()
                    begin
                        FieldDrillDown(24);
                    end;
                }
                field(Field25; MatrixData[25])
                {
                    ApplicationArea = SalesAnalysis;
                    AutoFormatExpression = FormatStr(25);
                    AutoFormatType = 11;
                    BlankZero = true;
                    CaptionClass = '3,' + MatrixColumnCaptions[25];
                    StyleExpr = Field25Style;
                    Visible = Field25Visible;

                    trigger OnDrillDown()
                    begin
                        FieldDrillDown(25);
                    end;
                }
                field(Field26; MatrixData[26])
                {
                    ApplicationArea = SalesAnalysis;
                    AutoFormatExpression = FormatStr(26);
                    AutoFormatType = 11;
                    BlankZero = true;
                    CaptionClass = '3,' + MatrixColumnCaptions[26];
                    StyleExpr = Field26Style;
                    Visible = Field26Visible;

                    trigger OnDrillDown()
                    begin
                        FieldDrillDown(26);
                    end;
                }
                field(Field27; MatrixData[27])
                {
                    ApplicationArea = SalesAnalysis;
                    AutoFormatExpression = FormatStr(27);
                    AutoFormatType = 11;
                    BlankZero = true;
                    CaptionClass = '3,' + MatrixColumnCaptions[27];
                    StyleExpr = Field27Style;
                    Visible = Field27Visible;

                    trigger OnDrillDown()
                    begin
                        FieldDrillDown(27);
                    end;
                }
                field(Field28; MatrixData[28])
                {
                    ApplicationArea = SalesAnalysis;
                    AutoFormatExpression = FormatStr(28);
                    AutoFormatType = 11;
                    BlankZero = true;
                    CaptionClass = '3,' + MatrixColumnCaptions[28];
                    StyleExpr = Field28Style;
                    Visible = Field28Visible;

                    trigger OnDrillDown()
                    begin
                        FieldDrillDown(28);
                    end;
                }
                field(Field29; MatrixData[29])
                {
                    ApplicationArea = SalesAnalysis;
                    AutoFormatExpression = FormatStr(29);
                    AutoFormatType = 11;
                    BlankZero = true;
                    CaptionClass = '3,' + MatrixColumnCaptions[29];
                    StyleExpr = Field29Style;
                    Visible = Field29Visible;

                    trigger OnDrillDown()
                    begin
                        FieldDrillDown(29);
                    end;
                }
                field(Field30; MatrixData[30])
                {
                    ApplicationArea = SalesAnalysis;
                    AutoFormatExpression = FormatStr(30);
                    AutoFormatType = 11;
                    BlankZero = true;
                    CaptionClass = '3,' + MatrixColumnCaptions[30];
                    StyleExpr = Field30Style;
                    Visible = Field30Visible;

                    trigger OnDrillDown()
                    begin
                        FieldDrillDown(30);
                    end;
                }
                field(Field31; MatrixData[31])
                {
                    ApplicationArea = SalesAnalysis;
                    AutoFormatExpression = FormatStr(31);
                    AutoFormatType = 11;
                    BlankZero = true;
                    CaptionClass = '3,' + MatrixColumnCaptions[31];
                    StyleExpr = Field31Style;
                    Visible = Field31Visible;

                    trigger OnDrillDown()
                    begin
                        FieldDrillDown(31);
                    end;
                }
                field(Field32; MatrixData[32])
                {
                    ApplicationArea = SalesAnalysis;
                    AutoFormatExpression = FormatStr(32);
                    AutoFormatType = 11;
                    BlankZero = true;
                    CaptionClass = '3,' + MatrixColumnCaptions[32];
                    StyleExpr = Field32Style;
                    Visible = Field32Visible;

                    trigger OnDrillDown()
                    begin
                        FieldDrillDown(32);
                    end;
                }
            }
        }
    }

    actions
    {
    }

    trigger OnAfterGetRecord()
    var
        CellValue: Decimal;
    begin
        i := 1;

        if AnalysisColumn.Find('-') then
            repeat
                if i <= ArrayLen(MatrixData) then begin
                    if Rec.Range = '' then
                        CellValue := 0
                    else
                        CellValue := AnalysisReportMgt.CalcCell(Rec, AnalysisColumn, false);
                    MatrixData[i] := MatrixMgt.RoundAmount(CellValue, AnalysisColumn."Rounding Factor");
                    MatrixRounding[i] := AnalysisColumn."Rounding Factor";
                    CachedContainsError[i] := FindError();
                end;
                SetStyle(i);
                i := i + 1;
            until AnalysisColumn.Next() = 0;
        Emphasize := Rec.Bold;
    end;

    trigger OnInit()
    begin
        Field32Visible := true;
        Field31Visible := true;
        Field30Visible := true;
        Field29Visible := true;
        Field28Visible := true;
        Field27Visible := true;
        Field26Visible := true;
        Field25Visible := true;
        Field24Visible := true;
        Field23Visible := true;
        Field22Visible := true;
        Field21Visible := true;
        Field20Visible := true;
        Field19Visible := true;
        Field18Visible := true;
        Field17Visible := true;
        Field16Visible := true;
        Field15Visible := true;
        Field14Visible := true;
        Field13Visible := true;
        Field12Visible := true;
        Field11Visible := true;
        Field10Visible := true;
        Field9Visible := true;
        Field8Visible := true;
        Field7Visible := true;
        Field6Visible := true;
        Field5Visible := true;
        Field4Visible := true;
        Field3Visible := true;
        Field2Visible := true;
        Field1Visible := true;
    end;

    trigger OnOpenPage()
    begin
        Rec.SetFilter(Show, '<>%1', Rec.Show::No);
        AnalysisColumn.SetRange("Analysis Area", AnalysisColumn."Analysis Area"::Sales);
        AnalysisColumn.SetRange("Analysis Column Template", AnalysisColumn."Analysis Column Template");
        AnalysisColumn.SetRange("Line No.", FirstLineNo, LastLineNo);
        AnalysisColumn.SetFilter(Show, '<>%1', AnalysisColumn.Show::Never);
        SetVisible();
    end;

    var
        AnalysisColumn2: Record "Analysis Column";
        MatrixMgt: Codeunit "Matrix Management";
        MatrixColumnCaptions: array[32] of Text[1024];
        i: Integer;
        MatrixData: array[32] of Decimal;
        MatrixRounding: array[32] of Enum "Analysis Rounding Factor";
        FirstLineNo: Integer;
        LastLineNo: Integer;
        CachedContainsError: array[32] of Boolean;
        Field1Visible: Boolean;
        Field2Visible: Boolean;
        Field3Visible: Boolean;
        Field4Visible: Boolean;
        Field5Visible: Boolean;
        Field6Visible: Boolean;
        Field7Visible: Boolean;
        Field8Visible: Boolean;
        Field9Visible: Boolean;
        Field10Visible: Boolean;
        Field11Visible: Boolean;
        Field12Visible: Boolean;
        Field13Visible: Boolean;
        Field14Visible: Boolean;
        Field15Visible: Boolean;
        Field16Visible: Boolean;
        Field17Visible: Boolean;
        Field18Visible: Boolean;
        Field19Visible: Boolean;
        Field20Visible: Boolean;
        Field21Visible: Boolean;
        Field22Visible: Boolean;
        Field23Visible: Boolean;
        Field24Visible: Boolean;
        Field25Visible: Boolean;
        Field26Visible: Boolean;
        Field27Visible: Boolean;
        Field28Visible: Boolean;
        Field29Visible: Boolean;
        Field30Visible: Boolean;
        Field31Visible: Boolean;
        Field32Visible: Boolean;
        Emphasize: Boolean;
        Field1Style: Text;
        Field2Style: Text;
        Field3Style: Text;
        Field4Style: Text;
        Field5Style: Text;
        Field6Style: Text;
        Field7Style: Text;
        Field8Style: Text;
        Field9Style: Text;
        Field10Style: Text;
        Field11Style: Text;
        Field12Style: Text;
        Field13Style: Text;
        Field14Style: Text;
        Field15Style: Text;
        Field16Style: Text;
        Field17Style: Text;
        Field18Style: Text;
        Field19Style: Text;
        Field20Style: Text;
        Field21Style: Text;
        Field22Style: Text;
        Field23Style: Text;
        Field24Style: Text;
        Field25Style: Text;
        Field26Style: Text;
        Field27Style: Text;
        Field28Style: Text;
        Field29Style: Text;
        Field30Style: Text;
        Field31Style: Text;
        Field32Style: Text;

    protected var
        AnalysisColumn: Record "Analysis Column";
        AnalysisReportMgt: Codeunit "Analysis Report Management";

    /// <summary>
    /// Loads the matrix page with analysis column data and captions.
    /// </summary>
    /// <param name="AnalysisColumn1">The analysis column record to copy.</param>
    /// <param name="MatrixColumnCaptions1">Array of column captions for the matrix.</param>
    /// <param name="FirstLineNo1">The first line number to display.</param>
    /// <param name="LastLineNo1">The last line number to display.</param>
    procedure Load(AnalysisColumn1: Record "Analysis Column"; MatrixColumnCaptions1: array[32] of Text[1024]; FirstLineNo1: Integer; LastLineNo1: Integer)
    begin
        AnalysisColumn.Copy(AnalysisColumn1);
        CopyArray(MatrixColumnCaptions, MatrixColumnCaptions1, 1);

        FirstLineNo := FirstLineNo1;
        LastLineNo := LastLineNo1;
    end;

    local procedure GetHorizontalRecord(HorizontalRecordOrdinal: Integer; var HorizontalRecord: Record "Analysis Column")
    var
        n: Integer;
    begin
        n := 1;
        if HorizontalRecord.Find('-') then
            while n <> HorizontalRecordOrdinal do begin
                n := n + 1;
                HorizontalRecord.Next();
            end;
    end;

    local procedure FindError(): Boolean
    begin
        if AnalysisReportMgt.GetDivisionError() or
           AnalysisReportMgt.GetPeriodError() or
           AnalysisReportMgt.GetFormulaError() or
           AnalysisReportMgt.GetCyclicError()
        then
            exit(true);

        exit(false);
    end;

    local procedure FieldDrillDown(ColumnID: Integer)
    begin
        AnalysisColumn2.Copy(AnalysisColumn);
        GetHorizontalRecord(ColumnID, AnalysisColumn2);
        AnalysisReportMgt.CalcCell(Rec, AnalysisColumn2, true);
    end;

    /// <summary>
    /// Sets the visibility of matrix columns based on whether captions are defined.
    /// </summary>
    procedure SetVisible()
    begin
        Field1Visible := MatrixColumnCaptions[1] <> '';
        Field2Visible := MatrixColumnCaptions[2] <> '';
        Field3Visible := MatrixColumnCaptions[3] <> '';
        Field4Visible := MatrixColumnCaptions[4] <> '';
        Field5Visible := MatrixColumnCaptions[5] <> '';
        Field6Visible := MatrixColumnCaptions[6] <> '';
        Field7Visible := MatrixColumnCaptions[7] <> '';
        Field8Visible := MatrixColumnCaptions[8] <> '';
        Field9Visible := MatrixColumnCaptions[9] <> '';
        Field10Visible := MatrixColumnCaptions[10] <> '';
        Field11Visible := MatrixColumnCaptions[11] <> '';
        Field12Visible := MatrixColumnCaptions[12] <> '';
        Field13Visible := MatrixColumnCaptions[13] <> '';
        Field14Visible := MatrixColumnCaptions[14] <> '';
        Field15Visible := MatrixColumnCaptions[15] <> '';
        Field16Visible := MatrixColumnCaptions[16] <> '';
        Field17Visible := MatrixColumnCaptions[17] <> '';
        Field18Visible := MatrixColumnCaptions[18] <> '';
        Field19Visible := MatrixColumnCaptions[19] <> '';
        Field20Visible := MatrixColumnCaptions[20] <> '';
        Field21Visible := MatrixColumnCaptions[21] <> '';
        Field22Visible := MatrixColumnCaptions[22] <> '';
        Field23Visible := MatrixColumnCaptions[23] <> '';
        Field24Visible := MatrixColumnCaptions[24] <> '';
        Field25Visible := MatrixColumnCaptions[25] <> '';
        Field26Visible := MatrixColumnCaptions[26] <> '';
        Field27Visible := MatrixColumnCaptions[27] <> '';
        Field28Visible := MatrixColumnCaptions[28] <> '';
        Field29Visible := MatrixColumnCaptions[29] <> '';
        Field30Visible := MatrixColumnCaptions[30] <> '';
        Field31Visible := MatrixColumnCaptions[31] <> '';
        Field32Visible := MatrixColumnCaptions[32] <> '';
    end;

    /// <summary>
    /// Gets the maximum number of columns that can be displayed in the matrix.
    /// </summary>
    /// <returns>The dimension of the matrix column captions array.</returns>
    procedure GetMatrixDimension(): Integer
    begin
        exit(ArrayLen(MatrixColumnCaptions));
    end;

    local procedure FormatStr(ColumnNo: Integer): Text
    begin
        exit(MatrixMgt.FormatRoundingFactor(MatrixRounding[ColumnNo], false));
    end;

    local procedure SetStyle(ColumnID: Integer)
    begin
        SetFieldStyle(Field1Style, ColumnID);
        SetFieldStyle(Field2Style, ColumnID);
        SetFieldStyle(Field3Style, ColumnID);
        SetFieldStyle(Field4Style, ColumnID);
        SetFieldStyle(Field5Style, ColumnID);
        SetFieldStyle(Field6Style, ColumnID);
        SetFieldStyle(Field7Style, ColumnID);
        SetFieldStyle(Field8Style, ColumnID);
        SetFieldStyle(Field9Style, ColumnID);
        SetFieldStyle(Field10Style, ColumnID);
        SetFieldStyle(Field11Style, ColumnID);
        SetFieldStyle(Field12Style, ColumnID);
        SetFieldStyle(Field13Style, ColumnID);
        SetFieldStyle(Field14Style, ColumnID);
        SetFieldStyle(Field15Style, ColumnID);
        SetFieldStyle(Field16Style, ColumnID);
        SetFieldStyle(Field17Style, ColumnID);
        SetFieldStyle(Field18Style, ColumnID);
        SetFieldStyle(Field19Style, ColumnID);
        SetFieldStyle(Field20Style, ColumnID);
        SetFieldStyle(Field21Style, ColumnID);
        SetFieldStyle(Field22Style, ColumnID);
        SetFieldStyle(Field23Style, ColumnID);
        SetFieldStyle(Field24Style, ColumnID);
        SetFieldStyle(Field25Style, ColumnID);
        SetFieldStyle(Field26Style, ColumnID);
        SetFieldStyle(Field27Style, ColumnID);
        SetFieldStyle(Field28Style, ColumnID);
        SetFieldStyle(Field29Style, ColumnID);
        SetFieldStyle(Field30Style, ColumnID);
        SetFieldStyle(Field31Style, ColumnID);
        SetFieldStyle(Field32Style, ColumnID);
    end;

    local procedure SetFieldStyle(var FieldStyle: Text; ColumnID: Integer)
    begin
        if CachedContainsError[ColumnID] then
            FieldStyle := 'Unfavorable'
        else
            FieldStyle := 'Standard';
    end;
}