IMsDimensionFilter.FilterDimension

Синтаксис Fore

FilterDimension: IDimensionModel;

Синтаксис Fore.NET

FilterDimension: Prognoz.Platform.Interop.Dimensions.IDimensionModel;

Описание

Свойство FilterDimension возвращает измерение, в котором разрешена множественная отметка.

Комментарии

Для фиксации данного измерения используйте свойство IMsDimensionFilter.Fixed.

Пример Fore

Для выполнения примера в репозитории предполагается наличие контейнера моделирования с идентификатором «MS», содержащего модель детерминированного уравнения с идентификатором «MODEL_FREEDIM».

Добавьте ссылки на системные сборки: Dimensions, Metabase, Ms.

Sub UserProc;
Var
    mb: IMetabase;
    MsKey, i: Integer;
    Model: IMsModel;
    Transform: IMsFormulaTransform;
    Formula: IMsFormula;
    FreeDimensions: IMsDimensionFilterList;
    Filter: IMsDimensionFilter;
    Dim: IDimensionModel;
Begin
    // Получаем текущий репозиторий
    mb := MetabaseClass.Active;
    // Получаем ключ контейнера моделирования
    MsKey := mb.GetObjectKeyById("MS");
    // Получаем модель
    Model := mb.ItemByIdNamespace("MODEL_FREEDIM", MsKey).Bind As IMsModel;
    // Получаем параметры расчета модели
    Transform := Model.Transform;
    // Получаем метод расчета модели
    Formula := Transform.FormulaItem(0);
    // Получаем список измерений, по которым разрешена множественная отметка
    FreeDimensions := Formula.FreeDimensions;
    // Если такие измерения присутствуют, то выводим информацию о них
    If FreeDimensions.Count > 0 Then
        For i := 0 To FreeDimensions.Count - 1 Do
            Filter := FreeDimensions.Item(i);
            Dim := Filter.FilterDimension;
            Debug.WriteLine("Наименование измерения: " + (Dim As IMetabaseObject).Name);
            If Filter.Param <> Null
                Then Debug.WriteLine("    - измерение параметрическое, управляется параметром: " +
                    Filter.Param.Name);
                Else Debug.WriteLine("    - измерение непараметрическое");
            End If;
            If Filter.Fixed
                Then Debug.WriteLine("    - измерение зафиксированное");
                Else Debug.WriteLine("    - измерение незафиксированное");
            End If;
        End For;
    End If;
End Sub UserProc;

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

Пример Fore.NET

Необходимые требования и результат выполнения примера Fore.NET совпадают с примером Fore.

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

Public Shared Sub Main(Params: StartParams);
Var
    mb: IMetabase;
    MsKey: uinteger;
    Model: IMsModel;
    Transform: IMsFormulaTransform;
    Formula: IMsFormula;
    FreeDimensions: IMsDimensionFilterList;
    i: integer;
    Filter: IMsDimensionFilter;
    Dim: IDimensionModel;
Begin
    // Получаем текущий репозиторий
    mb := Params.Metabase;
    // Получаем ключ контейнера моделирования
    MsKey := mb.GetObjectKeyById("MS");
    // Получаем модель
    Model := mb.ItemByIdNamespace["MODEL_FREEDIM", MsKey].Bind() As IMsModel;
    // Получаем параметры расчета модели
    Transform := Model.Transform;
    // Получаем метод расчета модели
    Formula := Transform.FormulaItem[0];
    // Получаем список измерений, по которым разрешена множественная отметка
    FreeDimensions := Formula.FreeDimensions;
    // Если такие измерения присутствуют, то выводим информацию о них
    If FreeDimensions.Count > 0 Then
        For i := 0 To FreeDimensions.Count - 1 Do
            Filter := FreeDimensions.Item[i];
            Dim := Filter.FilterDimension;
            System.Diagnostics.Debug.WriteLine("Наименование измерения: " + (Dim As IMetabaseObject).Name);
            If Filter.Param <> Null
                Then System.Diagnostics.Debug.WriteLine("    - измерение параметрическое, управляется параметром: " +
                    Filter.Param.Name);
                Else System.Diagnostics.Debug.WriteLine("    - измерение непараметрическое");
            End If;
            If Filter.Fixed
                Then System.Diagnostics.Debug.WriteLine("    - измерение зафиксированное");
                Else System.Diagnostics.Debug.WriteLine("    - измерение незафиксированное");
            End If;
        End For;
    End If;
End Sub;

См. также:

IMsDimensionFilter