IMsTransformObjectList.Remove

Синтаксис

Remove(Index: Integer): Boolean;

Параметры

Index. Индекс объекта в коллекции.

Описание

Метод Remove осуществляет удаление объекта из коллекции по его индексу.

Комментарии

Значение параметра Index должно быть неотрицательным числом, но меньше значения свойства IMsTransformObjectList.Count. Индекс первого объекта в коллекции - «0», последнего - «IMsTransformObjectList.Count - 1». Нумерация индексов - сквозная.

Если удаление объекта прошло успешно, то метод возвращает значение True, значение свойства IMsTransformObjectList.Count уменьшается на единицу; в обратном случае - False.

Пример

Для выполнения примера предполагается наличие в репозитории базы данных временных рядов с идентификатором «FC». В контейнере моделирования данной базы должна присутствовать модель с идентификатором «MODEL_ATTR». Модель рассчитывается как детерминированное уравнение. Также перед выполнением процедуры необходимо добавить ссылки на системные сборки «Ms», «Cubes», «Rds», «Metabase».

Sub UserProc;

Var

Mb: IMetabase;

RubrDescr: IMetabaseObjectDescriptor;

Rubr: IRubricator;

MsDescr: IMetabaseObjectDescriptor;

Model: IMsModel;

Transform: IMsFormulaTransform;

TransformVarables: IMsFormulaTransformVariables;

TransVar: IMsFormulaTransformVariable;

FactsAttrs: IMetaAttributes;

Attr: IMetaAttribute;

DictDescr: IMetabaseObjectDescriptor;

ObjList: IMsTransformObjectList;

TransfObj: IMsTransformObject;

TermTrue, TermFalse: String;

Determ: IMsDeterministicTransform;

Expr: IExpression;

FormulaTerm: IMsFormulaTerm;

Count, i: Integer;

Begin

Mb := MetabaseClass.Active;

RubrDescr := Mb.ItemById("FC");

Rubr := RubrDescr.Bind As IRubricator;

MsDescr := Rubr.ModelSpace;

Model := Mb.ItemByIdNamespace("MODEL_ATTR", MsDescr.Key).Edit As IMsModel;

Transform := Model.Transform;

TransformVarables := Transform.Outputs;

TransVar := TransformVarables.Item(0);

TransVar.AttributeId := "UNIT";

FactsAttrs := Rubr.Facts.Attributes;

Attr := FactsAttrs.FindById("UNIT");

DictDescr := Attr.ValuesObject;

ObjList := Transform.ObjectList;

Count := ObjList.Count - 1;

For i := 0 To Count Do

ObjList.Remove(i);

End For;

TransfObj := ObjList.Add(DictDescr);

TermTrue := "@__" + TransfObj.Key.ToString + ":3433"; //3433 - Billions of National Currency

TermFalse := "@__" + TransfObj.Key.ToString + ":3549"; //3549 - National Currency

Determ := Transform.FormulaItem(0).Method As IMsDeterministicTransform;

Expr := Determ.Expression;

Expr.AsString := "";

FormulaTerm := Determ.Operands.Item(0);

Expr.AsString := "iif(" + FormulaTerm.TermToText + "=3433," + TermTrue + "," + TermFalse + ")";

If Not (Expr.Valid)

Then Debug.WriteLine(Expr.ErrorInfo.ErrorMessage);

Else (Model As IMetabaseObject).Save;

End If;

End Sub UserProc;

После выполнения примера выходная переменная модели будет предназначена для выгрузки в нее значения атрибута «UNIT» (единицы измерения). Коллекция объектов модели будет очищена перед добавлением в нее объекта, ссылающегося на справочник единиц расчета. Формула расчета детерминированного уравнения будет измерена на следующую: если единицы измерения первой входной переменной «Billions of National Currency», то единицы измерения выходной переменной будут изменены на «Billions of National Currency»; если единицы измерения первой входной переменной не «Billions of National Currency», то единицы измерения выходной переменной будут изменены на «National Currency».

См. также:

IMsTransformObjectList