DestinationAttributeKey: Integer;
Свойство DestinationAttributeKey определяет ключ атрибута базы-приемника.
Привязка атрибута базы-приемника с атрибутами базы-источника данных может осуществляться несколькими способами:
используя идентификаторы атрибутов: свойства ICubeMetaCopierBinding.DestinationAttribute и ICubeMetaCopierBinding.SourceAttribute;
используя ключи атрибутов: свойства DestinationAttributeKey и ICubeMetaCopierBinding.SourceAttributeKey;
используя ключи и идентификаторы атрибутов одновременно.
Если для привязки используются лишь идентификаторы атрибутов, то в процессе экспорта/импорта данных могут возникнуть ошибки, если идентификатор атрибута в какой-либо из баз был изменен. Более надежной является привязка с использованием ключей атрибутов.
Для выполнения примера предполагается наличие базы данных временных рядов с идентификатором «OBJ_RUBRICATOR». В данной базе должен присутствовать объект импорта показателей с идентификатором «OBJ_IMPORTREQUEST», импортирующий данные из базы данных временных рядов. Также необходимо добавить ссылки на системные сборки «Cubes», «Metabase», «Rds».
Sub UserProc;
Var
Mb: IMetabase;
RubDesc: IMetabaseObjectDescriptor;
Obj: IMetabaseObject;
ImportRequestDef: IImportRequestDefinition;
ImportRequestRubricatorParams: IImportRequestRubricatorParams;
Rubr: IRubricator;
FactsDict: IMetaDictionary;
Attr: IMetaAttribute;
Binds: ICubeMetaCopierBindings;
Binding: ICubeMetaCopierBinding;
i: Integer;
Begin
Mb := MetabaseClass.Active;
RubDesc := Mb.ItemById("OBJ_RUBRICATOR");
Obj := Mb.ItemByIdNamespace("OBJ_IMPORTREQUEST", RubDesc.Key).Edit;
// Параметры импорта
ImportRequestDef := Obj As IImportRequestDefinition;
ImportRequestRubricatorParams := ImportRequestDef.RubricatorParams;
Binds := ImportRequestRubricatorParams.Bindings;
Rubr := RubDesc.Bind As IRubricator;
FactsDict := Rubr.Facts;
For i := 0 To Binds.Count - 1 Do
Binding := Binds.Item(i);
If Binding.BindingType = CubeMetaCopierBindingType.Attribute Then
Attr := FactsDict.Attributes.FindById(Binding.DestinationAttribute);
Binding.DestinationAttributeKey := Attr.Key;
Attr := FactsDict.Attributes.FindById(Binding.SourceAttribute);
Binding.SourceAttributeKey := Attr.Key;
End If;
End For;
Obj.Save;
End Sub UserProc;
После выполнения примера будет произведена перенастройка объекта импорта: привязки атрибутов будут сделаны по ключам и идентификаторам.
См. также: