example code
public static DimensionDynamicAccount defaultDimension2ledgerDimension(LedgerJournalAC _ledgerJournalAC,DimensionDefault _defaultDimension ) { container conDimName; container conDimValue; int loop = 1; DimensionValue dimValue; Name dimName; DimensionServiceProvider DimensionServiceProvider = new DimensionServiceProvider(); LedgerAccountContract LedgerAccountContract = new LedgerAccountContract(); List ListValueContract = new List(Types::Class); DimensionAttributeValueContract ValueContract; dimensionAttributeValueCombination dimensionAttributeValueCombination; DimensionStorage dimStorage; conDimName = Global::getDimensionNameTID(); while(loop <= conLen(conDimName)) { dimName = conPeek(conDimName,loop); dimValue = Global::getDimensionValueTEC(_defaultDimension,dimName); if(dimValue) { ValueContract = new DimensionAttributeValueContract(); ValueContract.parmName(dimName); ValueContract.parmValue(dimValue); ListValueContract.addEnd(ValueContract); } loop++; } LedgerAccountContract.parmMainAccount(_ledgerJournalAC); LedgerAccountContract.parmValues(ListValueContract); dimStorage = DimensionServiceProvider::buildDimensionStorageForLedgerAccount(LedgerAccountContract); dimensionAttributeValueCombination = DimensionAttributeValueCombination::find(dimStorage.save()); return dimensionAttributeValueCombination.RecId; }
this below is a custom method on global class.. (or you can put it on other class)
public static container getDimensionNameTID() { DimensionAttribute dimAttr; DimensionAttributeSetItem dimAttrSetItem; DimensionEnumeration dimensionSetId; DimensionAttributeValue dimAttributeValue; container DimensionName; dimensionSetId = DimensionCache::getDimensionAttributeSetForLedger(); while select dimAttr order by Name where dimAttr.Type != DimensionAttributeType::MainAccount join RecId from dimAttrSetItem where dimAttrSetItem.DimensionAttribute == dimAttr.RecId && dimAttrSetItem.DimensionAttributeSet == dimensionSetId { dimensionName += dimAttr.Name; } return DimensionName; }
this below is a custom method on global class.. (or you can put it on other class)
public static str 255 getDimensionValueTEC(RecId defaultDimension, Name dimName) { DimensionAttributeValueSetStorage dimStorage; Counter i; DimensionAttribute dimAttributeCostCenter; DimensionAttributeValue dimAttributeValue; dimStorage = DimensionAttributeValueSetStorage::find(defaultDimension); return dimStorage.getDisplayValueByDimensionAttribute(DimensionAttribute::findByName(dimName).RecId); }
Global::getDimensionNameTID(); and Global::getDimensionValueTEC( methods not exists
hi there, i forgot to put the custom method on global class on this post..
just updated to post..
thanks for the comment 🙂
Thanks for this example.
It looks like something similar is implemented in standard: \Classes\DimensionDefaultingService\serviceCreateLedgerDimension
This post was extremely helpful. Saved a lot of time and effort.
Thanks! 🙂
Ergonomic Metal Chair
Nuevo Sol
UIC-Franc
interface
interface
Regional
Soft
e-tailers
encryption
indexing
Soap
Nepal
Internal
support
Response
Plastic
leverage
Factors
back-end
architect
Central