FreeDimensions: IMsDimensionFilterList;
FreeDimensions: Prognoz.Platform.Interop.Ms.IMsDimensionFilterList;
Свойство FreeDimensions возвращает коллекцию измерений, по которым разрешена множественная отметка.
С помощью данного свойства доступна установка множественной отметки в моделируемой переменной.
Примечание. Множественная отметка в моделируемой переменной доступна только в модели детерминированного уравнения.
Если измерение содержится в коллекции FreeDimensions, то выходная переменная может иметь множественную отметку по данному измерению. Таким образом, в детерминированном уравнении расчет будет выполняться в цикле по всем выделенным элементам.
Особенности:
если в отметке моделируемой переменной есть незафиксированные элементы и их измерения содержатся в коллекции FreeDimensions, а свойство IMsMethodCalculation.AllowEmptySelection принимает значение False, то результат выгружается по всем элементам соответствующих измерений. Если свойство IMsMethodCalculation.AllowEmptySelection принимает значение True, то результат выгружается только по отмеченным элементам;
если в измерениях моделируемой переменной задана множественная отметка и данные измерения содержатся в коллекции FreeDimensions, то результат выгружается по всем элементам отметки;
если в отметке входной переменной есть незафиксированные элементы, то недостающая отметка берется из моделируемой переменной;
если отметка входной переменной полностью зафиксирована, то берется соответствующее ей значение.
Для выполнения примера в репозитории предполагается наличие контейнера моделирования с идентификатором «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(1, False);
DimSel.SelectElement(2, False);
// Получаем данное измерение и разрешаем в нем множественную отметку
Dim := Slice.ParametrizedDimensions.Item(0).Dimension;
Filter := FreeDimensions.Add(Dim);
// Указываем, что измерение нефиксированное
Filter.Fixed := False;
// Сохраняем изменения
(Model As IMetabaseObject).Save;
End Sub UserProc;
В результате выполнения примера расчет модели будет выполняться по множественной отметке первого измерения моделируемой переменной.
Необходимые требования и результат выполнения примера 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(1, False);
DimSel.SelectElement(2, False);
// Получаем данное измерение и разрешаем в нем множественную отметку
Dim := Slice.ParametrizedDimensions.Item[0].Dimension;
Filter := FreeDimensions.Add(Dim);
// Указываем, что измерение нефиксированное
Filter.Fixed := False;
// Сохраняем изменения
(Model As IMetabaseObject).Save();
End Sub;
См. также: