Dynamics AX Blog - Posts from Februar 2014

These posts are machine-translated.
Currently, only posts from »Februar 2014« are displayed Filter entfernen

AX 2012: Synchronization errors are displayed, although these have already been solved

I recently had the problem that when i synchronize the database in the form database Synchronize database errors and/or warnings have been issued, in which i was sure that these have already been resolved.

A simple solution to this behaviour is to delete the contents of the table SqlSyncInfo.

The table can be found in the AOT under System Documentation > Tables > SqlSyncInfo.

Incidentally, there is also the form SysSqlSync, which can be opened at any time and there you can view the result of the last synchronization.

Screenshot
 


 
 
 

How to open a (simple) report in a specific language

Using the report CustTransList (Accounts receiveable > Reports > Transactions > Customer > Transaction) i would like to demonstrate, how it is possible to call a report in a other language, the the client is currently running in.

There are no classes available for this report, so i have to cretae my own one:

class CustTransListController extends SrsReportRunController
{
}

 

public static str getReportName(Args _args)
{
    str reportName = ssrsReportStr(CustTransList, Report);
    return reportName;
}

 

public static void main(Args _args)
{
    CustTransListController  controller = new CustTransListController();
    controller.parmReportName(CustTransListController::getReportName(_args));
    controller.parmArgs(_args);
    controller.parmReportContract().parmRdlContract().parmLanguageId('en-us');
    
    controller.startOperation();
}

Using this class now it is possible, to run the report in every language (which should be provided using the parmLanguageId()-method.


 
 
 

AX 2012: Show financial dimension using display method

Following display-method (created in the datasource of the form custtable) shows the  financial dimension Costcenter.

public display DimensionValue showCostCenter(CustTable _custTable)
{
    DimensionAttributeValueSet dimensionAttributeValueSet;
    DimensionAttributeValueSetItem dimensionAttributeValueSetItem;
    DimensionAttributeValue dimensionAttributeValue;
    DimensionAttribute dimensionAttribute;

    #define.CostCenterDimensionName("CostCenter");
 
    if( !_custTable || !_custTable.DefaultDimension)
    {
        return '';
    } 

    dimensionAttributeValueSet = DimensionAttributeValueSet::find(_custTable.DefaultDimension); 

    select firstOnly RecId
    from dimensionAttributeValueSetItem
        where dimensionAttributeValueSetItem.DimensionAttributeValueSet == dimensionAttributeValueSet.RecId
    join DimensionAttributeValue
        where DimensionAttributeValue.RecId == dimensionAttributeValueSetItem.DimensionAttributeValue
    join RecId from dimensionAttribute
    where dimensionAttribute.RecId == DimensionAttributeValue.DimensionAttribute
       && dimensionAttribute.Name  == #CostCenterDimensionName
    

    if(dimensionAttributeValue && dimensionAttribute)
    {
        return dimensionAttributeValue.getValue();
    }

    return '';
}

Simpler version (see comments)

public display DimensionValue showCostCenter(CustTable _custTable)
{
    #define.CostCenterDimensionName("CostCenter");
 
    return ((select firstOnly DisplayValue from DefaultDimensionView
             where DefaultDimensionView.Name == #CostCenterDimensionName
                && DefaultDimensionView.DefaultDimension == _custTable.DefaultDimension).DisplayValue);
}

 
 
 

AX 2012: Enter financial dimension based on an form input

Sometimes you have the requirement that a certain financial dimension is to be set on the basis of an input in a form.

The following code example is something relatively easy to implement. In the example, whenever a particular field is changed - queried on the method modified() of the field of a DataSource, the financial dimension Costcenter will be filled with the value 25. If the value to be entered an invalid, nothing happens (error message or similar).

public void modified()
{
    DimensionAttribute DimensionAttribute = DimensionAttribute::findByName("Costcenter");
    DimensionValue newValue = '25';    // New dimension value
    
    super();
    
    dimensionDefaultingController.setDimensionAttributeValue(
        DimensionAttribute,
        DimensionAttributeValue::findByDimensionAttributeAndValue(DimensionAttribute, newValue).RecId, 
        newValue);
}

In the example, an existing instance of DimensionDefaultingController used.
 


 
 
 

 

 
 
 
Posts of the actual month
Februar 2014
MoTuWeThFrSaSu
 12
3456789
10111213141516
17181920212223
2425262728 
 
© 2006-2026 Heinz Schweda | Imprint | Contact | German version | Mobile version
In order to provide you with better service, this site uses cookies. By continuing to browse the site, you are agreeing to our use of cookies.