IMetaIndexes.Add

Синтаксис

Add: IMetaIndex;

Описание

Метод Add осуществляет добавление индекса в коллекцию.

Пример

Для выполнения примера предполагается наличие репозитория НСИ с идентификатором «RDS_REPO». В репозитории НСИ должны присутствовать справочники с идентификаторами «DICT_CTR» и «DICT_IND».

Sub UserProc;
Var
    Mb: IMetabase;
    Inf: IMetabaseObjectCreateInfo;
    Obj: IMetabaseObjectDescriptor;
    Cat: IRubricator;
    RdsDescr: IMetabaseObjectDescriptor;
    Rds: IRdsDatabase;
    Facts: IMetaDictionary;
    Attributes: IMetaAttributes;
    Attribute: IMetaAttribute;
    Indexes: IMetaIndexes;
    Index: IMetaIndex;
    AttrColl: IMetaAttributesCollection;
Begin
    Mb := MetabaseClass.Active;
    RdsDescr := Mb.ItemById("RDS_REPO");
    // Определение параметров базы данных временных рядов
    Inf := Mb.CreateCreateInfo;
    Inf.Id := Mb.GenerateId("OBJ_FC");
    Inf.Name := Inf.Id;
    Inf.ClassId := MetabaseObjectClass.KE_CLASS_RUBRICATOR;
    Inf.Parent := Mb.Root;
    Inf.KeepEdit := True;
    Obj := Mb.CreateObject(Inf);
    Cat := (Obj As IRubricator);
    Rds := RdsDescr.Bind As IRdsDatabase;
    Cat.Database := Rds;
    Cat.GetDictionary(RubricatorDictionary.AllDictionaries,
    RubricatorDictionaryOperation.Create Or RubricatorDictionaryOperation.ForEachBasis);
    // Создание обязательного пользовательского атрибута «COUNTRY»
    Facts := Cat.Facts;
    Attributes := Facts.Attributes;
    Attribute := Attributes.Add;
    Attribute.Id := "COUNTRY";
    Attribute.Name := "Country";
    Attribute.Nullable := False;
    Attribute.HasMultipleValues := False;
    Attribute.DataType := DbDataType.Integer;
    Attribute.ValuesObject := Mb.ItemByIdNamespace("DICT_CTR", RdsDescr.Key).Bind;
    // Создание обязательного пользовательского атрибута «INDICATOR»
    Attribute := Attributes.Add;
    Attribute.Id := "INDICATOR";
    Attribute.Name := "Indicator";
    Attribute.Nullable := False;
    Attribute.HasMultipleValues := False;
    Attribute.DataType := DbDataType.Integer;
    Attribute.ValuesObject := Mb.ItemByIdNamespace("DICT_IND", RdsDescr.Key).Bind;
    // Создание индекса
    Indexes := Facts.Indexes;
    Index := Indexes.Add;
    Index.Name := "Новый индекс";
    Index.Unique := True;
    Attributes := Facts.Attributes;
    AttrColl := Index.Attributes;
    Attribute := Attributes.FindById("COUNTRY");
    AttrColl.Add(Attribute);
    Attribute := Attributes.FindById("INDICATOR");
    AttrColl.Add(Attribute);
    Attributes.CreateTable;
    (Obj As IMetabaseObject).Save;
End Sub UserProc;

После выполнения примера в репозитории будет создана база данных временных рядов «OBJ_FC». Для измерения показателей будет создан уникальный индекс, состоящий из обязательных пользовательских атрибутов «COUNTRY» и «INDICATOR».

См. также:

IMetaIndexes