Что то похожее делал, но другая аналитика:
X++:
[DataEventHandler(tableStr(SalesTable), DataEventType::Inserting)]
public static void mtsSalesTable_onInserting(Common sender, DataEventArgs e)
{
SalesTable salesTable = sender as SalesTable;
if (salesTable.MTSBusinessUnit)
{
salesTable.DefaultDimension = LedgerDimensionDefaultFacade::serviceReplaceAttributeValue(
salesTable.DefaultDimension,
MTSBusinessUnitDialogClass::getDimensionDefaultFromBusinessUnit(salesTable.MTSBusinessUnit),
MTSBusinessUnitDialogClass::getDimensionAttributeOfBusinessUnit().RecId);
}
}
class MTSBusinessUnitDialogClass extends RunBase
{
static DimensionDefault getDimensionDefaultFromBusinessUnit(MTSBusinessUnitDialog _businessUnit)
{
DimensionDefault defaultDimensionLocal;
DimensionAttribute dimensionAttribute = MTSBusinessUnitDialogClass::getDimensionAttributeOfBusinessUnit();
DimensionAttributeValue dimensionAttributeValueLocal;
DimensionAttributeValueSetStorage valueSetStorageLocal = new DimensionAttributeValueSetStorage();
dimensionAttributeValueLocal = dimensionAttributeValue::findByDimensionAttributeAndValue(
dimensionAttribute,
_businessUnit,
false,
true);
valueSetStorageLocal.addItem(dimensionAttributeValueLocal);
defaultDimensionLocal = valueSetStorageLocal.save();
return defaultDimensionLocal;
}
static DimensionAttribute getDimensionAttributeOfBusinessUnit()
{
DimensionAttribute dimensionAttribute;
select firstonly dimensionAttribute
where dimensionAttribute.Type == DimensionAttributeType::ExistingList
&& dimensionAttribute.BackingEntityType == tableNum(DimAttributeOMBusinessUnit);
return dimensionAttribute;
}
}