AcceptDataSelection: Boolean;
AcceptDataSelection: boolean;
Свойство AcceptDataSelection определяет, конвертировать ли отметку по выделению в визуальную отметку.
Возможные значения:
True. Отметка по выделению конвертируется в визуальную отметку;
False. Отметка по выделению не конвертируется в визуальную отметку.
Для выполнения примера в репозитории предполагается наличие аналитической панели с идентификатором DASHBOARD_SELECTION. Данная панель должна содержать только два блока и они должны использовать один и тот же источник данных.
Добавьте ссылки на системные сборки: Adhoc, Dimensions, Metabase.
Sub UserProc;
Var
mb: IMetabase;
AdHoc: IAdHocReport;
Mobj: IMetabaseObject;
DSObjects: IAdhocDataSourceObjects;
DSobj1, DSobj2: IAdhocDataSourceObject;
DSdims1, DSdims2: IAdhocDsoDimensions;
Di1, Di2, Dc1, Dc2: Integer;
CurDim1, CurDim2: IAdhocDsoDimension;
DimKey: Integer;
Sync : IAdhocSynchronization;
DimSync: IAdhocDimsSynchronization;
SyncIdx: IAdhocDimSyncIndex;
ConIdx: integer;
Begin
// Получаем аналитическую панель
mb := MetabaseClass.Active;
Mobj := mb.ItemById("DASHBOARD_SELECTION").Edit;
AdHoc := Mobj As IAdHocReport;
// Получаем параметры синхронизации
Sync := AdHoc.Synchronization;
DimSync := Sync.Dimensions;
DimSync.Clear;
// Получаем источники данных аналитической панели
DSObjects := AdHoc.DataSourceObjects;
DSobj1 := DSObjects.Item(0);
DSobj2 := DSObjects.Item(1);
// Получаем измерения источников данных
DSdims1 := DSobj1.Dimensions;
DSdims2 := DSobj2.Dimensions;
Dc1 := DSdims1.Count;
Dc2 := DSdims2.Count;
ConIdx := 0;
// Настраиваем синхронизацию по всем измерениям источников данных
For Di1 := 0 To Dc1 - 1 Do
CurDim1 := DSdims1.Item(Di1);
If CurDim1.Type = AdhocDimensionType.SelectedArea Then
DimKey := CurDim1.Dimension.Key;
For Di2 := 0 To Dc2 - 1 Do
CurDim2 := DSdims2.Item(Di2);
If CurDim2.Type = AdhocDimensionType.SelectedArea Then
If DimKey = CurDim2.Dimension.Key Then
ConIdx := ConIdx + 1;
SyncIdx := DimSync.Add("Con" + ConIdx.ToString);
SyncIdx.Dimensions.Add(CurDim1);
SyncIdx.Dimensions.Add(CurDim2);
End If;
End If;
End For;
End If;
End For;
// Отключаем конвертацию отметки по выделению в визуальную отметку
DSobj1.AcceptDataSelection := False;
// Сохраняем изменения
Mobj.Save
End Sub UserProc;
Imports Prognoz.Platform.Interop.Adhoc;
…
Public Shared Sub Main(Params: StartParams);
Var
mb: IMetabase;
AdHoc: IAdHocReport;
Mobj: IMetabaseObject;
DSObjects: IAdhocDataSourceObjects;
DSobj1, DSobj2: IAdhocDataSourceObject;
DSdims1, DSdims2: IAdhocDsoDimensions;
Di1, Di2, Dc1, Dc2: Integer;
CurDim1, CurDim2: IAdhocDsoDimension;
DimKey: UInteger;
Sync: IAdhocSynchronization;
DimSync: IAdhocDimsSynchronization;
SyncIdx: IAdhocDimSyncIndex;
ConIdx: integer;
Begin
// Получаем аналитическую панель
mb := Params.Metabase;
Mobj := mb.ItemById["DASHBOARD_SELECTION"].Edit();
AdHoc := Mobj As IAdHocReport;
// Получаем параметры синхронизации
Sync := AdHoc.Synchronization;
DimSync := Sync.Dimensions;
DimSync.Clear();
// Получаем источники данных аналитической панели
DSObjects := AdHoc.DataSourceObjects;
DSobj1 := DSObjects.Item[0];
DSobj1.GetSourceObject();
DSobj2 := DSObjects.Item[1];
DSobj2.GetSourceObject();
// Получаем измерения источников данных
DSdims1 := DSobj1.Dimensions;
DSdims2 := DSobj2.Dimensions;
Dc1 := DSdims1.Count;
Dc2 := DSdims2.Count;
ConIdx := 0;
// Настраиваем синхронизацию по всем измерениям источников данных
For Di1 := 0 To Dc1 - 1 Do
CurDim1 := DSdims1.Item[Di1];
If CurDim1.Type = AdhocDimensionType.adtSelectedArea Then
DimKey := CurDim1.Dimension.Key;
For Di2 := 0 To Dc2 - 1 Do
CurDim2 := DSdims2.Item[Di2];
If CurDim2.Type = AdhocDimensionType.adtSelectedArea Then
If DimKey = CurDim2.Dimension.Key Then
ConIdx := ConIdx + 1;
SyncIdx := DimSync.Add("Con" + ConIdx.ToString());
SyncIdx.Dimensions.Add(CurDim1);
SyncIdx.Dimensions.Add(CurDim2);
End If;
End If;
End For;
End If;
End For;
// Отключаем конвертацию отметки по выделению в визуальную отметку
DSobj1.AcceptDataSelection := False;
// Сохраняем изменения
Mobj.Save()
End Sub;
В результате выполнения примера для блоков аналитической панели будет настроена синхронизация выделенных данных.
См. также: