IEaxSyncGroups.CreateGroup

Syntax

CreateSyncGroup(SyncItem: IEaxDimensionDescriptor): IEaxSyncGroup;;

Parameters

SyncItem. Dimension description.

Description

The CreateGroup method creates a link of synchronized dimensions.

Comments

To remove the link of synchronized dimensions by its index, use IEaxSyncGroups.Remove.

Example

Executing the example requires that the repository contains regular report with the REG_SYNCGROUPS identifier containing two analytical data areas based on the same source. Data source should obligatory contain calendary dimension based on calendar dictionary with the D_CALENDAR identifier and territory dimension based on territory dimension with the DIC_RF identifier.

Add links to the Dimensions, Express, Metabase, Report system assemblies.

Sub UserProc;
Var
    MB: IMetabase;
    Report: IPrxReport;
    DataArea: IEaxDataArea;
    RepGrid: IEaxGrid;
    SelManager: IEaxObjectSelectionManager;
    SliceA, SliceB: IEaxDataAreaSlice;
    CalDimKey_A, TerDimKey_A, CalDimKey_B, TerDimKey_B, i, Key, Count: Integer;
    CalInst_A, TerInst_A, CalInst_B, TerInst_B: IEaxDimensionInstance;
    SGroups: IEaxSyncGroups;
    Group_a, Group_b, SG: IEaxSyncGroup;
    Compatible: IEaxDimensionDescriptors;
    DimName, SyncAttr: String;
    SyncItem: IEaxSyncItem;
Begin
    MB := MetabaseClass.Active;
    // Get report
    Report := MB.ItemById("REG_SYNCGROUPS").Edit As IPrxReport;
    // Get object to work with table
    DataArea := Report.DataArea;
    RepGrid := DataArea.Views.Item(0As IEaxGrid;
    SelManager := RepGrid.SelectionManager;
    // Set up synchronization of the first slice dimensions
    SliceA := Report.DataArea.Slices.Item(0);
    CalDimKey_A := SliceA.Selection.FindById("D_CALENDAR").Dimension.Key;
    CalInst_A := SelManager.GetDimension(CalDimKey_A);
    TerDimKey_A := SliceA.Selection.FindById("DIC_RF").Dimension.Key;
    TerInst_A := SelManager.GetDimension(TerDimKey_A);
    SGroups := Report.SyncGroups;
    Group_a := SGroups.CreateGroup(CalInst_A);
    Group_b := SGroups.CreateGroup(TerInst_A);
    SyncItem := Group_a.Add(CalInst_A);
    SyncItem := Group_b.Add(TerInst_A);
    // Set up synchronization of the second slice dimension
    SliceB := Report.DataArea.Slices.Item(1);
    CalDimKey_B := SliceB.Selection.FindById("D_CALENDAR").Dimension.Key;
    CalInst_B := SliceB.GetDimension(CalDimKey_B);
    TerDimKey_B := SliceB.Selection.FindById("DIC_RF").Dimension.Key;
    TerInst_B := SliceB.GetDimension(TerDimKey_B);
    Compatible := SGroups.GetCompatibleItems(CalInst_A, "");
    DimName := SliceA.Selection.FindById("D_CALENDAR").Dimension.Name;
    Debug.WriteLine("Number of links for which this dimension is convenient = " + Compatible.Count.ToString);
    If SGroups.IsDimensionsCompatible(CalInst_A, "", CalInst_B, ""Then
        Group_a.Add(CalInst_B);
    Else
        Return;
    End If;
    If SGroups.IsDimensionsCompatible(TerInst_A, "", TerInst_B, ""Then
        Group_b.Add(TerInst_B);
    Else
        Return;
    End If;
    // Get link elements of territory dimension
    SG := SGroups.InGroup(TerInst_B);
    SG.PropogateChanges(TerInst_B);
    For i := 0 To SG.Count - 1 Do
        SyncItem := SG.Item(i);
        // Determine that link only receives the selection
        SyncItem.SyncDirection := EaxDimensionSynchronizationDirection.ConsumeChangesOnly;
        SyncAttr := SyncItem.SyncAttribute;
        Count := SyncItem.SyncGroup.Count;
        Key := SyncItem.Dimension.DimKey;
        Debug.WriteLine("Number of link elements = " + Count.ToString);
        Debug.WriteLine("Dimension key - " + Count.ToString);
        If SyncAttr.Length > 0 Then
            Debug.WriteLine("Synchronization attribute - " + SyncAttr);
        Else
            Debug.WriteLine("No synchronization by attribute");
        End If;
    End For;
    // Save changes
    (Report As IMetabaseObject).Save;
End Sub UserProc;

After executing the example two links for dimension synchronization will be created. The first link is for calendar dimension, the second link is for territory dimension.

See also:

IEaxSyncGroups