SetDateByLevel(Value: DateTime; Level: DimCalendarLevel);
SetDateByLevel(Value: System.DateTime; Level: Prognoz.Platform.Interop.Dimensions.DimCalendarLevel);
Value. Дата, на которую нужно зафиксировать значение элемента выражения;
Level. Календарная динамика, на которую нужно зафиксировать значение элемента выражения.
Метод SetDateByLevel фиксирует дату и календарную динамику для элемента выражения.
Зафиксировать дату и календарную динамику возможно, если элемент выражения является значением на заданную дату, то есть свойство IMsFormulaTermInfo.Type имеет значение MsFormulaTermType.Date.
Для выполнения примера в репозитории предполагается наличие контейнера моделирования с идентификатором «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.
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;
См. также: