SliceParams(Slice: IEaxDataAreaSlice): IEaxDataAreaSliceParams;
Slice. Срез аналитической области данных.
Свойство SliceParams возвращает параметры среза аналитической области данных.
Для добавления в коллекцию параметра аналитической области данных используйте метод IEaxDataAreaParams.AddNew.
Для выполнения примера предполагается наличие в репозитории регламентного отчета с идентификатором REPORT и куба с идентификатором CUBE.
Добавьте ссылки на системные сборки: Dal, Express, Metabase, Report,Transform.
Sub UserProc;
Var
MB: IMetabase;
Report: IPrxReport;
DataArea: IEaxDataArea;
SlicesCount: Integer;
DataAreaSlice: IEaxDataAreaSlice;
Params: IEaxDataAreaParams;
Param, ParamItem: IEaxDataAreaParam;
SliceParams: IEaxDataAreaSliceParams;
index0, index1, index2, i: Integer;
Begin
MB := MetabaseClass.Active;
Report := mb.ItemById("REPORT").Edit As IPrxReport;
DataArea := Report.DataArea As IEaxDataArea;
SlicesCount := DataArea.Slices.Count - 1;
DataAreaSlice := DataArea.Slices.Item(SlicesCount);
Params := DataAreaSlice.Params;
SliceParams := Params.SliceParams(DataAreaSlice);
Params.Clear;
// Параметр 1:
Param := Params.AddNew;
Param.Hidden := False;
Param.Id := "ID1";
Param.Name := "MyParam1";
Param.LinkedObject := MB.ItemById("CUBE");
Param.ParamType := TsParamType.Simple;
Param.DataType := DbDataType.Integer;
Param.DefaultValue := 10;
Param.Value := 5;
index0 := SliceParams.IndexOf(Param);
// Параметр 2:
Param := Params.AddNew;
Param.Hidden := True;
Param.Id := "ID2";
Param.Name := "MyParam2";
Param.LinkedObject := MB.ItemById("CUBE");
Param.ParamType := TsParamType.Simple;
Param.DataType := DbDataType.Integer;
Param.DefaultValue := 20;
Param.Value := 10;
index1 := SliceParams.IndexOf(Param);
// Параметр 3:
Param := Params.AddNew;
Param.Hidden := True;
Param.Id := "ID3";
Param.Name := "MyParam3";
Param.LinkedObject := MB.ItemById("CUBE");
Param.ParamType := TsParamType.Simple;
Param.DataType := DbDataType.Integer;
Param.DefaultValue := 30;
Param.Value := 20;
index2 := SliceParams.IndexOf(Param);
Param.Tag := "Добавили параметры для аналитической области данных";
Debug.WriteLine("Добавили параметры для аналитической области данных. Срез: "
+ Param.Slice.Name + ". Параметры:");
For i := 0 To SliceParams.Count - 1 Do
ParamItem := SliceParams.Item(i);
Debug.WriteLine(i.ToString + ". " + ParamItem.Name);
End For;
Params.Move(index2, index0);
Debug.WriteLine("Изменили порядок параметров:");
For i := 0 To Params.Count - 1 Do
Debug.WriteLine(i.ToString + ". " + Params.Item(i).Name);
End For;
Debug.WriteLine("Удалим параметр: " + SliceParams.FindById("ID1").Name);
Params.Remove(index1);
Debug.WriteLine("Порядок параметров после удаления:");
For i := 0 To Params.Count - 1 Do
Debug.WriteLine(i.ToString + ". " + Params.Item(i).Name);
End For;
Params.Update;
(Report As IMetabaseObject).Save;
End Sub UserProc;
В результате выполнения примера для среза аналитической области данных будет добавлено три параметра. Затем будет изменён порядок параметров в коллекции. После чего будет удалён один из параметров.
См. также: