IMsCalculationChainVariable.Slice

Синтаксис Fore

Slice: IMsFormulaTransformSlice;

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

Slice: Prognoz.Platform.Interop.Ms.IMsFormulaTransformSlice;

Описание

Свойство Slice определяет срез переменной.

Комментарии

Для получения информации о том, является ли переменная внутренней для цепочки расчёта, используйте свойство IMsCalculationChainVariable.IsInternal.

Пример Fore

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

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

Sub ChainEntry;
Var
    mb: IMetabase;
    msKey: Integer;
    Problem: IMsProblem;
    Meta: IMsMetaModel;
    MetaVisual: IMsMetaModelVisualController;
    ChainEnts: IMsCalculationChainEntries;
    i: Integer;
    ChainEl: IMsCalculationChainEntry;
    ChainVar: IMsCalculationChainVariable;
Begin
    mb := MetabaseClass.Active;
    // Получаем ключ контейнера моделирования
    msKey := mb.GetObjectKeyById("MODEL_SPACE");
    // Получаем задачу моделирования
    Problem := mb.ItemByIdNamespace("WEB_PROBLEM", msKey).Bind As IMsProblem;
    // Получаем метамодель
    Meta := Problem.MetaModel;
    MetaVisual := Meta.VisualController;
    // Получаем цепочку расчёта метамодели
    ChainEnts := Meta.CalculationChain;
    For i := 0 To ChainEnts.Count - 1 Do
        ChainEl := ChainEnts.Item(i);
        // Выводим информацию только о переменных
        If ChainEl.Type = MsCalculationChainEntryType.Variable Then
            ChainVar := ChainEl As IMsCalculationChainVariable;
            Debug.WriteLine("Наименование: " + ChainVar.Slice.Name);
            Debug.WriteLine("Внутренняя переменная: " + ChainVar.IsInternal.ToString);
            Debug.WriteLine("");
        End If;
    End For;
End Sub ChainEntry;

После выполнения примера в окно консоли будет выведена информация о переменных, содержащихся в цепочке расчёта метамодели.

Пример Fore.NET

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

Imports Prognoz.Platform.Interop.Ms;

Public Shared Sub Main(Params: StartParams);
Var
    mb: IMetabase;
    msKey: uinteger;
    Problem: IMsProblem;
    Meta: IMsMetaModel;
    MetaVisual: IMsMetaModelVisualController;
    ChainEnts: IMsCalculationChainEntries;
    i: Integer;
    ChainEl: IMsCalculationChainEntry;
    ChainVar: IMsCalculationChainVariable;
Begin
    mb := Params.Metabase;
    // Получаем ключ контейнера моделирования
    msKey := mb.GetObjectKeyById("MODEL_SPACE");
    // Получаем задачу моделирования
    Problem := mb.ItemByIdNamespace["WEB_PROBLEM", msKey].Bind() As IMsProblem;
    // Получаем метамодель
    Meta := Problem.MetaModel;
    MetaVisual := Meta.VisualController;
    // Получаем цепочку расчёта метамодели
    ChainEnts := Meta.CalculationChain;
    For i := 0 To ChainEnts.Count - 1 Do
        ChainEl := ChainEnts.Item[i];
        // Выводим информацию только о переменных
        If ChainEl.Type = MsCalculationChainEntryType.mccetVariable Then
            ChainVar := ChainEl As IMsCalculationChainVariable;
            System.Diagnostics.Debug.WriteLine("Наименование: " + ChainVar.Slice.Name);
            System.Diagnostics.Debug.WriteLine("Внутренняя переменная: " + ChainVar.IsInternal.ToString());
            System.Diagnostics.Debug.WriteLine("");
        End If;
    End For;
End Sub;

См. также:

IMsCalculationChainVariable