IndentName(Element: Integer; Indent: Integer): String;
Element - элемент составного измерения.
Indent - индекс измерения, при изменении которого было сформировано наименование элемента Element.
Свойство IndentName возвращает наименование элемента из измерения-источника, использованного при формировании наименования элемента Element.
Примечание. Формирование наименования элемента осуществляется путем изменения наименования предыдущего элемента этого же уровня. Если на данном уровне элементы закончились, то изменяется наименование последнего элемента предыдущего уровня.
Примечание. Если составной справочник содержит только один источник, то при формировании наименований элементов наименование самого источника не используется.
Для выполнения примера предполагается наличие в репозитории виртуального куба с идентификатором «Virt_Cube». Источниками данных для виртуального куба являются два куба с наименованиями «Куб 1» и «Куб 2». Первый куб имеет три измерения, второй - два измерения. В каждом измерении элементы имеют числовое наименование от «1» до «n».
Sub Main;
Var
MB: IMetabase;
Cube: IVirtualCube;
Sources: IVirtualCubeSources;
CDim: ICompoundDimension;
CSource: ICompoundDimensionSource;
CSel, Sel: IDimSelectionSet;
FixInfo: ICubeDimensionFixInfo;
Fix: ICubeDimensionFix;
Params: IMetabaseObjectParamValues;
CDimInst: ICompoundDimensionInstance;
Elements: IDimElements;
ElementsInd: IDimElementsIndent;
Element: Integer;
Begin
MB := MetabaseClass.Active;
Cube := MB.ItemById("Virt_Cube").Bind As IVirtualCube;
Sources := Cube.Sources;
//Формирование отметки для открытия составного измерения
CDim := Cube.FactDimension As ICompoundDimension;
Sel := (New DimSelectionSetFactory.Create).CreateDimSelectionSet;
CSel := (New DimSelectionSetFactory.Create).CreateDimSelectionSet;
For Each CSource In CDim.Sources Do
Sel.Clear;
//Формирование отметки в соответствии с отметкой фиксированных измерений в источниках
FixInfo := Sources.FindByKey(CSource.Key).FixInfo;
For Each Fix In FixInfo Do
If Fix.Selection.SelectedCount <> 0 Then
Fix.Selection.CopyTo(Sel.Add(Fix.Instance), True);
End If;
End For;
CSel.AddCompound(CSource.Key, Sel);
End For;
//Открытие составного измерения
Params := (CDim As IMetabaseObject).Params.CreateEmptyValues;
Params.FindById("SELECTIONS").Value := CSel;
CDimInst := (CDim As IMetabaseObject).Open(Params) As ICompoundDimensionInstance;
//Получение элементов составного измерения
Elements := (CDimInst As IDimInstance).Elements;
ElementsInd := Elements As IDimElementsIndent;
//Вывод информации о формировании наименований элементов
For Each Element In Elements.Elements Do
Debug.Write(Elements.Name(Element) + ": ");
Debug.Write("Измерение: " + ElementsInd.IndentLow(Element).ToString + " ");
Debug.WriteLine("Использованный элемент: " + ElementsInd.IndentName(Element, ElementsInd.IndentLow(Element)));
End For;
End Sub Main;
При выполнении примера для открытия составного измерения виртуального куба формируется отметка на основании отметки всех зафиксированных измерений всех источников данных куба. В консоль среды разработки будут выведены наименования элементов составного справочника и информация об их формировании.
Куб 1 - 1 - 1 - 1: Измерение: 0 Использованный элемент: Куб 1
Куб 1 - 1 - 1 - 2: Измерение: 3 Использованный элемент: 2
Куб 1 - 1 - 2 - 1: Измерение: 2 Использованный элемент: 2
Куб 1 - 1 - 2 - 2: Измерение: 3 Использованный элемент: 2
Куб 1 - 2 - 1 - 1: Измерение: 1 Использованный элемент: 2
Куб 1 - 2 - 1 - 2: Измерение: 3 Использованный элемент: 2
Куб 1 - 2 - 2 - 1: Измерение: 2 Использованный элемент: 2
Куб 1 - 2 - 2 - 2: Измерение: 3 Использованный элемент: 2
Куб 2 - 1 - 1: Измерение: 0 Использованный элемент: Куб 2
Куб 2 - 1 - 2: Измерение: 2 Использованный элемент: 2
Куб 2 - 1 - 3: Измерение: 2 Использованный элемент: 3
Куб 2 - 2 - 1: Измерение: 1 Использованный элемент: 2
Куб 2 - 2 - 2: Измерение: 2 Использованный элемент: 2
Куб 2 - 2 - 3: Измерение: 2 Использованный элемент: 3
Данную информацию можно интерпретировать примерно следующим образом:
Куб 1 - 1 - 1 - 1: Измерение: 0 Использованный элемент: Куб 1 - это первый элемент по первому источнику составного измерения. Его наименование сформировано из наименования источника и наименований первых элементов, содержащихся в фиксированных измерениях первого куба-источника.
Куб 1 - 1 - 1 - 2: Измерение: 3 Использованный элемент: 2 - это второй элемент по первому источнику составного измерения. При формировании его наименования был использован элемент третьего измерения. Наименование используемого элемента - «2»
...
Куб 2 - 1 - 1: Измерение: 0 Использованный элемент: Куб 2 - элементы по первому источнику закончились. Это первый элемент по второму источнику. Наименование сформировано из наименования второго источника и наименований первых элементов, содержащихся в фиксированных измерениях второго куба-источника.
и т.д.
См. также: