ICompoundDimension.InitCustomContainer

Синтаксис

InitCustomContainer;

InitCustomContainer();

Описание

Метод InitCustomContainer обновляет или создает измерение фактов на основе виртуального куба.

Комментарии

Данный метод обновляет или создает атрибуты измерения, заданного свойством ICompoundDimension.CustomContainer. Если в этом свойстве значение пустое, то в репозитории среди дочерних объектов владельца (виртуальный куб) данного измерения ищется объект класса KE_CLASS_CUSTOMDIMENSION с признаком IsInternal и идентификатором FACTS. Если такой объект найден, то он используется, иначе создается и используется новый объект — ICustomDimension, у которого структура (владелец, идентификатор, признак IsInternal) задается по правилам, указанным для поиска выше.

Созданное измерение фактов можно использовать в качестве альтернативной иерархии.

Данный метод актуален для корректной работы виртуального куба, если в схеме есть привязка к структуре измерения фактов виртуального куба.

Примеры привязки к структуре измерения фактов:

Примечание. При использовании данного метода обновляется или создается только структура измерения фактов. Формирование дерева элементов необходимо проводить отдельно.

Пример

Для выполнения примера необходимо наличие в репозитории виртуального куба с идентификатором «V_CUBE».

Добавьте ссылки на системные сборки: Metabase, Dimensions, Cubes, Dal.

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(
"V_CUBE").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;

Imports Prognoz.Platform.Interop.Metabase;
Imports Prognoz.Platform.Interop.Dimensions;
Imports Prognoz.Platform.Interop.Cubes;
Imports Prognoz.Platform.Interop.Dal;

Public Shared Sub Main(Params: StartParams);
Var
    MB: IMetabase;
    MObj: IMetabaseObject;
    CubV: IVirtualCube;
    CompDim: ICompoundDimension;
    CustDim: ICustomDimension;
    i: Integer;
    TypeString: String;
Begin
    MB := Params.Metabase;
    Mobj := MB.ItemById[
"V_CUBE"].Edit();
    CubV := Mobj 
As IVirtualCube;
    CompDim := CubV.FactDimension 
As ICompoundDimension;
    CompDim.InitCustomContainer();
    CustDim := CompDim.CustomContainer;
    TypeString := CustDim.Attributes.Item[i].DataType.ToString();
    System.Diagnostics.Debug.WriteLine(
"№    Идентификатор    Наименование   Tип атрибута");
    
For i:=0 To CustDim.Attributes.Count-1 Do
        System.Diagnostics.Debug.WriteLine(i.ToString() + 
"    " + CustDim.Attributes.Item[i].Id + "     " + CustDim.Attributes.Item[i].Name + "       " + TypeString)
    
End For;
    MObj.Save();
End Sub;

В результате выполнения примера для виртуального куба будет создано измерение фактов. В консоль будет выведен идентификатор, наименование и тип для всех атрибутов измерения фактов.

См. также:

ICompoundDimension