How to calculate Dimension Set ID

Starting from Dynamics NAV 2013, dimensions structure has changed a lot. Since then, a lot of developers struggle to insert or update dimensions pragmatically.

I will not bother you with what was already explained a hundred times in other blogs on how to calculate Dimension Set ID. Better, I will share with you a simple codeunit “SpecDimensionManagement” that will save you time whenever you will need to update dimensions (by update I mean Create, Update, Delete).

In order to use my codeunit, I invite you respect the following example:

WITH SpecDimensionManagement DO BEGIN
// Get Current Dimension Set ID or init a new one
INIT(MyRecord);
// Update my dimensions values
UPDATE('DIM1', 'VALUE1');
UPDATE('DIM2', 'VALUE2');
UPDATE('DIM3', 'VALUE3');
DELETE('DIM4');
DELETE('DIM5');
DELETE('DIM6');
// Calculate my new Dimension Set ID
MyRecord."Dimension Set ID" := GetDimSetID;
// Get new values if needed
GetCurrDimValues(DimCode, DimValueCode, MyRecord."Dimension Set ID");
END;

I put some comments to explain what the functions do.

In the fob, you’ll find codeunit 92600 that handle the calculation and codeunit 92601 where I create some examples for test.

Feel free to contact me if you need more details / informations. Share your ideas and feedback in comment section 🙂

P.S: the fob is from a NAV 2015 FR (Build 49000) database. I test it on NAV 2017 and 2016 also.

 

This blog is available also on Microsoft Dynamics NAV Community

2 thoughts on “How to calculate Dimension Set ID

  1. I came across this trying to understand how dim set ids work. Let me say, this was very helpful to me and I was able to solve my problem.
    I do however think that this is far more complicated than needed. All I am doing is removing and updating an existing dim set, then getting a new id. So copy into a temp, make your changes (pass by array if multiple), then call the dim mgmt cu to get your new id. Done.It’s like a dozen lines.

    Like

    • Hello Matt,

      I’m glad you resolved your problem.
      The idea behind this codeunit is to help junior developers who are not familiar with TempDimensionSetEntry and also lazy developers who do not wat to write the same code forever (the dozen lines you just wrote) 🙂

      Like

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google+ photo

You are commenting using your Google+ account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s