AutoPeriodDates(Calculation: IMsMethodCalculation;
Coord: IMsFormulaTransformCoord;
Var AutoStartDate: DateTime;
Var AutoEndDate: DateTime);
AutoPeriodDates(Calculation: Prognoz.Platform.Interop.Ms.IMsMethodCalculation;
Coord: Prognoz.Platform.Interop.Ms.IMsFormulaTransformCoord;
var AutoStartDate: System.DateTime;
var AutoEndDate: System.DateTime);
Calculation. Настройки, необходимые при расчете модели;
Coord. Параметров координаты в переменной, по которой будет производиться расчет;
AutoStartDate. Дата начала периода;
AutoEndDate. Дата окончания периода.
Метод AutoPeriodDates возвращает границы периода, если используются условия для вычисления дат начала и окончания периода.
Параметры AutoStartDate и AutoEndDate должны быть переменными. После выполнения метода они будут содержать результаты.
Для выполнения примера в репозитории предполагается наличие контейнера моделирования с идентификатором «MS», содержащим модель с идентификатором «MODEL_FREEDIM».
Добавьте ссылки на системные сборки: Metabase, Ms.
Sub UserProc;
Var
mb: IMetabase;
DescrCM: IMetabaseObjectDescriptor;
pModel: IMsModel;
trans: IMsFormulaTransform;
coo: IMsFormulaTransformCoord;
calc: IMsMethodCalculation;
Period: IMsModelPeriod;
OutputPeriod: IMsDatePeriod;
StDate, EndDate: DateTime;
Begin
// Получаем модель
mb := MetabaseClass.Active;
DescrCM := mb.ItemById("MS");
pModel := mb.ItemByIdNamespace("MODEL_FREEDIM", DescrCM.Key).Edit As IMsModel;
// Задаем параметры расчёта
trans := pModel.Transform;
coo := trans.CreateCoord(trans.Outputs.Item(0));
calc := trans.CreateCalculation;
// Задаем периоды расчета
Period := pModel.Transform.Period;
calc.Period.IdentificationStartDate := Period.IdentificationStartDate;
calc.Period.IdentificationEndDate := Period.IdentificationEndDate;
calc.Period.ForecastStartDate := Period.ForecastStartDate;
calc.Period.ForecastEndDate := Period.ForecastEndDate;
calc.CurrentPoint := Period.IdentificationStartDate;
OutputPeriod := trans.OutputPeriod As IMsDatePeriod;
// Очищаем параметры периода выгрузки данных
OutputPeriod.ClearPeriod;
// Задаем параметры автопериода: период выгрузки данных определяется текущей датой
OutputPeriod.AutoPeriod := MsDateAutoPeriodOptions.StartAsNow Or MsDateAutoPeriodOptions.EndAsNow;
// Задаем смещение дат начала и окончания периода выгрузки данных
OutputPeriod.StartOffset := 1;
OutputPeriod.EndOffset := 2;
// Получаем и выводим в окно консоли даты начала и окончания периода выгрузки данных
OutputPeriod.AutoPeriodDates(calc, coo, StDate, EndDate);
Debug.WriteLine("Начало выгрузки данных: " + StDate.ToString);
Debug.WriteLine("Окончание выгрузки данных: " + EndDate.ToString);
// Сохраняем изменения
(pModel As IMetabaseObject).Save;
End Sub UserProc;
В результате выполнения примера для модели будут заданы периоды расчета и выгрузки данных. Период выгрузки данных будет задан с помощью условий, фактические даты периода будут выведены в окно консоли.
Необходимые требования и результат выполнения примера Fore.NET совпадают с примером Fore.
Imports Prognoz.Platform.Interop.Ms;
…
Public Shared Sub Main(Params: StartParams);
Var
mb: IMetabase;
DescrCM: IMetabaseObjectDescriptor;
pModel: IMsModel;
trans: IMsFormulaTransform;
coo: IMsFormulaTransformCoord;
calc: IMsMethodCalculation;
Period: IMsModelPeriod;
OutputPeriod: IMsDatePeriod;
StDate, EndDate: DateTime;
Begin
// Получаем модель
mb := Params.Metabase;
DescrCM := mb.ItemById["MS"];
pModel := mb.ItemByIdNamespace["MODEL_FREEDIM", DescrCM.Key].Edit() As IMsModel;
// Задаем параметры расчёта
trans := pModel.Transform;
coo := trans.CreateCoord(trans.Outputs.Item[0]);
calc := trans.CreateCalculation;
// Задаем периоды расчета
Period := pModel.Transform.Period;
calc.Period.IdentificationStartDate := Period.IdentificationStartDate;
calc.Period.IdentificationEndDate := Period.IdentificationEndDate;
calc.Period.ForecastStartDate := Period.ForecastStartDate;
calc.Period.ForecastEndDate := Period.ForecastEndDate;
calc.CurrentPoint := Period.IdentificationStartDate;
OutputPeriod := trans.OutputPeriod As IMsDatePeriod;
// Очищаем параметры периода выгрузки данных
OutputPeriod.ClearPeriod();
// Задаем параметры автопериода: период выгрузки данных определяется текущей датой
OutputPeriod.AutoPeriod := MsDateAutoPeriodOptions.msdapoStartAsNow Or MsDateAutoPeriodOptions.msdapoEndAsNow;
// Задаем смещение дат начала и окончания периода выгрузки данных
OutputPeriod.StartOffset := 1;
OutputPeriod.EndOffset := 2;
// Получаем и выводим в окно консоли даты начала и окончания периода выгрузки данных
OutputPeriod.AutoPeriodDates(calc, coo, Var StDate, Var EndDate);
System.Diagnostics.Debug.WriteLine("Начало выгрузки данных: " + StDate.ToString);
System.Diagnostics.Debug.WriteLine("Окончание выгрузки данных: " + EndDate.ToString());
// Сохраняем изменения
(pModel As IMetabaseObject).Save();
End Sub;
См. также: