Attributes: IMetaAttributesCollection;
Свойство Attributes возвращает коллекцию атрибутов, входящих в индекс.
Для выполнения примера предполагается наличие репозитория НСИ с идентификатором RDS_REPO. В репозитории НСИ должны присутствовать справочники с идентификаторами DICT_CTR и DICT_IND.
Добавьте ссылки на системные сборки: Cubes, Metabase, Rds.
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».
См. также: