IMsFormulaTermInfo.SetDateByLevel

Синтаксис Fore

SetDateByLevel(Value: DateTime; Level: DimCalendarLevel);

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

SetDateByLevel(Value: System.DateTime; Level: Prognoz.Platform.Interop.Dimensions.DimCalendarLevel);

Параметры

Value. Дата, на которую нужно зафиксировать значение элемента выражения;

Level. Календарная динамика, на которую нужно зафиксировать значение элемента выражения.

Описание

Метод SetDateByLevel фиксирует дату и календарную динамику для элемента выражения.

Комментарии

Зафиксировать дату и календарную динамику возможно, если элемент выражения является значением на заданную дату, то есть свойство IMsFormulaTermInfo.Type имеет значение MsFormulaTermType.Date.

Пример Fore

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

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

Sub UserProc;
Var
    mb: IMetabase;
    MSKey: Integer;
    Model: IMsModel;
    Transform: IMsFormulaTransform;
    Determ: IMsDeterministicTransform;
    Info: IMsFormulaTermInfo;
Begin
    // Получаем текущий репозиторий
    mb := MetabaseClass.Active;
    // Получаем ключ контейнера моделирования
    MSKey := mb.GetObjectKeyById("MS");
    // Получаем модель
    Model := mb.ItemByIdNamespace("MODEL_DATEBYLEVEL", MSKey).Edit As IMsModel;
    // Получаем параметры модели
    Transform := Model.Transform;
    // Получаем параметры расчета детерминированного уравнения
    Determ := Transform.FormulaItem(0).Method As IMsDeterministicTransform;
    Info := Determ.Operands.Item(0).TermInfo;
    // Задаем тип элемента выражения: значение на определенную дату
    Info.Type := MsFormulaTermType.Date;
    // Устанавливаем дату для элемента выражения
    Info.SetDateByLevel(DateTime.Parse("01.01.2015"), DimCalendarLevel.Year);
    // Вставляем элемент в уравнение
    Determ.Expression.AsString := Info.TermInnerText;
    // Сохраняем изменения
    (Model As IMetabaseObject).Save;
End Sub UserProc;

В результате выполнения примера для фактора модели будет зафиксирована дата: 2015 год.

Пример Fore.NET

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

Imports Prognoz.Platform.Interop.Dimensions;
Imports Prognoz.Platform.Interop.Ms;

Public Shared Sub Main(Params: StartParams);
Var
    mb: IMetabase;
    MSKey: uinteger;
    Model: IMsModel;
    Transform: IMsFormulaTransform;
    Determ: IMsDeterministicTransform;
    Info: IMsFormulaTermInfo;
Begin
    // Получаем текущий репозиторий
    mb := Params.Metabase;
    // Получаем ключ контейнера моделирования
    MSKey := mb.GetObjectKeyById("MS");
    // Получаем модель
    Model := mb.ItemByIdNamespace["MODEL_DATEBYLEVEL", MSKey].Edit() As IMsModel;
    // Получаем параметры модели
    Transform := Model.Transform;
    // Получаем параметры расчета детерминированного уравнения
    Determ := Transform.FormulaItem[0].Method As IMsDeterministicTransform;
    Info := Determ.Operands.Item[0].TermInfo;
    // Задаем тип элемента выражения: значение на определенную дату
    Info.Type := MsFormulaTermType.mfttDate;
    // Устанавливаем дату для элемента выражения
    Info.SetDateByLevel(DateTime.Parse("01.01.2015"), DimCalendarLevel.dclYear);
    // Вставляем элемент в уравнение
    Determ.Expression.AsString := Info.TermInnerText;
    // Сохраняем изменения
    (Model As IMetabaseObject).Save();
End Sub;

См. также:

IMsFormulaTermInfo