RE: Derived Dimension function grayed out for entity-backed dimensions
The specific code that drives this looks to see if the backing entity is a company-specific table. If it is, then you cannot have derived dimensions. Here's the code:
Form Dimension Details - Datasource DimensionAttribute - Method Active calls method DimensionsDetail.dimensionAttribute_active() from the DimensionDetail class
...
if (dimensionValueDetailsDerivedDimension)
{
dimensionValueDetailsDerivedDimension.enabled(!dimensionAttribute.isSaveDataPerCompany());
}
...
DimensionAttribute Table
public boolean isSaveDataPerCompany()
{
return DimensionAttribute::doesTableSaveDataPerCompany(this.BackingEntityTableId);
}
public static boolean doesTableSaveDataPerCompany(RefTableId _backingEntityTableId)
{
boolean backingEntityDataPerCompany = false;
DictTable dictTable;
container cachedResult;
container cacheKey = [_backingEntityTableId];
DimensionCacheScope dimensionCacheScope = DimensionCacheScope::DimensionAttributeSaveDataPerCompany;
cachedResult = DimensionCache::getValue(dimensionCacheScope, cacheKey);
if (cachedResult == conNull())
{
dictTable = new DictTable(_backingEntityTableId);
if (dictTable.dataPrCompany())
{
backingEntityDataPerCompany = true;
}
cachedResult = [backingEntityDataPerCompany];
DimensionCache::insertValue(dimensionCacheScope, cacheKey, cachedResult);
}
return conpeek(cachedResult, 1);
}