Using the step-by-step recipe I have build a example One-Page matrix based on the following requirements:
Customer/Item Spending: Display the total amount for each item what each of our customers has in order.
Basically this line already reveals the design of our matrix:
To be able to build the matrix I need to do some preparation:
This table needs to be extended with the following three fields (that actualy do the calculations needed for the matrix cells):
Field No.
Field Name
Data Type
Length
Description
85.000
Total Amount
Decimal
FlowField: sum of Amount- fields in Sales Line table for customer (incl. next FlowFilters)
85.001
Type Filter
Option
FlowFilter for Type field in Sales Line tableOptionString = ,G/L Account,Item,Resource,Fixed Asset,Charge (Item)
85.002
No. Filter
Code
20
FlowFilter or No. field in Sales Line table
The following secondary key should be added (to facilitate the FlowField on the Customer table) with Amount field as SumIndexField:
Key
SumIndexFields
Sell-to Customer No.,Type,No.
Amount
This One-Page matrix consists of two pages:
In both objects (were possible) the changes have been marked related to the steps as defined in by step-by-step recipe.
OBJECT Page 62105 Customer/Item Spending
{
OBJECT-PROPERTIES
Date=20-04-12;
Time=12:00:00;
Version List=Advanced Matrix Box;
}
PROPERTIES
CaptionML=ENU=Customer/Item Spending;
SaveValues=Yes;
InsertAllowed=No;
DeleteAllowed=No;
ModifyAllowed=No;
SourceTable=Table18;
PageType=Card;
OnOpenPage=BEGIN
//AMB0004-BEGIN
SetColumns(MATRIX_SetWanted::Initial);
//AMB0007-BEGIN
UpdateMatrixSubform
//AMB0007-END
//AMB0004-END
END;
ActionList=ACTIONS
{ 1900000004;0 ;ActionContainer;
ActionContainerType=ActionItems }
{ 31 ;1 ;Action ;
CaptionML=ENU=Previous Set;
ToolTipML=ENU=Previous Set;
Description=AMB0008;
Promoted=Yes;
PromotedIsBig=Yes;
Image=PreviousSet;
PromotedCategory=Process;
OnAction=BEGIN
//AMB0008-BEGIN
SetColumns(MATRIX_SetWanted::Previous);
//AMB0008-END
{ 102 ;1 ;Action ;
CaptionML=ENU=Previous Column;
ToolTipML=ENU=Previous;
Image=PreviousRecord;
SetColumns(MATRIX_SetWanted::PreviousColumn);
UpdateMatrixSubform();
{ 103 ;1 ;Action ;
CaptionML=ENU=Next Column;
ToolTipML=ENU=Next;
Image=NextRecord;
SetColumns(MATRIX_SetWanted::NextColumn);
{ 32 ;1 ;Action ;
CaptionML=ENU=Next Set;
ToolTipML=ENU=Next Set;
Image=NextSet;
SetColumns(MATRIX_SetWanted::Next);
CONTROLS
{ 1900000001;0;Container;
ContainerType=ContentArea }
{ 12 ;1 ;Group ;
CaptionML=ENU=Options }
{ 15 ;2 ;Field ;
CaptionML=[ENU=Show Column Name;
NLD=Kolomnaam weergeven];
SourceExpr=ShowColumnName;
OnValidate=BEGIN
ShowColumnNameOnAfterValidate;
{ 33 ;1 ;Part ;
Name=MatrixForm;
Description=AMB0001;
PagePartID=Page62107;
PartType=Page }
CODE
VAR
MatrixRecord@1000 : Record 27;
MatrixRecords@1010 : ARRAY [32] OF Record 27;
MatrixRecordRef@1007 : RecordRef;
MATRIX_SetWanted@1006 : 'Initial,Previous,Same,Next,PreviousColumn,NextColumn';
ShowColumnName@1002 : Boolean;
MATRIX_CaptionSet@1008 : ARRAY [32] OF Text[1024];
MATRIX_CaptionRange@1011 : Text[100];
MATRIX_PKFirstRecInCurrSet@1001 : Text[100];
MATRIX_CurrSetLength@1004 : Integer;
WshShell@11091689 : Automation "{F935DC20-1CF0-11D0-ADB9-00C04FD58A0B} 1.0:{72C24DD5-D70A-438B-8A42-98424B88AFB8}:'Windows Script Host Object Model'.WshShell";
PROCEDURE SetColumns@6(SetWanted@1002 : 'Initial,Previous,Same,Next,PreviousColumn,NextColumn');
MatrixMgt@1000 : Codeunit 9200;
CaptionFieldNo@1001 : Integer;
CurrentMatrixRecordOrdinal@1003 : Integer;
BEGIN
CLEAR(MATRIX_CaptionSet);
CLEAR(MatrixRecords);
CurrentMatrixRecordOrdinal := 1;
MatrixRecordRef.GETTABLE(MatrixRecord);
MatrixRecordRef.SETTABLE(MatrixRecord);
//AMB0009-BEGIN
IF ShowColumnName THEN
CaptionFieldNo := MatrixRecord.FIELDNO(Description)
ELSE
//AMB0009-END
CaptionFieldNo := MatrixRecord.FIELDNO("No.");
MatrixMgt.GenerateMatrixData(MatrixRecordRef,SetWanted,ARRAYLEN(MatrixRecords),CaptionFieldNo,MATRIX_PKFirstRecInCurrSet,
MATRIX_CaptionSet,MATRIX_CaptionRange,MATRIX_CurrSetLength);
IF MATRIX_CurrSetLength > 0 THEN BEGIN
MatrixRecord.SETPOSITION(MATRIX_PKFirstRecInCurrSet);
MatrixRecord.FIND;
REPEAT
MatrixRecords[CurrentMatrixRecordOrdinal].COPY(MatrixRecord);
CurrentMatrixRecordOrdinal := CurrentMatrixRecordOrdinal + 1;
UNTIL (CurrentMatrixRecordOrdinal > MATRIX_CurrSetLength) OR (MatrixRecord.NEXT <> 1);
PROCEDURE UpdateMatrixSubform@7();
CurrPage.MatrixForm.FORM.Load(MATRIX_CaptionSet,MatrixRecords,MatrixRecord);
UpdateThePage
LOCAL PROCEDURE ShowColumnNameOnAfterValidate@8();
SetColumns(MATRIX_SetWanted::Same);
PROCEDURE UpdateThePage@10();
IF ISCLEAR(WshShell) THEN
CREATE(WshShell, TRUE, TRUE);
WshShell.SendKeys('{F5}');
<changelog>
<add id="AMB0001"
dev="lvanvugt"
date="2012-04-20"
source="http://dynamicsuser.net/blogs/vanvugt/archive/2012/04/20/how-to-create-a-one-page-matrix.aspx"
releaseversion="Advanced Matrix Box">Step 2 - One-Page Matrix Step-by-Step</add>
<change id="AMB0004"
releaseversion="Advanced Matrix Box">Step 4 - One-Page Matrix Step-by-Step</change>
<change id="AMB0007"
releaseversion="Advanced Matrix Box">Step 7 - One-Page Matrix Step-by-Step</change>
<change id="AMB0008"
releaseversion="Advanced Matrix Box">Step 8 - One-Page Matrix Step-by-Step</change>
<change id="AMB0009"
releaseversion="Advanced Matrix Box">Step 9 - One-Page Matrix Step-by-Step</change>
</changelog>
END.
OBJECT Page 62107 Customer/Item Spending Matrix { OBJECT-PROPERTIES { Date=20-04-12; Time=12:00:00; Version List=Advanced Matrix Box; } PROPERTIES { Editable=No; CaptionML=ENU=Customer/Item Spending Matix; SourceTable=Table18; PageType=ListPart; OnInit=BEGIN //AMB0006-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; //AMB0006-END END; OnOpenPage=BEGIN //AMB0006-BEGIN MATRIX_NoOfMatrixColumns := ARRAYLEN(MATRIX_CellData); //AMB0006-END END; OnAfterGetRecord=VAR MATRIX_CurrentColumnOrdinal@1018 : Integer; BEGIN //AMB0006-BEGIN MATRIX_CurrentColumnOrdinal := 0; IF MatrixRecord.FIND('-') THEN REPEAT MATRIX_CurrentColumnOrdinal := MATRIX_CurrentColumnOrdinal + 1; MATRIX_OnAfterGetRecord(MATRIX_CurrentColumnOrdinal); UNTIL (MatrixRecord.NEXT(1) = 0) OR (MATRIX_CurrentColumnOrdinal = MATRIX_NoOfMatrixColumns); //AMB0006-END END; } CONTROLS { { 1900000001;0;Container; ContainerType=ContentArea } { 1 ;1;Group ; Name=Group; Description=AMB0009; GroupType=Repeater; FreezeColumnID=Name } { 2 ;2;Field ; Description=AMB0001; SourceExpr="No." } { 4 ;2;Field ; Description=AMB0001; SourceExpr=Name } { 1008;2;Field ; Name=Field1; BlankNumbers=BlankZero; Description=AMB0003|AMB0009; SourceExpr=MATRIX_CellData[1]; AutoFormatType=1; CaptionClass='3,' + MATRIX_ColumnCaption[1]; Visible=Field1Visible; OnDrillDown=BEGIN MatrixOnDrillDown(1); END; } { 1100409033;2;Field ; Name=Field2; BlankNumbers=BlankZero; Description=AMB0003|AMB0009; SourceExpr=MATRIX_CellData[2]; AutoFormatType=1; CaptionClass='3,' + MATRIX_ColumnCaption[2]; Visible=Field2Visible; OnDrillDown=BEGIN MatrixOnDrillDown(2); END; } { 1100409034;2;Field ; Name=Field3; BlankNumbers=BlankZero; Description=AMB0003|AMB0009; SourceExpr=MATRIX_CellData[3]; AutoFormatType=1; CaptionClass='3,' + MATRIX_ColumnCaption[3]; Visible=Field3Visible; OnDrillDown=BEGIN MatrixOnDrillDown(3); END; } { 1100409031;2;Field ; Name=Field4; BlankNumbers=BlankZero; Description=AMB0003|AMB0009; SourceExpr=MATRIX_CellData[4]; AutoFormatType=1; CaptionClass='3,' + MATRIX_ColumnCaption[4]; Visible=Field4Visible; OnDrillDown=BEGIN MatrixOnDrillDown(4); END; } { 1100409032;2;Field ; Name=Field5; BlankNumbers=BlankZero; Description=AMB0003|AMB0009; SourceExpr=MATRIX_CellData[5]; AutoFormatType=1; CaptionClass='3,' + MATRIX_ColumnCaption[5]; Visible=Field5Visible; OnDrillDown=BEGIN MatrixOnDrillDown(5); END; } { 1100409029;2;Field ; Name=Field6; BlankNumbers=BlankZero; Description=AMB0003|AMB0009; SourceExpr=MATRIX_CellData; AutoFormatType=1; CaptionClass='3,' + MATRIX_ColumnCaption; Visible=Field6Visible; OnDrillDown=BEGIN MatrixOnDrillDown(6); END; } { 1100409030;2;Field ; Name=Field7; BlankNumbers=BlankZero; Description=AMB0003|AMB0009; SourceExpr=MATRIX_CellData[7]; AutoFormatType=1; CaptionClass='3,' + MATRIX_ColumnCaption[7]; Visible=Field7Visible; OnDrillDown=BEGIN MatrixOnDrillDown(7); END; } { 1100409027;2;Field ; Name=Field8; BlankNumbers=BlankZero; Description=AMB0003|AMB0009; SourceExpr=MATRIX_CellData; AutoFormatType=1; CaptionClass='3,' + MATRIX_ColumnCaption; Visible=Field8Visible; OnDrillDown=BEGIN MatrixOnDrillDown(8); END; } { 1100409028;2;Field ; Name=Field9; BlankNumbers=BlankZero; Description=AMB0003|AMB0009; SourceExpr=MATRIX_CellData[9]; AutoFormatType=1; CaptionClass='3,' + MATRIX_ColumnCaption[9]; Visible=Field9Visible; OnDrillDown=BEGIN MatrixOnDrillDown(9); END; } { 1100409025;2;Field ; Name=Field10; BlankNumbers=BlankZero; Description=AMB0003|AMB0009; SourceExpr=MATRIX_CellData[10]; AutoFormatType=1; CaptionClass='3,' + MATRIX_ColumnCaption[10]; Visible=Field10Visible; OnDrillDown=BEGIN MatrixOnDrillDown(10); END; } { 1100409026;2;Field ; Name=Field11; BlankNumbers=BlankZero; Description=AMB0003|AMB0009; SourceExpr=MATRIX_CellData[11]; AutoFormatType=1; CaptionClass='3,' + MATRIX_ColumnCaption[11]; Visible=Field11Visible; OnDrillDown=BEGIN MatrixOnDrillDown(11); END; } { 1100409023;2;Field ; Name=Field12; BlankNumbers=BlankZero; Description=AMB0003|AMB0009; SourceExpr=MATRIX_CellData[12]; AutoFormatType=1; CaptionClass='3,' + MATRIX_ColumnCaption[12]; Visible=Field12Visible; OnDrillDown=BEGIN MatrixOnDrillDown(12); END; } { 1100409024;2;Field ; Name=Field13; BlankNumbers=BlankZero; Description=AMB0003|AMB0009; SourceExpr=MATRIX_CellData[13]; AutoFormatType=1; CaptionClass='3,' + MATRIX_ColumnCaption[13]; Visible=Field13Visible; OnDrillDown=BEGIN MatrixOnDrillDown(13); END; } { 1100409021;2;Field ; Name=Field14; BlankNumbers=BlankZero; Description=AMB0003|AMB0009; SourceExpr=MATRIX_CellData[14]; AutoFormatType=1; CaptionClass='3,' + MATRIX_ColumnCaption[14]; Visible=Field14Visible; OnDrillDown=BEGIN MatrixOnDrillDown(14); END; } { 1100409022;2;Field ; Name=Field15; BlankNumbers=BlankZero; Description=AMB0003|AMB0009; SourceExpr=MATRIX_CellData[15]; AutoFormatType=1; CaptionClass='3,' + MATRIX_ColumnCaption[15]; Visible=Field15Visible; OnDrillDown=BEGIN MatrixOnDrillDown(15); END; } { 1100409019;2;Field ; Name=Field16; BlankNumbers=BlankZero; Description=AMB0003|AMB0009; SourceExpr=MATRIX_CellData[16]; AutoFormatType=1; CaptionClass='3,' + MATRIX_ColumnCaption[16]; Visible=Field16Visible; OnDrillDown=BEGIN MatrixOnDrillDown(16); END; } { 1100409020;2;Field ; Name=Field17; BlankNumbers=BlankZero; Description=AMB0003|AMB0009; SourceExpr=MATRIX_CellData[17]; AutoFormatType=1; CaptionClass='3,' + MATRIX_ColumnCaption[17]; Visible=Field17Visible; OnDrillDown=BEGIN MatrixOnDrillDown(17); END; } { 1100409017;2;Field ; Name=Field18; BlankNumbers=BlankZero; Description=AMB0003|AMB0009; SourceExpr=MATRIX_CellData[18]; AutoFormatType=1; CaptionClass='3,' + MATRIX_ColumnCaption[18]; Visible=Field18Visible; OnDrillDown=BEGIN MatrixOnDrillDown(18); END; } { 1100409018;2;Field ; Name=Field19; BlankNumbers=BlankZero; Description=AMB0003|AMB0009; SourceExpr=MATRIX_CellData[19]; AutoFormatType=1; CaptionClass='3,' + MATRIX_ColumnCaption[19]; Visible=Field19Visible; OnDrillDown=BEGIN MatrixOnDrillDown(19); END; } { 1100409015;2;Field ; Name=Field20; BlankNumbers=BlankZero; Description=AMB0003|AMB0009; SourceExpr=MATRIX_CellData[20]; AutoFormatType=1; CaptionClass='3,' + MATRIX_ColumnCaption[20]; Visible=Field20Visible; OnDrillDown=BEGIN MatrixOnDrillDown(20); END; } { 1100409016;2;Field ; Name=Field21; BlankNumbers=BlankZero; Description=AMB0003|AMB0009; SourceExpr=MATRIX_CellData[21]; AutoFormatType=1; CaptionClass='3,' + MATRIX_ColumnCaption[21]; Visible=Field21Visible; OnDrillDown=BEGIN MatrixOnDrillDown(21); END; } { 1100409013;2;Field ; Name=Field22; BlankNumbers=BlankZero; Description=AMB0003|AMB0009; SourceExpr=MATRIX_CellData[22]; AutoFormatType=1; CaptionClass='3,' + MATRIX_ColumnCaption[22]; Visible=Field22Visible; OnDrillDown=BEGIN MatrixOnDrillDown(22); END; } { 1100409014;2;Field ; Name=Field23; BlankNumbers=BlankZero; Description=AMB0003|AMB0009; SourceExpr=MATRIX_CellData[23]; AutoFormatType=1; CaptionClass='3,' + MATRIX_ColumnCaption[23]; Visible=Field23Visible; OnDrillDown=BEGIN MatrixOnDrillDown(23); END; } { 1100409011;2;Field ; Name=Field24; BlankNumbers=BlankZero; Description=AMB0003|AMB0009; SourceExpr=MATRIX_CellData[24]; AutoFormatType=1; CaptionClass='3,' + MATRIX_ColumnCaption[24]; Visible=Field24Visible; OnDrillDown=BEGIN MatrixOnDrillDown(24); END; } { 1100409012;2;Field ; Name=Field25; BlankNumbers=BlankZero; Description=AMB0003|AMB0009; SourceExpr=MATRIX_CellData[25]; AutoFormatType=1; CaptionClass='3,' + MATRIX_ColumnCaption[25]; Visible=Field25Visible; OnDrillDown=BEGIN MatrixOnDrillDown(25); END; } { 1100409009;2;Field ; Name=Field26; BlankNumbers=BlankZero; Description=AMB0003|AMB0009; SourceExpr=MATRIX_CellData[26]; AutoFormatType=1; CaptionClass='3,' + MATRIX_ColumnCaption[26]; Visible=Field26Visible; OnDrillDown=BEGIN MatrixOnDrillDown(26); END; } { 1100409010;2;Field ; Name=Field27; BlankNumbers=BlankZero; Description=AMB0003|AMB0009; SourceExpr=MATRIX_CellData[27]; AutoFormatType=1; CaptionClass='3,' + MATRIX_ColumnCaption[27]; Visible=Field27Visible; OnDrillDown=BEGIN MatrixOnDrillDown(27); END; } { 1100409007;2;Field ; Name=Field28; BlankNumbers=BlankZero; Description=AMB0003|AMB0009; SourceExpr=MATRIX_CellData[28]; AutoFormatType=1; CaptionClass='3,' + MATRIX_ColumnCaption[28]; Visible=Field28Visible; OnDrillDown=BEGIN MatrixOnDrillDown(28); END; } { 1100409008;2;Field ; Name=Field29; BlankNumbers=BlankZero; Description=AMB0003|AMB0009; SourceExpr=MATRIX_CellData[29]; AutoFormatType=1; CaptionClass='3,' + MATRIX_ColumnCaption[29]; Visible=Field29Visible; OnDrillDown=BEGIN MatrixOnDrillDown(29); END; } { 1100409005;2;Field ; Name=Field30; BlankNumbers=BlankZero; Description=AMB0003|AMB0009; SourceExpr=MATRIX_CellData[30]; AutoFormatType=1; CaptionClass='3,' + MATRIX_ColumnCaption[30]; Visible=Field30Visible; OnDrillDown=BEGIN MatrixOnDrillDown(10); END; } { 1100409006;2;Field ; Name=Field31; BlankNumbers=BlankZero; Description=AMB0003|AMB0009; SourceExpr=MATRIX_CellData[31]; AutoFormatType=1; CaptionClass='3,' + MATRIX_ColumnCaption[31]; Visible=Field31Visible; OnDrillDown=BEGIN MatrixOnDrillDown(31); END; } { 1100409004;2;Field ; Name=Field32; BlankNumbers=BlankZero; Description=AMB0003|AMB0009; SourceExpr=MATRIX_CellData[32]; AutoFormatType=1; CaptionClass='3,' + MATRIX_ColumnCaption[32]; Visible=Field32Visible; OnDrillDown=BEGIN MatrixOnDrillDown(32); END; } } CODE { VAR SalesLine@1035 : Record 37; MatrixRecords@1002 : ARRAY [32] OF Record 27; MatrixRecord@1039 : Record 27; MATRIX_NoOfMatrixColumns@1001 : Integer; MATRIX_CellData@1042 : ARRAY [32] OF Decimal; MATRIX_ColumnCaption@1000 : ARRAY [32] OF Text[1024]; Field1Visible@19069335 : Boolean INDATASET; Field2Visible@19014807 : Boolean INDATASET; Field3Visible@19062679 : Boolean INDATASET; Field4Visible@19074839 : Boolean INDATASET; Field5Visible@19043543 : Boolean INDATASET; Field6Visible@19067287 : Boolean INDATASET; Field7Visible@19067863 : Boolean INDATASET; Field8Visible@19039959 : Boolean INDATASET; Field9Visible@19008663 : Boolean INDATASET; Field10Visible@19006501 : Boolean INDATASET; Field11Visible@19052468 : Boolean INDATASET; Field12Visible@19013039 : Boolean INDATASET; Field13Visible@19079726 : Boolean INDATASET; Field14Visible@19077225 : Boolean INDATASET; Field15Visible@19035896 : Boolean INDATASET; Field16Visible@19003763 : Boolean INDATASET; Field17Visible@19049730 : Boolean INDATASET; Field18Visible@19007213 : Boolean INDATASET; Field19Visible@19053180 : Boolean INDATASET; Field20Visible@19014629 : Boolean INDATASET; Field21Visible@19060596 : Boolean INDATASET; Field22Visible@19021167 : Boolean INDATASET; Field23Visible@19047854 : Boolean INDATASET; Field24Visible@19045353 : Boolean INDATASET; Field25Visible@19004024 : Boolean INDATASET; Field26Visible@19011891 : Boolean INDATASET; Field27Visible@19057858 : Boolean INDATASET; Field28Visible@19015341 : Boolean INDATASET; Field29Visible@19061308 : Boolean INDATASET; Field30Visible@19010597 : Boolean INDATASET; Field31Visible@19056564 : Boolean INDATASET; Field32Visible@19017135 : Boolean INDATASET; LOCAL PROCEDURE MATRIX_OnAfterGetRecord@1047(ColumnID@1000 : Integer); VAR Cust@1001 : Record 18; BEGIN //AMB0006-BEGIN Cust.COPY(Rec); Cust.SETRANGE("Type Filter","Type Filter"::Item); Cust.SETRANGE("No. Filter",MatrixRecords[ColumnID]."No."); Cust.CALCFIELDS("Total Amount"); MATRIX_CellData[ColumnID] := Cust."Total Amount"; SetVisible; //AMB0006-END END; PROCEDURE Load@3(MatrixColumns1@1001 : ARRAY [32] OF Text[1024];VAR MatrixRecords1@1002 : ARRAY [32] OF Record 27;VAR MatrixRecord1@1000 : Record 27); BEGIN //AMB0005-BEGIN COPYARRAY(MATRIX_ColumnCaption,MatrixColumns1,1); COPYARRAY(MatrixRecords,MatrixRecords1,1); MatrixRecord.COPY(MatrixRecord1); //AMB0005-END END; PROCEDURE MatrixOnDrillDown@1100409001(ColumnID@1000 : Integer); BEGIN //AMB0009-BEGIN SalesLine.SETCURRENTKEY("Sell-to Customer No.",Type,"No."); SalesLine.SETRANGE("Sell-to Customer No.","No."); SalesLine.SETRANGE(Type,SalesLine.Type::Item); SalesLine.SETRANGE("No.",MatrixRecords[ColumnID]."No."); FORM.RUN(0,SalesLine); //AMB0009-END END; PROCEDURE SetVisible@6(); BEGIN //AMB0006-BEGIN Field1Visible := MATRIX_ColumnCaption[1] <> ''; Field2Visible := MATRIX_ColumnCaption[2] <> ''; Field3Visible := MATRIX_ColumnCaption[3] <> ''; Field4Visible := MATRIX_ColumnCaption[4] <> ''; Field5Visible := MATRIX_ColumnCaption[5] <> ''; Field6Visible := MATRIX_ColumnCaption <> ''; Field7Visible := MATRIX_ColumnCaption[7] <> ''; Field8Visible := MATRIX_ColumnCaption <> ''; Field9Visible := MATRIX_ColumnCaption[9] <> ''; Field10Visible := MATRIX_ColumnCaption[10] <> ''; Field11Visible := MATRIX_ColumnCaption[11] <> ''; Field12Visible := MATRIX_ColumnCaption[12] <> ''; Field13Visible := MATRIX_ColumnCaption[13] <> ''; Field14Visible := MATRIX_ColumnCaption[14] <> ''; Field15Visible := MATRIX_ColumnCaption[15] <> ''; Field16Visible := MATRIX_ColumnCaption[16] <> ''; Field17Visible := MATRIX_ColumnCaption[17] <> ''; Field18Visible := MATRIX_ColumnCaption[18] <> ''; Field19Visible := MATRIX_ColumnCaption[19] <> ''; Field20Visible := MATRIX_ColumnCaption[20] <> ''; Field21Visible := MATRIX_ColumnCaption[21] <> ''; Field22Visible := MATRIX_ColumnCaption[22] <> ''; Field23Visible := MATRIX_ColumnCaption[23] <> ''; Field24Visible := MATRIX_ColumnCaption[24] <> ''; Field25Visible := MATRIX_ColumnCaption[25] <> ''; Field26Visible := MATRIX_ColumnCaption[26] <> ''; Field27Visible := MATRIX_ColumnCaption[27] <> ''; Field28Visible := MATRIX_ColumnCaption[28] <> ''; Field29Visible := MATRIX_ColumnCaption[29] <> ''; Field30Visible := MATRIX_ColumnCaption[30] <> ''; Field31Visible := MATRIX_ColumnCaption[31] <> ''; Field32Visible := MATRIX_ColumnCaption[32] <> ''; //AMB0006-END END; BEGIN { <changelog> <add id="AMB0002" dev="lvanvugt" date="2012-04-20" source="http://dynamicsuser.net/blogs/vanvugt/archive/2012/04/20/how-to-create-a-one-page-matrix.aspx" releaseversion="Advanced Matrix Box">Step 1 - One-Page Matrix Step-by-Step</add> <change id="AMB0003" dev="lvanvugt" date="2012-04-20" source="http://dynamicsuser.net/blogs/vanvugt/archive/2012/04/20/how-to-create-a-one-page-matrix.aspx" releaseversion="Advanced Matrix Box">Step 3 - One-Page Matrix Step-by-Step</change> <change id="AMB0005" dev="lvanvugt" date="2012-04-20" source="http://dynamicsuser.net/blogs/vanvugt/archive/2012/04/20/how-to-create-a-one-page-matrix.aspx" releaseversion="Advanced Matrix Box">Step 5 - One-Page Matrix Step-by-Step</change> <change id="AMB0006" dev="lvanvugt" date="2012-04-20" source="http://dynamicsuser.net/blogs/vanvugt/archive/2012/04/20/how-to-create-a-one-page-matrix.aspx" releaseversion="Advanced Matrix Box">Step 6 - One-Page Matrix Step-by-Step</change> <change id="AMB0009" dev="lvanvugt" date="2012-04-20" source="http://dynamicsuser.net/blogs/vanvugt/archive/2012/04/20/how-to-create-a-one-page-matrix.aspx" releaseversion="Advanced Matrix Box">Step 9 - One-Page Matrix Step-by-Step</change> </changelog> } END. } }
OBJECT Page 62107 Customer/Item Spending Matrix
Editable=No;
CaptionML=ENU=Customer/Item Spending Matix;
PageType=ListPart;
OnInit=BEGIN
//AMB0006-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;
//AMB0006-END
MATRIX_NoOfMatrixColumns := ARRAYLEN(MATRIX_CellData);
OnAfterGetRecord=VAR
MATRIX_CurrentColumnOrdinal@1018 : Integer;
MATRIX_CurrentColumnOrdinal := 0;
IF MatrixRecord.FIND('-') THEN
MATRIX_CurrentColumnOrdinal := MATRIX_CurrentColumnOrdinal + 1;
MATRIX_OnAfterGetRecord(MATRIX_CurrentColumnOrdinal);
UNTIL (MatrixRecord.NEXT(1) = 0) OR (MATRIX_CurrentColumnOrdinal = MATRIX_NoOfMatrixColumns);
{ 1 ;1;Group ;
Name=Group;
Description=AMB0009;
GroupType=Repeater;
FreezeColumnID=Name }
{ 2 ;2;Field ;
SourceExpr="No." }
{ 4 ;2;Field ;
SourceExpr=Name }
{ 1008;2;Field ;
Name=Field1;
BlankNumbers=BlankZero;
Description=AMB0003|AMB0009;
SourceExpr=MATRIX_CellData[1];
AutoFormatType=1;
CaptionClass='3,' + MATRIX_ColumnCaption[1];
Visible=Field1Visible;
OnDrillDown=BEGIN
MatrixOnDrillDown(1);
{ 1100409033;2;Field ;
Name=Field2;
SourceExpr=MATRIX_CellData[2];
CaptionClass='3,' + MATRIX_ColumnCaption[2];
Visible=Field2Visible;
MatrixOnDrillDown(2);
{ 1100409034;2;Field ;
Name=Field3;
SourceExpr=MATRIX_CellData[3];
CaptionClass='3,' + MATRIX_ColumnCaption[3];
Visible=Field3Visible;
MatrixOnDrillDown(3);
{ 1100409031;2;Field ;
Name=Field4;
SourceExpr=MATRIX_CellData[4];
CaptionClass='3,' + MATRIX_ColumnCaption[4];
Visible=Field4Visible;
MatrixOnDrillDown(4);
{ 1100409032;2;Field ;
Name=Field5;
SourceExpr=MATRIX_CellData[5];
CaptionClass='3,' + MATRIX_ColumnCaption[5];
Visible=Field5Visible;
MatrixOnDrillDown(5);
{ 1100409029;2;Field ;
Name=Field6;
SourceExpr=MATRIX_CellData;
CaptionClass='3,' + MATRIX_ColumnCaption;
Visible=Field6Visible;
MatrixOnDrillDown(6);
{ 1100409030;2;Field ;
Name=Field7;
SourceExpr=MATRIX_CellData[7];
CaptionClass='3,' + MATRIX_ColumnCaption[7];
Visible=Field7Visible;
MatrixOnDrillDown(7);
{ 1100409027;2;Field ;
Name=Field8;
Visible=Field8Visible;
MatrixOnDrillDown(8);
{ 1100409028;2;Field ;
Name=Field9;
SourceExpr=MATRIX_CellData[9];
CaptionClass='3,' + MATRIX_ColumnCaption[9];
Visible=Field9Visible;
MatrixOnDrillDown(9);
{ 1100409025;2;Field ;
Name=Field10;
SourceExpr=MATRIX_CellData[10];
CaptionClass='3,' + MATRIX_ColumnCaption[10];
Visible=Field10Visible;
MatrixOnDrillDown(10);
{ 1100409026;2;Field ;
Name=Field11;
SourceExpr=MATRIX_CellData[11];
CaptionClass='3,' + MATRIX_ColumnCaption[11];
Visible=Field11Visible;
MatrixOnDrillDown(11);
{ 1100409023;2;Field ;
Name=Field12;
SourceExpr=MATRIX_CellData[12];
CaptionClass='3,' + MATRIX_ColumnCaption[12];
Visible=Field12Visible;
MatrixOnDrillDown(12);
{ 1100409024;2;Field ;
Name=Field13;
SourceExpr=MATRIX_CellData[13];
CaptionClass='3,' + MATRIX_ColumnCaption[13];
Visible=Field13Visible;
MatrixOnDrillDown(13);
{ 1100409021;2;Field ;
Name=Field14;
SourceExpr=MATRIX_CellData[14];
CaptionClass='3,' + MATRIX_ColumnCaption[14];
Visible=Field14Visible;
MatrixOnDrillDown(14);
{ 1100409022;2;Field ;
Name=Field15;
SourceExpr=MATRIX_CellData[15];
CaptionClass='3,' + MATRIX_ColumnCaption[15];
Visible=Field15Visible;
MatrixOnDrillDown(15);
{ 1100409019;2;Field ;
Name=Field16;
SourceExpr=MATRIX_CellData[16];
CaptionClass='3,' + MATRIX_ColumnCaption[16];
Visible=Field16Visible;
MatrixOnDrillDown(16);
{ 1100409020;2;Field ;
Name=Field17;
SourceExpr=MATRIX_CellData[17];
CaptionClass='3,' + MATRIX_ColumnCaption[17];
Visible=Field17Visible;
MatrixOnDrillDown(17);
{ 1100409017;2;Field ;
Name=Field18;
SourceExpr=MATRIX_CellData[18];
CaptionClass='3,' + MATRIX_ColumnCaption[18];
Visible=Field18Visible;
MatrixOnDrillDown(18);
{ 1100409018;2;Field ;
Name=Field19;
SourceExpr=MATRIX_CellData[19];
CaptionClass='3,' + MATRIX_ColumnCaption[19];
Visible=Field19Visible;
MatrixOnDrillDown(19);
{ 1100409015;2;Field ;
Name=Field20;
SourceExpr=MATRIX_CellData[20];
CaptionClass='3,' + MATRIX_ColumnCaption[20];
Visible=Field20Visible;
MatrixOnDrillDown(20);
{ 1100409016;2;Field ;
Name=Field21;
SourceExpr=MATRIX_CellData[21];
CaptionClass='3,' + MATRIX_ColumnCaption[21];
Visible=Field21Visible;
MatrixOnDrillDown(21);
{ 1100409013;2;Field ;
Name=Field22;
SourceExpr=MATRIX_CellData[22];
CaptionClass='3,' + MATRIX_ColumnCaption[22];
Visible=Field22Visible;
MatrixOnDrillDown(22);
{ 1100409014;2;Field ;
Name=Field23;
SourceExpr=MATRIX_CellData[23];
CaptionClass='3,' + MATRIX_ColumnCaption[23];
Visible=Field23Visible;
MatrixOnDrillDown(23);
{ 1100409011;2;Field ;
Name=Field24;
SourceExpr=MATRIX_CellData[24];
CaptionClass='3,' + MATRIX_ColumnCaption[24];
Visible=Field24Visible;
MatrixOnDrillDown(24);
{ 1100409012;2;Field ;
Name=Field25;
SourceExpr=MATRIX_CellData[25];
CaptionClass='3,' + MATRIX_ColumnCaption[25];
Visible=Field25Visible;
MatrixOnDrillDown(25);
{ 1100409009;2;Field ;
Name=Field26;
SourceExpr=MATRIX_CellData[26];
CaptionClass='3,' + MATRIX_ColumnCaption[26];
Visible=Field26Visible;
MatrixOnDrillDown(26);
{ 1100409010;2;Field ;
Name=Field27;
SourceExpr=MATRIX_CellData[27];
CaptionClass='3,' + MATRIX_ColumnCaption[27];
Visible=Field27Visible;
MatrixOnDrillDown(27);
{ 1100409007;2;Field ;
Name=Field28;
SourceExpr=MATRIX_CellData[28];
CaptionClass='3,' + MATRIX_ColumnCaption[28];
Visible=Field28Visible;
MatrixOnDrillDown(28);
{ 1100409008;2;Field ;
Name=Field29;
SourceExpr=MATRIX_CellData[29];
CaptionClass='3,' + MATRIX_ColumnCaption[29];
Visible=Field29Visible;
MatrixOnDrillDown(29);
{ 1100409005;2;Field ;
Name=Field30;
SourceExpr=MATRIX_CellData[30];
CaptionClass='3,' + MATRIX_ColumnCaption[30];
Visible=Field30Visible;
{ 1100409006;2;Field ;
Name=Field31;
SourceExpr=MATRIX_CellData[31];
CaptionClass='3,' + MATRIX_ColumnCaption[31];
Visible=Field31Visible;
MatrixOnDrillDown(31);
{ 1100409004;2;Field ;
Name=Field32;
SourceExpr=MATRIX_CellData[32];
CaptionClass='3,' + MATRIX_ColumnCaption[32];
Visible=Field32Visible;
MatrixOnDrillDown(32);
SalesLine@1035 : Record 37;
MatrixRecords@1002 : ARRAY [32] OF Record 27;
MatrixRecord@1039 : Record 27;
MATRIX_NoOfMatrixColumns@1001 : Integer;
MATRIX_CellData@1042 : ARRAY [32] OF Decimal;
MATRIX_ColumnCaption@1000 : ARRAY [32] OF Text[1024];
Field1Visible@19069335 : Boolean INDATASET;
Field2Visible@19014807 : Boolean INDATASET;
Field3Visible@19062679 : Boolean INDATASET;
Field4Visible@19074839 : Boolean INDATASET;
Field5Visible@19043543 : Boolean INDATASET;
Field6Visible@19067287 : Boolean INDATASET;
Field7Visible@19067863 : Boolean INDATASET;
Field8Visible@19039959 : Boolean INDATASET;
Field9Visible@19008663 : Boolean INDATASET;
Field10Visible@19006501 : Boolean INDATASET;
Field11Visible@19052468 : Boolean INDATASET;
Field12Visible@19013039 : Boolean INDATASET;
Field13Visible@19079726 : Boolean INDATASET;
Field14Visible@19077225 : Boolean INDATASET;
Field15Visible@19035896 : Boolean INDATASET;
Field16Visible@19003763 : Boolean INDATASET;
Field17Visible@19049730 : Boolean INDATASET;
Field18Visible@19007213 : Boolean INDATASET;
Field19Visible@19053180 : Boolean INDATASET;
Field20Visible@19014629 : Boolean INDATASET;
Field21Visible@19060596 : Boolean INDATASET;
Field22Visible@19021167 : Boolean INDATASET;
Field23Visible@19047854 : Boolean INDATASET;
Field24Visible@19045353 : Boolean INDATASET;
Field25Visible@19004024 : Boolean INDATASET;
Field26Visible@19011891 : Boolean INDATASET;
Field27Visible@19057858 : Boolean INDATASET;
Field28Visible@19015341 : Boolean INDATASET;
Field29Visible@19061308 : Boolean INDATASET;
Field30Visible@19010597 : Boolean INDATASET;
Field31Visible@19056564 : Boolean INDATASET;
Field32Visible@19017135 : Boolean INDATASET;
LOCAL PROCEDURE MATRIX_OnAfterGetRecord@1047(ColumnID@1000 : Integer);
Cust@1001 : Record 18;
Cust.COPY(Rec);
Cust.SETRANGE("Type Filter","Type Filter"::Item);
Cust.SETRANGE("No. Filter",MatrixRecords[ColumnID]."No.");
Cust.CALCFIELDS("Total Amount");
MATRIX_CellData[ColumnID] := Cust."Total Amount";
SetVisible;
PROCEDURE Load@3(MatrixColumns1@1001 : ARRAY [32] OF Text[1024];VAR MatrixRecords1@1002 : ARRAY [32] OF Record 27;VAR MatrixRecord1@1000 : Record 27);
//AMB0005-BEGIN
COPYARRAY(MATRIX_ColumnCaption,MatrixColumns1,1);
COPYARRAY(MatrixRecords,MatrixRecords1,1);
MatrixRecord.COPY(MatrixRecord1);
//AMB0005-END
PROCEDURE MatrixOnDrillDown@1100409001(ColumnID@1000 : Integer);
SalesLine.SETCURRENTKEY("Sell-to Customer No.",Type,"No.");
SalesLine.SETRANGE("Sell-to Customer No.","No.");
SalesLine.SETRANGE(Type,SalesLine.Type::Item);
SalesLine.SETRANGE("No.",MatrixRecords[ColumnID]."No.");
FORM.RUN(0,SalesLine);
PROCEDURE SetVisible@6();
Field1Visible := MATRIX_ColumnCaption[1] <> '';
Field2Visible := MATRIX_ColumnCaption[2] <> '';
Field3Visible := MATRIX_ColumnCaption[3] <> '';
Field4Visible := MATRIX_ColumnCaption[4] <> '';
Field5Visible := MATRIX_ColumnCaption[5] <> '';
Field6Visible := MATRIX_ColumnCaption <> '';
Field7Visible := MATRIX_ColumnCaption[7] <> '';
Field8Visible := MATRIX_ColumnCaption <> '';
Field9Visible := MATRIX_ColumnCaption[9] <> '';
Field10Visible := MATRIX_ColumnCaption[10] <> '';
Field11Visible := MATRIX_ColumnCaption[11] <> '';
Field12Visible := MATRIX_ColumnCaption[12] <> '';
Field13Visible := MATRIX_ColumnCaption[13] <> '';
Field14Visible := MATRIX_ColumnCaption[14] <> '';
Field15Visible := MATRIX_ColumnCaption[15] <> '';
Field16Visible := MATRIX_ColumnCaption[16] <> '';
Field17Visible := MATRIX_ColumnCaption[17] <> '';
Field18Visible := MATRIX_ColumnCaption[18] <> '';
Field19Visible := MATRIX_ColumnCaption[19] <> '';
Field20Visible := MATRIX_ColumnCaption[20] <> '';
Field21Visible := MATRIX_ColumnCaption[21] <> '';
Field22Visible := MATRIX_ColumnCaption[22] <> '';
Field23Visible := MATRIX_ColumnCaption[23] <> '';
Field24Visible := MATRIX_ColumnCaption[24] <> '';
Field25Visible := MATRIX_ColumnCaption[25] <> '';
Field26Visible := MATRIX_ColumnCaption[26] <> '';
Field27Visible := MATRIX_ColumnCaption[27] <> '';
Field28Visible := MATRIX_ColumnCaption[28] <> '';
Field29Visible := MATRIX_ColumnCaption[29] <> '';
Field30Visible := MATRIX_ColumnCaption[30] <> '';
Field31Visible := MATRIX_ColumnCaption[31] <> '';
Field32Visible := MATRIX_ColumnCaption[32] <> '';
<add id="AMB0002"
releaseversion="Advanced Matrix Box">Step 1 - One-Page Matrix Step-by-Step</add>
<change id="AMB0003"
releaseversion="Advanced Matrix Box">Step 3 - One-Page Matrix Step-by-Step</change>
<change id="AMB0005"
releaseversion="Advanced Matrix Box">Step 5 - One-Page Matrix Step-by-Step</change>
<change id="AMB0006"
releaseversion="Advanced Matrix Box">Step 6 - One-Page Matrix Step-by-Step</change>