Die "Details anzeigen"-Funktion für eine als einzelnes Feld eingebundene Finanzdimension einbinden
28.03.2015Microsoft Dynamics AX (Axapta)
|
Dieser Beitrag bezieht sich auf die Version:
Dynamics AX 2012
Dynamics AX 2012
|
|
|
|
|
|
Dieser Beitrag bezieht sich auf die Version:
Dynamics AX 2012
|
In diesem Beitrag habe ich beschrieben, wie man eine einzelne Finanzdimension als eigenes Feld einbinden kann.
Dies ist ein Folgebeitrag und soll demonstrieren, wie man für ein solches Feld die "Details anzeigen"-Funktion programmieren kann.
Dazu legen wir auf unserer Tabelle - im Beispiel die CustTable - eine entsprechende Methode wie folgt an:
{
DimensionAttribute dimAttribute;
DimensionAttributeValue dimAttributeValue;
selectableDataArea company = curext();
MenuFunction menuFunction;
Args args = new Args();
#define.CostCenter("CostCenter")
appl.setDefaultCompany(company, false);
// Determine the attribute value
dimAttribute = DimensionAttribute::findByName(#CostCenter);
if (_value)
{
dimAttributeValue = DimensionAttributeValue::findByDimensionAttributeAndValue(dimAttribute, _value, false, true);
}
// Jump to the appropriate backing table
if (dimAttribute.Type == DimensionAttributeType::MainAccount)
{
menuFunction = new MenuFunction(menuitemDisplayStr(MainAccountDetails), MenuItemType::Display);
if (dimAttributeValue)
{
args.lookupRecord(MainAccount::find(dimAttributeValue.EntityInstance));
}
}
else
{
menuFunction = new MenuFunction(menuitemDisplayStr(DimensionValueDetails), MenuItemType::Display);
args.record(dimAttribute);
args.parmEnum(NoYes::Yes);
if (dimAttributeValue)
{
args.lookupRecord(DimensionDefaultingControllerBase::findBackingEntityInstance(company, dimAttribute, dimAttributeValue.EntityInstance));
}
}
// Make sure no queries get passed to the jumpRef form
menuFunction.copyCallerQuery(CopyCallerQuery::No);
menuFunction.run(args);
}
Nun muss man noch im Formular die jumpRef()-Methode des jeweiligen StringEdit-Controls wie folgt überschreiben:
{
//super();
CustTable.jumpRefCostCenter(this.valueStr());
}