Dynamics AX Blog - Posts from Februar 2014
How to open a (simple) report in a specific languageUsing 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 methodFollowing 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 inputSometimes 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. |
|
|
|
|
|
|

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.