Dynamics AX Blog - Dynamics AX 2012 - Page 19

These posts are machine-translated.
Currently, only posts are displayed, which are relevant for Dynamics AX version »Dynamics AX 2012« Filter entfernen

RSS-Feed of this version

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.
 


 
 

Use macro within a SELECT statement

The SELECT-Statement in the example lists only active BOM items (Table BOM) on (active using the fields FromDate and ToDate). If the second parameter of the macro is empty (zero date ()), so all BOM items are listed.

static void useMacroInSelectStatement(Args _args)
{
    bom bom;
    date emptyDate;
    
    // parameters: %1 = table instance, %2 date, %3 empty date value
    #localmacro.bomDateFilter
        && ( %2 == dateNull() || (
            ((%1.FromDate <= %2) && (%1.ToDate >= %2)) ||
            ((%1.FromDate == %3) && (%1.ToDate == %3)) ||
            ((%1.FromDate <= %2) && (%1.ToDate == %3)) ||
            ((%1.FromDate == %3) && (%1.ToDate >= %2))
            ))
    #endMacro
    ;
    
    while select bom
    where bom.ItemId == '123'
    #bomDateFilter(bom, systemDateGet(), emptyDate)
    {
        info(bom.bomid);
    }
}

 
 

Which fields are shown in an auto-generated lookup?

I was asked this question recently and was not able to answer.

But i still knew that i had seen a page where this is explained in detail. But i knew neither find it manually nor using various search engines.

But in old documents of mine i found the source then, the trick to find it using search engines, is using the old name of Microsoft Dynamics AX - Axapta to look for it!

Do this, you will quickly find following page:

http://www.axaptapedia.com/index.php?title=Lookups


 
 

How to use an assembly/DLL in Dynamics AX

To use a DLL in Dynamics AX, the DLL must be added to the References node of the AOT.

This can be achieved by right-clicking on the node and select Add Reference. This opens a dialog where - depending on the "location" of the DLL - the following steps must be taken:

  • If the DLL is already registered in the Global Assembly Cache (GAC), it should already appear in the list where they can be selected using the checkbox on the left and selected with Select now.

    To register a DLL in the GAC, it is necessary that the DLL has been signed.
    They can be achieved via the command line using the following command
    "gacutil / i MyClassLibrary.dll"
  • If the DLL for example, is stored in the BIN directory of the client, you must first select it using the Browse button. Now they should appear in the list where they can be selected using the checkbox on the left and selected with Select.

In both cases, the dialog needs to be confirmed with OK.


 
 
Pages « 1 ... 16 17 18 19 20 21 22 » 

 

 
 
 
Posts of the actual month
April 2024
MoTuWeThFrSaSu
1234567
891011121314
15161718192021
22232425262728
2930 
 
© 2006-2024 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.