2012 Financial dimension editing

This question is not answered

In AX 2012, I am trying to do something amazingly simple: default in the dimension for a record from two sources, using the employee (first 2 dimensions) and the project (rest of the financial dimensions.

In AX2009, this would require 3 lines of code. So far I am up around 200 lines of code to accomplish the same result in AX 2012 and it still isn't working.

What I need to know is:

Is there any standard utility for saying "take this financial dimension record Id, and then alter the cost center dimension to be "X" and return me the new dimension record Id?

I have looked at the axdDimensionUtil class and it looks like it will only get me part of the way, with lots of coding ahead of me. The new financial dimension scheme is vaguely like the inventory dimension indirection from previous versions, but we are missing basic building blocks like the findOrCreate() functionality.

All Replies
  • Tom,

    I'm also trying to do something very simple (import customers that have default dimension values) and experiencing the same pains. Were ever able to come up with an easy solution or at least point me in the right direction?

    Thanks,

    Mat

  • Hi Guys,

    you can have a look at the following classes. i have not dig into details but below methods or classes helps u.

    DimensionDefaultingService Class

    The DimensionDefaultingService class provides standard primitive operations for building ledger accounts and merging default dimensions in the form of static methods

    // Merege two default dimension values into a single default dimension.

    // Only empty dimensions in the first default dimension are eligible for defaults.

    defaultDimension = DimensionDefaultingService::serviceMergeDefaultDimensions(

    defaultDimension1, defaultDImension2);

    You can search for other method in this class to.

    You can also look at class DimensionDefaultingEngine, you will find some usefull methods here also for defaulting and merging of dimensions.

  • The problem with the dimensionDefaultingService class is that you have no control over how the dimensions get merged. In fact, since the class is woefully undocumented you have to dig through several hundred of lines of code to understand how the merging takes place.

    I have researched the class, and the rules for

    DimensionDefaultingService::serviceMergeDefaultDimensions(dim1, dim2, dim3, dim4);

    are that the values in dim1 are ALWAYS used. If dim2 has any attributes not found in dim1, then that attribute comes from dim2, If dim3 has any attributes not found in Dim1 or dim2, then that attribute is merged in. And if dim4 has any attributes not found in dim1, dim2 or dim3, then those attributes are merged in.

    What it will NOT do is anything useful like:

    TSTimesheetLine.dimension[1] = ProjTable.Dimension[1];

    TSTimesheetLine.dimension[2] = EmplTable.Dimension[2];

    TSTimesheetLine.dimension[3] = "Dept01";

    If you want to pick and choose which components get merged from which dimension sources, then expect to spend a full day writing your own dimension merging class.