AttachmentsStorage: IMetabaseObjectDescriptor;
AttachmentsStorage: Prognoz.Platform.Interop.Cubes.IMetabaseObjectDescriptor;
Свойство AttachmentsStorage определяет место хранения вложений.
В качестве значения свойства указывается табличный справочник НСИ с предопределённой структурой. Описание структуры справочника приведено в подразделе «Привязка фактов куба». Также справочник может быть создан и назначен в качестве места хранения вложений с помощью метода CreateAndSetAttachmentsStorage.
Для выполнения примера предполагается наличие в репозитории стандартного куба с идентификатором «STD_CUBE». Куб настроен на работу с источником, в структуре которого имеется целочисленное поле «ATTACHMENT». Также в репозитории должен присутствовать табличный справочник НСИ с идентификатором «D_ATTACHMENTS», структура которого позволяет хранить вложения куба.
Добавьте ссылки на системные сборки: Cubes, Db, Dimensions, Metabase.
Sub UserProc;
Var
Mb: IMetabase;
Cube: IStandardCube;
Dest: IStandardCubeDestination;
DataSet: IStandardCubeDataset;
FactDimInst: IDimInstance;
KeyAttribute: IDimAttributeInstance;
Binding: IStandardCubeFactBinding;
Begin
Mb := MetabaseClass.Active;
Cube := Mb.ItemById("STD_CUBE").Edit As IStandardCube;
Dest := Cube.Destinations.Item(0);
DataSet := Dest.Datasets.Item(0);
//Справочник для хранения вложений
Dest.AttachmentsStorage := Mb.ItemById("D_ATTACHMENTS");
//Настройка привязки фактов
FactDimInst := Dest.FactDimension.OpenDimension;
KeyAttribute := FactDimInst.Attributes.FindById("KEY");
Binding := Dest.FactBindings(DataSet).BindingWithRole(KeyAttribute.Value(0), CubeFactBindingRole.Attachment);
Binding.Formula.AsString := (DataSet.Dataset As IMetabaseObject).Id + ".ATTACHMENT";
//Сохранение куба
(Cube As IMetabaseObject).Save;
End Sub UserProc;
Imports Prognoz.Platform.Interop.Cubes;
Imports Prognoz.Platform.Interop.Db;
Imports Prognoz.Platform.Interop.Dimensions;
Imports Prognoz.Platform.Interop.Metabase;
Public Shared Sub Main(Params: StartParams);
Var
Mb: IMetabase;
Cube: IStandardCube;
Dest: IStandardCubeDestination;
DataSet: IStandardCubeDataset;
FactDimInst: IDimInstance;
KeyAttribute: IDimAttributeInstance;
Binding: IStandardCubeFactBinding;
Begin
Mb := Params.Metabase;
Cube := Mb.ItemById["STD_CUBE"].Edit() As IStandardCube;
Dest := Cube.Destinations.Item[0];
DataSet := Dest.Datasets.Item[0];
//Справочник для хранения вложений
Dest.AttachmentsStorage := Mb.ItemById["D_ATTACHMENTS"];
//Настройка привязки фактов
FactDimInst := Dest.FactDimension.OpenDimension;
KeyAttribute := FactDimInst.Attributes.FindById("KEY");
Binding := Dest.FactBindings[DataSet].BindingWithRole[KeyAttribute.Value[0], CubeFactBindingRole.cfbrAttachment];
Binding.Formula.AsString := (DataSet.Dataset As IMetabaseObject).Id + ".ATTACHMENT";
//Сохранение куба
(Cube As IMetabaseObject).Save();
End Sub;
При выполнении примера для куба в качестве места хранения вложений будет установлен существующий табличный справочник НСИ. Для первого факта будет настроена привязка с полем источника, по которому будут храниться ключи элементов в справочнике вложений.
См. также: