DataType: DbDataType;
DataType: Prognoz.Platform.Interop.Dal.DbDataType;
Свойство DataType возвращает тип данных параметра.
Для получения типа параметра используйте свойство ITsModelParamValue.ParamType.
Для выполнения примера в репозитории предполагается наличие контейнера моделирования с идентификатором «MODEL_SPACE». Контейнер моделирования должен содержать задачу моделирования с идентификатором «PROBLEM», рассчитывающую метамодель с параметрами.
Добавьте ссылки на системные сборки «Metabase», «Ms», «Dal».
Sub ParamVals;
Var
mb: IMetabase;
Ms: IMetabaseObjectDescriptor;
Problem: IMsProblem;
CalcSett: IMsProblemCalculationSettings;
Calc: IMsProblemCalculation;
ParamsVals: ITsModelParamValues;
ParVal: ITsModelParamValue;
i: Integer;
Begin
mb := MetabaseClass.Active;
// Получаем контейнер моделирования
Ms := mb.ItemById("MODEL_SPACE");
// Получаем задачу моделирования
Problem := mb.ItemByIdNamespace("PROBLEM", Ms.Key).Bind As IMsProblem;
// Создаем параметры расчёта задачи
CalcSett := Problem.CreateCalculationSettings;
CalcSett.FactIncluded := True;
// Получаем значения параметров
ParamsVals := CalcSett.ParamValues As ITsModelParamValues;
// Выводим информацию о параметрах в окно консоли
For i := 0 To ParamsVals.Count - 1 Do
ParVal := ParamsVals.Item(i);
Debug.WriteLine("Параметр " + i.ToString + ":");
Debug.WriteLine(" идентификатор параметра: " + ParVal.Id);
Debug.WriteLine(" ключ параметра: " + ParVal.Key.ToString);
Debug.WriteLine(" наименование параметра: " + ParVal.Name);
Debug.WriteLine(" значение по умолчанию: " + ParVal.DefaultValue);
Debug.WriteLine(" параметр скрытый: " + ParVal.Hidden.ToString);
Debug.WriteLine(" тип данных параметра (значение перечисления DbDataType): " + ParVal.DataType.ToString);
Debug.WriteLine(" тип параметра (значение перечисления TsParamType): " + ParVal.ParamType.ToString);
If ParVal.LinkedObject <> Null Then
Debug.WriteLine(" справочник, на который ссылается параметр: " + ParVal.LinkedObject.Name);
End If;
End For;
// Выполняем расчёт
Calc := Problem.Calculate(CalcSett);
Calc.Run;
End Sub ParamVals;
Результат выполнения примера: рассчитана задача моделирования, в окно консоли выведены значения параметров метамодели, рассчитываемой задачей.
Необходимые требования и результат выполнения примера Fore.NET совпадают с примером Fore.
Imports Prognoz.Platform.Interop.Dal;
Imports Prognoz.Platform.Interop.Ms;
Imports Prognoz.Platform.Interop.Transform;
…
Public Shared Sub Main(Params: StartParams);
Var
mb: IMetabase;
Ms: IMetabaseObjectDescriptor;
Problem: IMsProblem;
CalcSett: IMsProblemCalculationSettings;
Calc: IMsProblemCalculation;
ParamsVals: ITsModelParamValues;
ParVal: ITsModelParamValue;
i: Integer;
Begin
mb := Params.Metabase;
// Получаем контейнер моделирования
Ms := mb.ItemById["MODEL_SPACE"];
// Получаем задачу моделирования
Problem := mb.ItemByIdNamespace["PROBLEM", Ms.Key].Bind() As IMsProblem;
// Создаем параметры расчёта задачи
CalcSett := Problem.CreateCalculationSettings();
CalcSett.FactIncluded := True;
// Получаем значения параметров
ParamsVals := CalcSett.ParamValues As ITsModelParamValues;
// Выводим информацию о параметрах в окно консоли
For i := 0 To ParamsVals.Count - 1 Do
ParVal := ParamsVals.Item[i];
System.Diagnostics.Debug.WriteLine
("Параметр " + i.ToString() + ":");
System.Diagnostics.Debug.WriteLine
(" идентификатор параметра: " + ParVal.Id);
System.Diagnostics.Debug.WriteLine
(" ключ параметра: " + ParVal.Key.ToString());
System.Diagnostics.Debug.WriteLine
(" наименование параметра: " + ParVal.Name);
System.Diagnostics.Debug.WriteLine
(" значение по умолчанию: " + ParVal.DefaultValue);
System.Diagnostics.Debug.WriteLine
(" параметр скрытый: " + ParVal.Hidden.ToString());
System.Diagnostics.Debug.WriteLine
(" тип данных параметра (значение перечисления DbDataType): " + ParVal.DataType.ToString());
System.Diagnostics.Debug.WriteLine
(" тип параметра (значение перечисления TsParamType): " + ParVal.ParamType.ToString());
If ParVal.LinkedObject <> Null Then
System.Diagnostics.Debug.WriteLine
(" справочник, на который ссылается параметр: " + ParVal.LinkedObject.Name);
End If;
End For;
// Выполняем расчёт
Calc := Problem.Calculate(CalcSett);
Calc.Run();
End Sub;
См. также: