CreateSyncGroup(SyncItem: IEaxDimensionDescriptor): IEaxSyncGroup;;
SyncItem. Описание измерения.
Метод CreateGroup создает связь синхронизированных измерений.
Тип связи зависит от типа добавляемого измерения:
IEaxPivotDimensionInstance. Измерение будет синхронизировано по отметке элементов таблицы/табличного визуализатора на боковой панели;
IEaxObjectDimensionInstance. Измерение будет синхронизировано по выделению элементов таблицы/табличного визуализатора на рабочей области.
Для настройки синхронизации требуемого измерения используйте IEaxSyncItem.
Используйте IEaxSyncItem.Dimension:
для определения среза, к которому принадлежит требуемое измерение синхронизации, через IEaxDimensionInstance.Slice;
для определения ключа требуемого измерения синхронизации через IEaxDimensionInstance.DimKey.
Для поиска элемента синхронизации по отметке/по выделению приведите IEaxSyncItem.Dimension к соответствующему типу IEaxPivotDimensionInstance/IEaxObjectDimensionInstance.
Для удаления связи синхронизированных измерений по ее индексу используйте IEaxSyncGroups.Remove.
Для выполнения примера в репозитории необходимо наличие регламентного отчёта с идентификатором REG_SYNCH, содержащего 3 табличные области, построенные на разных срезах одного источника. Источник данных должен содержать календарное измерение, основанное на календарном справочнике, и измерение «Страны», основанное на справочнике НСИ. Данные измерения будут использоваться при настройке синхронизации.
Добавьте ссылки на системные сборки: Express, Metabase, Report.
Sub UserProc;
Var
MB: IMetabase;
Report: IPrxReport;
DataArea: IEaxDataArea;
CountryDimKey: Integer;
CalendarDimKey: Integer;
// Группы синхронизации
SyncGroups: IEaxSyncGroups;
// Срезы
Slices: IEaxDataAreaSlices;
Slice1: IEaxDataAreaSlice;
Slice2: IEaxDataAreaSlice;
Slice3: IEaxDataAreaSlice;
// Переменные для
настройки синхронизации по отметке для измерения «Страны»
Slice1_country_dim: IEaxPivotDimensionInstance;
Slice2_country_dim: IEaxPivotDimensionInstance;
PivotSelSyncGroup: IEaxSyncGroup;
Slice2_SyncItem: IEaxSyncItem;
// Переменные для
настройки синхронизации по выделению для календарного
измерения
Slice2_calendar_dim: IEaxPivotDimensionInstance;
Slice3_view: IEaxObject;
Slice3_view_selection_manager: IEaxObjectSelectionManager;
Slice3_calendar_dim: IEaxObjectDimensionInstance;
Slice3_SyncItem: IEaxSyncItem;
ObjectSelSyncGroup: IEaxSyncGroup;
Begin
// Получим репозиторий
MB := MetabaseClass.Active;
// Получим регламентный отчёт
Report := (MB.ItemById("REP_SYNCH").Edit As IPrxReport);
// Получим срезы
DataArea := Report.DataArea;
Slices := DataArea.Slices;
Slice1 := Slices.Item(0);
Slice2 := Slices.Item(1);
Slice3 := Slices.Item(2);
// Зададим ключ измерения "Страны"
- ключ справочника НСИ, на котором основано измерение
CountryDimKey := 21216;
// Зададим ключ измерения "Календарь" -
ключ календарного справочника, на котором основано измерение
CalendarDimKey := 21215;
// Синхронизация по отметке
// Получим данные
измерения для настройки синхронизации по отметке
Slice1_country_dim := Slice1.GetDimension(CountryDimKey) As IEaxPivotDimensionInstance;
Slice2_country_dim := Slice2.GetDimension(CountryDimKey) As IEaxPivotDimensionInstance;
// Создадим синхронизацию по отметке между 1 и 2 срезами по измерению "Страны"
SyncGroups := Report.SyncGroups;
PivotSelSyncGroup := SyncGroups.CreateGroup(Slice1_country_dim As IEaxDimensionDescriptor);
Slice2_SyncItem := PivotSelSyncGroup.Add(Slice2_country_dim As IEaxDimensionDescriptor);
// Настроим у измерения "Страны" 2 среза настройки "Только прием"
Slice2_SyncItem.SyncDirection := EaxDimensionSynchronizationDirection.ConsumeChangesOnly;
// Синхронизация по выделению
Slice2_calendar_dim := Slice2.GetDimension(CalendarDimKey) As IEaxPivotDimensionInstance;
Slice3_view := Slice3.Views.Item(0);
Slice3_view_selection_manager := Slice3_view.SelectionManager;
Slice3_calendar_dim := Slice3_view_selection_manager.GetDimension(CalendarDimKey) As IEaxObjectDimensionInstance;
// Создадим синхронизацию между 3 и 2 срезами по измерению "Календарь"
ObjectSelSyncGroup := SyncGroups.CreateGroup(Slice2_calendar_dim As IEaxDimensionDescriptor);
Slice3_SyncItem := ObjectSelSyncGroup.Add(Slice3_calendar_dim As IEaxDimensionDescriptor);
// Сохраним полученный РО
(Report As IMetabaseObject).Save;
End Sub UserProc;
В результате выполнения примера будет настроена синхронизация:
по отметке для первого и второго срезов для измерения «Страны»;
по выделению для второго и третьего срезов для календарного измерения.
См. также: