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