void VKAddFinancialDimension(DimensionAttributeValueSetStorage _dimSetStorage, str _name, str _value) { DimensionAttribute dimAttr = DimensionAttribute::findByName(_name); DimensionAttributeValue dimAttrValue; dimAttrValue = DimensionAttributeValue::findByDimensionAttributeAndValue(dimAttr, _value, false, true); if (_dimSetStorage) { _dimSetStorage.addItem(dimAttrValue); } else { throw error(strFmt("Value %1 for dimension %2 not found", _value, _name)); } }Usage:
DimensionAttributeValueSetStorage dimSetStorage = new DimensionAttributeValueSetStorage(); DimensionDefault defaultDimension; VKAddFinancialDimension(dimSetStorage, 'FinDimName1', 'FinDimValue'); VKAddFinancialDimension(dimSetStorage, 'FinDimName2', 'FinDimValue'); defaultDimension = dimSetStorage.save();Changing existing financial dimension set:
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; }
DimensionDefault newDimensionDefault = ledgerJournalTrans.DefaultDimension; newDimensionDefault = VKChangeFinancialDimensionValue(newDimensionDefault, 'FinsDimName1', 'FinDimValue'); newDimensionDefault = VKChangeFinancialDimensionValue(newDimensionDefault, 'FinsDimName2', 'FinDimValue');
MainAccount mainAccount = MainAccount::findByMainAccountId(_lineStaging.MainAccount); ledgerJournalTrans.AccountType = LedgerJournalACType::Ledger; ledgerJournalTrans.LedgerDimension = LedgerDefaultAccountHelper::getDefaultAccountFromMainAccountRecId(mainAccount.RecId); ledgerJournalTrans.LedgerDimension = LedgerDimensionFacade::serviceCreateLedgerDimension(ledgerJournalTrans.LedgerDimension, defaultDimension);
ledgerJournalTrans.AccountType = LedgerJournalACType::Vend; ledgerJournalTrans.LedgerDimension = LedgerDynamicAccountHelper::getDynamicAccountFromAccountNumber('VendAccountNum', ledgerJournalTrans.AccountType); ledgerJournalTrans.DefaultDimension = defaultDimension;
ledgerJournalTrans.DefaultDimension = LedgerDimensionFacade::getDefaultDimensionFromLedgerDimension(generalJournalAccountEntry.LedgerDimension);
If you found value in what I share, I've set up a Buy Me a Coffee page as a way to show your support.
Buy Me a CoffeeNo comments. Be the first one to comment on this post.
DaxOnline.org is free platform that allows you to quickly store and reuse snippets, notes, articles related to Dynamics 365 FO.
Authors are allowed to set their own "buy me a coffee" link.
Join us.