SyncGroups: IEaxSyncGroups;
Свойство SyncGroups возвращает группу с настройками синхронизации.
Для получения источников данных регламентного отчета используйте свойство IPrxReport.DataSources.
Для выполнения примера предполагается наличие регламентного отчета с идентификатором «REGULAR_REPORT», содержащего два источника данных, для каждого из которого добавлены области данных, в том числе, аналитические. Измерениями областей данных являются справочники с идентификаторами «CALENDAR1», «SEP1» (для первого источника данных) и «CALENDAR2», «SEP2» (для второго источника данных).
Добавьте ссылки на системные сборки Express, Dimensions, Metabase, Report.
Sub UserProc;
Var
MB: IMetabase;
Rep: IPrxReport;
DataArea: IEaxDataArea;
SyncG: IEaxSyncGroups;
Group: IEaxSyncGroup;
Slices_DA: IEaxDataAreaSlices;
Slice_DA: IEaxDataAreaSlice;
Slices: IPrxSlices;
Slice: IPrxSlice;
DimKey, i, j: Integer;
Inst: IEaxDimensionInstance;
PrxDim: IPrxSliceDimension;
SliceType: EaxDimensionOwnerType;
Inst_Slice: Object;
Begin
MB := MetabaseClass.Active;
Rep := MB.ItemById("REGULAR_REPORT").Edit As IPrxReport;
// Синхронизация измерений аналитической области данных:
DataArea := Rep.DataArea As IEaxDataArea;
Slices_DA := DataArea.Slices;
SyncG := Rep.SyncGroups As IEaxSyncGroups;
Slice_DA := Slices_DA.Item(0);
DimKey := Slice_DA.Selection.FindById("CALENDAR1").Dimension.Key;
Inst := Slice_DA.GetDimension(DimKey);
Group := SyncG.CreateGroup(Inst);
Slice_DA := Slices_DA.Item(1);
DimKey := Slice_DA.Selection.FindById("SEP1").Dimension.Key;
Inst := Slice_DA.GetDimension(DimKey);
Group.Add(Inst);
// Синхронизация измерений области данных:
Slices := Rep.DataSources.Item(1).Slices;
Slice := Slices.Item(0);
PrxDim := Slice.Dimensions.FindById("CALENDAR2");
DimKey := PrxDim.Key;
Inst := Slice.GetDimension(DimKey);
Group := SyncG.CreateGroup(Inst);
Slice := Slices.Item(1);
DimKey := Slice.Selection.FindById("SEP2").Dimension.Key;
Inst := Slice.GetDimension(DimKey);
Group.Add(Inst);
// Вывод результатов синхронизации:
Debug.WriteLine("Общее количество групп: " + SyncG.Count.ToString);
For i := 0 To SyncG.Count - 1 Do
Group := SyncG.Item(i);
Debug.WriteLine("=== Группа " + (i + 1).ToString + " ===");
Debug.WriteLine("ID измерения - Срез");
For j := 0 To Group.Count - 1 Do
SliceType := Group.Item(j).Dimension.SliceType;
Inst := Group.Item(j).Dimension;
Inst_Slice := Inst.Slice;
If (SliceType = EaxDimensionOwnerType.PivotSlice) Then
Debug.WriteLine(Inst.Dimension.Ident + " - " + (Inst_Slice As IEaxDataAreaSlice).Name);
End If;
If (SliceType = EaxDimensionOwnerType.PrxSlice) Then
Debug.WriteLine(Inst.Dimension.Ident + " - " + (Inst_Slice As IPrxSlice).Name);
End If;
End For;
End For;
(Rep As IMetabaseObject).Save;
End Sub UserProc;
В результате выполнения примера будут добавлены группы синхронизированных измерений. По каждой группе к окно консоли будет выведена общая информация.
См. также: