FilterDimension: IDimensionModel;
FilterDimension: Prognoz.Platform.Interop.Dimensions.IDimensionModel;
Свойство FilterDimension возвращает измерение, в котором разрешена множественная отметка.
Для фиксации данного измерения используйте свойство IMsDimensionFilter.Fixed.
Для выполнения примера в репозитории предполагается наличие контейнера моделирования с идентификатором «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.
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;
См. также: