public static DimensionAttributeValue VKValidateFinancialDimensionValue(DimensionAttribute _dimensionAttribute, str _dimensionValue, boolean _noError = false) { DimensionAttributeValue dimensionAttributeValue; dimensionAttributeValue = DimensionAttributeValue::findByDimensionAttributeAndValueNoError(_dimensionAttribute, _dimensionValue, false, true); if (!dimensionAttributeValue && !_noError) { error(strFmt("@SYS342560", _dimensionValue)); } return dimensionAttributeValue; }Get financial dimension value:
public static DimensionValue VKGetFinancialDimensonValue(DimensionDefault _dimensionDefault, Name _dimensionName) { DefaultDimensionView defaultDimensionView; select firstonly DisplayValue from defaultDimensionView where defaultDimensionView.Name == _dimensionName && defaultDimensionView.DefaultDimension == _dimensionDefault; return defaultDimensionView.DisplayValue; }
public static DimensionDefault VKChangeFinancialDimensionValue(DimensionDefault _dimensionDefault, Name _dimensionName, DimensionValue _newDimensionValue) { DimensionAttributeValueSetStorage dimensionAttributeValueSetStorage; DimensionAttribute dimensionAttribute; DimensionValue oldDimensionValue; DimensionDefault newDimensionDefault; // Get current value oldDimensionValue = VKFunctions::VKGetFinancialDimensonValue(_dimensionDefault, _dimensionName); // Build DimensionAttributeValueSetStorage dimensionAttributeValueSetStorage = DimensionAttributeValueSetStorage::find(_dimensionDefault); // Remove old dimension value dimensionAttribute = DimensionAttribute::findByName(_dimensionName); dimensionAttributeValueSetStorage.removeDimensionAttributeValue( DimensionAttributeValue::findByDimensionAttributeAndValue(dimensionAttribute, oldDimensionValue).RecId); // Set new dimension value if(_newDimensionValue) { dimensionAttributeValueSetStorage.addItem( DimensionAttributeValue::findByDimensionAttributeAndValue(dimensionAttribute, _newDimensionValue, false, true)); } newDimensionDefault = dimensionAttributeValueSetStorage.save(); return newDimensionDefault; }
AssetBook assetBook; DimensionDefault newDimensionDefault = assetBook.DefaultDimension; newDimensionDefault = VKChangeFinancialDimensionValue(newDimensionDefault, 'ALegalEntity', '010');
static LedgerDefaultDimensionValueSet VKGenerateDefaultDimension(str _legalEntity, str _workOrderNumber, str _workItemType) { List dimensionValues = new List(Types::Class); DimensionNameValueListContract dimensionNameValueListContract = new DimensionNameValueListContract(); DimensionStorageResult dimensionStorageResult; if (!_legalEntity) { _legalEntity = curExt(); } DimensionAttributeValueContract dimensionAttributeValueContractLE = DimensionAttributeValueContract::construct('ALegalEntity', _legalEntity); dimensionValues.addEnd(dimensionAttributeValueContractLE); if (_workOrderNumber) { DimensionAttributeValueContract dimensionAttributeValueContractWON = DimensionAttributeValueContract::construct('IWorkOrderNumber', _workOrderNumber); dimensionValues.addEnd(dimensionAttributeValueContractWON); } if (_workItemType) { DimensionAttributeValueContract dimensionAttributeValueContractWIT = DimensionAttributeValueContract::construct('JWorkItemType', _workItemType); dimensionValues.addEnd(dimensionAttributeValueContractWIT); } dimensionNameValueListContract.parmValues(dimensionValues); dimensionStorageResult = DimensionNameValueListServiceProvider::newForDimensionNameValueListContract(dimensionNameValueListContract).resolve(); return dimensionStorageResult.parmSavedRecId(); }Usage:
inventJournalTrans.DefaultDimension = VKGenerateDefaultDimension('010', 'work order 1', 'work item 1');Other helper classes, which contain static methods to help with finantial dimensions:
DaxOnline.org is free platform that allows you to quickly store and reuse snippets, notes, articles related to Dynamics AX.
Authors are allowed to set their own AdSense units.
Join us.