Источник:
http://alexvoy.blogspot.com/2023/09/...dimension.html
==============
In short Ledger dimension it is Main account + default dimension.
So, if you need to replace any attribute value in a given Ledger dimension, do not forget to get a Default dimension first.
LedgerDimensionFacade::getDefaultDimensionFromLedgerDimension(ledgerjournalTrans.LedgerDimension);
Then you can use this old good way.
DimensionDefault newDim = DimensionHelper::setValueToDefaultDimension(hcmEmployment.DefaultDimension, DimensionAttribute::findByName(_dimensionName).RecId, _dimensionValue);
BTW, the opposite thing works like that:
LedgerDimensionFacade::serviceCreateLedgerDimension(mainAccountRecId, inventTrans.defaultDimension);
Supporting method
public static DimensionDefault
setValueToDefaultDimension(DimensionDefault _dimensionDefault, RefRecId _dimensionAttributeRecId, DimensionValue _newDimensionValue) { DimensionAttributeValueSetStorage dimStorage; DimensionDefault newDimensionDefault = _dimensionDefault; DimensionAttributeValue dimensionAttributeValue;
if (_dimensionAttributeRecId) { dimStorage = DimensionAttributeValueSetStorage::find(_dimensionDefault);
if (_newDimensionValue) { dimensionAttributeValue = DimensionAttributeValue::findByDimensionAttributeAndValue(DimensionAttribute::find(_dimensionAttributeRecId), _newDimensionValue,
false,
true); dimStorage.addItem(dimensionAttributeValue); }
else { dimStorage.removeDimensionAttribute(_dimensionAttributeRecId); } newDimensionDefault = dimStorage.save(); }
return newDimensionDefault; }
https://alexvoy.blogspot.com/2015/10...value-for.html
Источник:
http://alexvoy.blogspot.com/2023/09/...dimension.html