Slice: IMsFormulaTransformSlice;
Slice: Prognoz.Platform.Interop.Ms.IMsFormulaTransformSlice;
Свойство Slice определяет срез переменной.
Для получения информации о том, является ли переменная внутренней для цепочки расчёта, используйте свойство IMsCalculationChainVariable.IsInternal.
Для выполнения примера в репозитории предполагается наличие контейнера моделирования с идентификатором «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.
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;
См. также: