Expression: IExpression;
Свойство Expression возвращает выражение, в соответствии с которым будут формироваться значения атрибута.
В выражении могут использоваться параметры конструируемого справочника, другие атрибуты, различные математические операции и функции.
Для выполнения примера в репозитории предполагается наличие вычисляемого куба с идентификатором CALC_CUBE.
Добавьте ссылки на системные сборки: Cubes, Dal, Dimensions, Metabase.
Sub UserProc;
Var
MB: IMetabase;
MObj: IMetabaseObject;
Cube: ICalculatedCube;
CustDim: ICustomDimension;
CustAttrs: ICustomDimAttributes;
Attr: ICustomDimAttribute;
CustDimParam: IMetabaseObjectParam;
Begin
// Получаем куб
MB := MetabaseClass.Active;
MObj := MB.ItemById("CALC_CUBE").Edit;
Cube := MObj As ICalculatedCube;
// Получаем измерение фактов куба
CustDim := Cube.InternalFactDimension;
//Создание параметра у кастомного справочника
MObj := CustDim As IMetabaseObject;
CustDimParam := MObj.Params.Add;
CustDimParam.Id := "PARAM1";
CustDimParam.Name := "PARAM1";
CustDimParam.DataType := DbDataType.Integer;
CustDimParam.DefaultValue := 100;
// Получаем коллекцию атрибутов измерения фактов
CustAttrs := CustDim.Attributes;
// Создаем новый атрибут с параметром в выражении
Attr := CustAttrs.Add;
Attr.Id := "EXPR1";
Attr.Name := "Выражение1";
Attr.DataType := DbDataType.Integer;
Attr.Visible := True;
Attr.Expression.AsString := "PARAM1 + Round(RandBetween(0,100))";
//Сохраняем
(CustDim As IMetabaseObject).Save;
End Sub UserProc;
При выполнение примера будет осуществлено редактирование структуры конструируемого справочника, который лежит в основе измерения фактов вычисляемого куба. В структуру справочника будет добавлен параметр, в коллекцию атрибутов справочника будет добавлен атрибут, значения которого будут рассчитываться по выражению, использующему созданный параметр.
См. также: