IMsFormulaTransformCoord.TransparentDimensionsCount

Синтаксис

TransparentDimensionsCount: Integer;

TransparentDimensionsCount: integer;

Описание

Свойство TransparentDimensionsCount возвращает количество скрытых измерений в переменной.

Пример

Для выполнения примера предполагается наличие в репозитории базы данных временных рядов с идентификатором FC_PARAM. Данная база содержит атрибут COUNTRY, ссылающийся на справочник. В контейнере моделирования базы находится метамодель с идентификатором METAMODEL и модель с идентификатором MODEL. Для метамодели задан параметр, ссылающийся на тот же справочник, что и атрибут COUNTRY. Добавьте ссылки на системные сборки: Cubes, Dimensions, Metabase, Ms, Rds.

Sub UserProc;
Var
    mb: IMetabase;
    Catalog: IRubricator;
    Transforms: IMetabaseObjectDescriptor;
    MetaModel: IMsMetaModel;
    Model: IMsModel;
    Transform: IMsFormulaTransform;
    Input: IMsFormulaTransformVariable;
    Slice: IMsFormulaTransformSlice;
    Sel: IDimSelectionSet;
    Atts: IMetaAttributes;
    Dict: IMetabaseObjectDescriptor;
    dimInst: IDimInstance;
    dimSel: IDimSelection;
    Params: IMsModelParams;
    paramDim: IMsParametrizedDimensions;
    paramD: IMsParametrizedDimension;
    pr: IMsModelParam;
    Coord: IMsFormulaTransformCoord;
Begin
    
// Получаем репозиторий
    mb := MetabaseClass.Active;
    
// Получаем БДВР
    Catalog := mb.ItemById("FC_PARAM").Bind As IRubricator;
    
// Получаем контейнер моделирования
    Transforms := Catalog.ModelSpace;
    
// Получаем метамодель и модель
    MetaModel := mb.ItemByIdNamespace("METAMODEL", Transforms.Key).Bind As IMsMetaModel;
    Model := mb.ItemByIdNamespace(
"MODEL", Transforms.Key).Edit As IMsModel;
    
// Настраиваем параметры модели
    Transform := Model.Transform;
    Input := Transform.Inputs.Item(
0);
    Slice := Input.Slices.Item(
0);
    Sel := Slice.Selection;
    Atts := Catalog.Facts.Attributes;
    Dict := Atts.FindById(
"COUNTRY").ValuesObject;
    dimInst := Dict.Open(
NullAs IDimInstance;
    dimSel := Sel.Add(dimInst);
    dimSel.SelectElement(
0False);
    
// Настраиваем параметры метамодели
    Params := MetaModel.Params;
    pr := Params.Item(
0);
    paramDim := Slice.ParametrizedDimensions;
    paramD := paramDim.Item(
0);
    paramD.ParamAttributes.Parameter := pr;
    Debug.WriteLine(
"Наименование измерения: " + paramD.DimensionDescriptor.Name);
    Debug.WriteLine(
"Описание измерения: " + (paramD.Dimension As IMetabaseObject).Description);
    Coord := Transform.CreateCoord(Transform.Outputs.Item(
0));
    
If Coord.TransparentDimensionsCount > 0 Then
        Debug.WriteLine(
"Моделируемая переменная содержит скрытые измерения");
    
End If;
    (Model 
As IMetabaseObject).Save;
End Sub UserProc;

Imports Prognoz.Platform.Interop.Cubes;
Imports Prognoz.Platform.Interop.Dimensions;
Imports Prognoz.Platform.Interop.Ms;
Imports Prognoz.Platform.Interop.Rds;

Public Shared Sub Main(Params: StartParams);
Var
    mb: IMetabase;
    Catalog: IRubricator;
    Transforms: IMetabaseObjectDescriptor;
    MetaModel: IMsMetaModel;
    Model: IMsModel;
    Transform: IMsFormulaTransform;
    Input: IMsFormulaTransformVariable;
    Slice: IMsFormulaTransformSlice;
    Sel: IDimSelectionSet;
    Atts: IMetaAttributes;
    Dict: IMetabaseObjectDescriptor;
    dimInst: IDimInstance;
    dimSel: IDimSelection;
    Paramss: IMsModelParams;
    paramDim: IMsParametrizedDimensions;
    paramD: IMsParametrizedDimension;
    pr: IMsModelParam;
    Coord: IMsFormulaTransformCoord;
Begin
    
// Получаем репозиторий
    mb := Params.Metabase;
    
// Получаем БДВР
    Catalog := mb.ItemById["FC_PARAM"].Bind() As IRubricator;
    
// Получаем контейнер моделирования
    Transforms := Catalog.ModelSpace;
    
// Получаем метамодель и модель
    MetaModel := mb.ItemByIdNamespace["METAMODEL", Transforms.Key].Bind() As IMsMetaModel;
    Model := mb.ItemByIdNamespace[
"MODEL", Transforms.Key].Edit() As IMsModel;
    
// Настраиваем параметры модели
    Transform := Model.Transform;
    Input := Transform.Inputs.Item[
0];
    Slice := Input.Slices.Item[
0];
    Sel := Slice.Selection;
    Atts := Catalog.Facts.Attributes;
    Dict := Atts.FindById(
"COUNTRY").ValuesObject;
    dimInst := Dict.Open(
NullAs IDimInstance;
    dimSel := Sel.Add(dimInst);
    dimSel.SelectElement(
0False);
    
// Настраиваем параметры метамодели
    Paramss := MetaModel.Params;
    pr := Paramss.Item[
0];
    paramDim := Slice.ParametrizedDimensions;
    paramD := paramDim.Item[
0];
    paramD.ParamAttributes.Parameter := pr;
    System.Diagnostics.Debug.WriteLine(
"Наименование измерения: " + paramD.DimensionDescriptor.Name);
    System.Diagnostics.Debug.WriteLine(
"Описание измерения: " + (paramD.Dimension As IMetabaseObject).Description);
    Coord := Transform.CreateCoord(Transform.Outputs.Item[
0]);
    
If Coord.TransparentDimensionsCount > 0 Then
        System.Diagnostics.Debug.WriteLine(
"Моделируемая переменная содержит скрытые измерения");
    
End If;
    (Model 
As IMetabaseObject).Save();
End Sub;

В результате выполнения примера для среза переменной модели будет задано параметризированное измерение. Информация о нем будет выведено в окно консоли. Если моделируемая переменная модели содержит скрытые измерения, то данные об этом также будут выведены в консоль.

См. также:

IMsFormulaTransformCoord