InitCustomContainer;
Метод InitCustomContainer обновляет/создает измерение фактов (ICustomDimension) на основе виртуального куба в соответствии с механизмом 17 релиза.
Данный метод обновляет/создает атрибуты измерения, заданного свойством CustomContainer. Если в этом свойстве значение пустое, то в репозитории среди дочерних объектов владельца (виртуальный куб) данного измерения ищется объект класса KE_CLASS_CUSTOMDIMENSION с признаком IsInternal и идентификатором FACTS (так было у фактов виртуального куба 17 релиза). Если такой объект найден, то он используется, иначе создается и используется новый объект — ICustomDimension, у которого структура (владелец, идентификатор, признак IsInternal) задается по правилам, указанным для поиска выше.
Следует использовать данный метод для корректной работы виртуального куба, в случае если в схеме есть привязка к структуре измерения фактов виртуального куба 17 релиза. Примеры привязки к структуре измерения фактов:
редактировался состав атрибутов измерения фактов;
атрибуты измерения фактов используются в формулах отчетов.
Примечание. При использовании данного метода обновляется/создается только структура измерения фактов. Формирование дерева элементов необходимо проводить отдельно.
В рассматриваемом примере предполагается наличие в схеме виртуального куба, созданного в 17 релизе, идентификатор куба — «VIRTUAL_17».
Sub UserProc;
Var
MB: IMetabase;
MObj: IMetabaseObject;
CubV: IVirtualCube;
CompDim : ICompoundDimension;
CustDim : ICustomDimension;
i : Integer;
Function TypeString(CustDim: ICustomDimension; i: Integer): String;
Var
c: String;
Begin
Select Case CustDim.Attributes.Item(i).DataType.ToString
Case "1": c := "String";
Case "2": c := "Integer";
Case "3": c := "Float";
Case "4": c := "DataTime";
End Select;
Return c;
End Function TypeString;
Begin
MB := MetabaseClass.Active;
Mobj:= mb.ItemById("VIRTUAL_17").Edit;
CubV:= Mobj As IVirtualCube;
CompDim := CubV.FactDimension As ICompoundDimension;
CompDim.InitCustomContainer;
CustDim := CompDim.CustomContainer;
Debug.WriteLine("№ Идентификатор Наименование Tип атрибута");
For i:=0 To CustDim.Attributes.Count-1 Do
Debug.WriteLine(i.ToString + " " + CustDim.Attributes.Item(i).Id + " " + CustDim.Attributes.Item(i).Name + " " + TypeString(CustDim,i))
End For;
MObj.Save;
End Sub UserProc;
После выполнения примера для куба будет создано измерение фактов в соответствии с механизмом 17 релиза. В окно консоли будут выведены идентификатор, наименование и тип для всех атрибутов измерения фактов.
См. также: