IMsDatePeriod.AutoPeriodDates

Синтаксис Fore

AutoPeriodDates(Calculation: IMsMethodCalculation;

                Coord: IMsFormulaTransformCoord;

                Var AutoStartDate: DateTime;

                Var AutoEndDate: DateTime);

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

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 должны быть переменными. После выполнения метода они будут содержать результаты.

Пример Fore

Для выполнения примера в репозитории предполагается наличие контейнера моделирования с идентификатором «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.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;

См. также:

IMsDatePeriod