SetDateByLevel(Value: DateTime; Level: 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 год.
См. также: