Hi,
I had to do this and after many search I found a way.
I share it here in case other people need it.
This is just for the current company here :
MainAccountLegalEntity mainAccountLegalEntity;
MainAccount mainAccount;
DimensionAttribute dimensionAttribute, dimAttr;
DimensionAttributeSetItem dimAttrSetItem;
DimensionAttributeValue dimensionAttributeValue;
DimensionAttributeValueSet dimAttrValueSet;
DimensionAttributeValueSetItem dimensionAttributeValueSetItem;
CompanyInfoRecId companyRecId = CompanyInfo::current();
DimensionAttributeSetStorage dimensionAttributeSetStorage;
HashKey dimAttrHashKeys[];
RecId dimAttrIds[];
int i, dimSize;
DimensionEnumeration dimensionSetId;
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
{
dimSize++;
dimAttrIds[dimSize] = dimAttr.RecId;
dimAttrHashKeys[dimSize] = dimAttr.HashKey;
}
while select forUpdate mainAccountLegalEntity
where mainAccountLegalEntity.LegalEntity == companyRecId
join mainAccount
where mainAccountLegalEntity.MainAccount == mainAccount.RecId
join dimAttrValueSet
where dimAttrValueSet.RecId == mainAccountLegalEntity.DefaultDimension
{
dimensionAttributeSetStorage = new DimensionAttributeSetStorage(enumnum(DimensionFixed));
for (i = 1; i <= dimSize; i++)
{
select dimensionAttributeValueSetItem
where dimensionAttributeValueSetItem.DimensionAttributeValueSet == dimAttrValueSet.RecId
join dimensionAttributeValue
where dimensionAttributeValue.RecId == dimensionAttributeValueSetItem.DimensionAttributeValue
join dimensionAttribute
where dimensionAttribute.RecId == dimensionAttributeValue.DimensionAttribute
&& dimensionAttribute.RecId == dimAttrIds[i];
dimensionAttributeSetStorage.addItem(dimAttrIds[i], dimAttrHashKeys[i], (dimensionAttributeValueSetItem.DisplayValue != "" ? 1 : 0));
}
ttsBegin;
mainAccountLegalEntity.FixedDimensions = dimensionAttributeSetStorage.save();
mainAccountLegalEntity.update();
ttsCommit;
}