IMsFormula.FreeDimensions

Синтаксис Fore

FreeDimensions: IMsDimensionFilterList;

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

FreeDimensions: Prognoz.Platform.Interop.Ms.IMsDimensionFilterList;

Описание

Свойство FreeDimensions возвращает коллекцию измерений, по которым разрешена множественная отметка.

Комментарии

С помощью данного свойства доступна установка множественной отметки в моделируемой переменной.

Примечание. Множественная отметка в моделируемой переменной доступна только в модели детерминированного уравнения.

Если измерение содержится в коллекции FreeDimensions, то выходная переменная может иметь множественную отметку по данному измерению. Таким образом, в детерминированном уравнении расчет будет выполняться в цикле по всем выделенным элементам.

Особенности:

Пример Fore

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

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

Sub UserProc;
Var
    mb: IMetabase;
    MsKey: Integer;
    Model: IMsModel;
    Transform: IMsFormulaTransform;
    Formula: IMsFormula;
    FreeDimensions: IMsDimensionFilterList;
    OutputVar: IMsFormulaTransformVariable;
    Slice: IMsFormulaTransformSlice;
    DimSel: IDimSelection;
    Dim: IDimensionModel;
    Filter: IMsDimensionFilter;
Begin
    // Получаем текущий репозиторий
    mb := MetabaseClass.Active;
    // Получаем ключ контейнера моделирования
    MsKey := mb.GetObjectKeyById("MS");
    // Получаем модель
    Model := mb.ItemByIdNamespace("MODEL_FREEDIM", MsKey).Edit As IMsModel;
    // Получаем параметры расчета модели
    Transform := Model.Transform;
    // Получаем метод расчета модели
    Formula := Transform.FormulaItem(0);
    // Получаем список измерений, по которым разрешена множественная отметка
    FreeDimensions := Formula.FreeDimensions;
    // Получаем моделируемую переменную
    OutputVar := Transform.Outputs.Item(0);
    // Задаем множественную отметку по первому измерению переменной
    Slice := OutputVar.Slices.Item(0);
    DimSel := Slice.Selection.Item(0);
    DimSel.DeselectAll;
    DimSel.SelectElement(1False);
    DimSel.SelectElement(2False);
    // Получаем данное измерение и разрешаем в нем множественную отметку
    Dim := Slice.ParametrizedDimensions.Item(0).Dimension;
    Filter := FreeDimensions.Add(Dim);
    // Указываем, что измерение нефиксированное
    Filter.Fixed := False;
    // Сохраняем изменения
    (Model As IMetabaseObject).Save;
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;
    OutputVar: IMsFormulaTransformVariable;
    Slice: IMsFormulaTransformSlice;
    DimSel: IDimSelection;
    Dim: IDimensionModel;
    Filter: IMsDimensionFilter;
Begin
    // Получаем текущий репозиторий
    mb := Params.Metabase;
    // Получаем ключ контейнера моделирования
    MsKey := mb.GetObjectKeyById("MS");
    // Получаем модель
    Model := mb.ItemByIdNamespace["MODEL_FREEDIM", MsKey].Edit() As IMsModel;
    // Получаем параметры расчета модели
    Transform := Model.Transform;
    // Получаем метод расчета модели
    Formula := Transform.FormulaItem[0];
    // Получаем список измерений, по которым разрешена множественная отметка
    FreeDimensions := Formula.FreeDimensions;
    // Получаем моделируемую переменную
    OutputVar := Transform.Outputs.Item[0];
    // Задаем множественную отметку по первому измерению переменной
    Slice := OutputVar.Slices.Item[0];
    DimSel := Slice.Selection.Item[0];
    DimSel.DeselectAll();
    DimSel.SelectElement(1False);
    DimSel.SelectElement(2False);
    // Получаем данное измерение и разрешаем в нем множественную отметку
    Dim := Slice.ParametrizedDimensions.Item[0].Dimension;
    Filter := FreeDimensions.Add(Dim);
    // Указываем, что измерение нефиксированное
    Filter.Fixed := False;
    // Сохраняем изменения
    (Model As IMetabaseObject).Save();
End Sub;

См. также:

IMsFormula