ElementStyle(Element: Variant): IEaxDataAreaCellStyle;
ElementStyle[Element: object]: Prognoz.Platform.Interop.Express.IEaxDataAreaCellStyle;
Element. Идентификатор вычисляемого элемента.
Свойство ElementStyle определяет стиль оформления ячеек элемента альтернативной иерархии.
Для получения идентификатора вычисляемого элемента используйте IDimInstance.Id.
Для выполнения примера в репозитории необходимо наличие экспресс-отчета с идентификатором «EXPRESS». Отчет содержит таблицу. Одно из измерений должно содержать минимум одну альтернативную иерархию. Также в первый элемент отметки должен быть добавлен вычисляемый элемент с произвольным наименованием.
Добавьте ссылки на системные сборки: Dimensions, Express, Metabase, Tab.
Sub UserProc;
Var
MB: IMetabase;
Express: IEaxAnalyzer;
Hier: IEaxDataAreaHierarchy;
CustDimAttrsCount: Integer;
Slice: IEaxDataAreaSlice;
DimSel, Sel_filt: IDimSelection;
DimEl: String;
CellStyle: IEaxDataAreaCellStyle;
SelSet: IDimSelectionSet;
Sel: IDimSelection;
tr, sort: IEaxDataAreaTransformation;
Begin
// Получим репозиторий
MB := MetabaseClass.Active;
// Получим экспресс-отчет
Express := MB.ItemById("EXPRESS").Edit As IEaxAnalyzer;
// Получим альтернативную иерархию
Hier := Express.DataArea.Hierarchies.Item(0);
// Получим и выведем в окно консоли количество атрибутов измерения фактов
CustDimAttrsCount := Hier.CustomDimension.Attributes.Count;
Debug.WriteLine("Количество атрибутов измерения фактов = " + CustDimAttrsCount.ToString);
// Выведем в окно консоли количество альтернативных иерархий
Debug.WriteLine("Количество альтернативных иерархий = " + Hier.Hierarchies.Count.ToString);
// Выведем в окно консоли идентификатор альтернативной иерархии
Debug.WriteLine("Идентификатор альтернативной иерархии
- " + Hier.Hierarchy.Key.ToString);
// Выведем в окно консоли первый и последний элементы измерения
Debug.WriteLine("Первый элемент измерения - " + Hier.Selection.FirstDimElement.ToString);
Debug.WriteLine("Последний элемент измерения - " + Hier.Selection.LastDimElement.ToString);
// Изменим тип значка при наведении указателя мыши на вычисляемый элемент
Slice := Express.DataArea.Slices.Item(0);
DimSel := Slice.Selection.Item(0);
DimSel.SelectAll;
DimEl := DimSel.Dimension.Elements.Id(1);
CellStyle := Hier.ElementStyle(DimEl);
CellStyle.Data.PictureCursor := TabCursor.CrossSmall;
// Отфильтруем записи с помощью выражения
SelSet := Express.DataArea.Slices.Item(0).Selection.CreateCopy;
Sel_filt := SelSet.Item(0);
Sel_filt.SelectAll;
tr := Hier.FilterTransformations.Add(SelSet, Sel, -1);
tr.Enabled := True;
tr.Expression.AsString := "{Архангельская область[t]} > 25";
Hier.Filter;
If Hier.IsFiltered Then
Debug.WriteLine("Фильтрация успешно завершена") Else
Debug.WriteLine("Фильтрация завершилась с ошибками");
End If;
// Отсортируем записи с помощью выражения по возрастанию
If hier.IsAutoSort Then
Hier.AutoSort := Tristate.OffOption;
End If;
sort := Hier.SortTransformations.Add(SelSet, Sel, -1);
sort.Enabled := True;
sort.Expression.AsString := "{X[1997]}";
Hier.SortDirection := EaxDataAreaHierarchySortDirection.Asc;
Hier.Sort;
If Hier.IsSorted Then
Debug.WriteLine("Сортировка успешно завершена") Else
Debug.WriteLine("Сортировка завершилась с ошибками");
End If;
//Обновим и сохраним изменения
Express.RefreshAll;
(Express As IMetabaseObject).Save;
End Sub UserProc;
После выполнения примера:
в окно консоли будут выведены различные данные;
при наведении на добавленный вычисляемый элемент изменится вид курсора;
применится сортировка и фильтрация согласно формулам.
Необходимые требования и результат выполнения примера Fore.NET совпадают с примером Fore.
Imports Prognoz.Platform.Interop.Dimensions;
Imports Prognoz.Platform.Interop.Express;
Imports Prognoz.Platform.Interop.ForeSystem;
Imports Prognoz.Platform.Interop.Tab;
…
Public Shared Sub Main(Params: StartParams);
Var
MB: IMetabase;
Express: IEaxAnalyzer;
Hier: IEaxDataAreaHierarchy;
CustDimAttrsCount: Integer;
Slice: IEaxDataAreaSlice;
DimSel, Sel_filt: IDimSelection;
DimEl: String;
CellStyle: IEaxDataAreaCellStyle;
SelSet: IDimSelectionSet;
Sel: IDimSelection;
tr, sort: IEaxDataAreaTransformation;
Begin
// Получим репозиторий
MB := Params.Metabase;
// Получим экспресс-отчет
Express := MB.ItemById["EXPRESS"].Edit() As IEaxAnalyzer;
// Получим альтернативную иерархию
Hier := Express.DataArea.Hierarchies.Item[0];
// Получим и выведем в окно консоли количество атрибутов измерения фактов
CustDimAttrsCount := Hier.CustomDimension.Attributes.Count;
System.Diagnostics.Debug.WriteLine
("Количество атрибутов измерения фактов = " + CustDimAttrsCount.ToString());
// Выведем в окно консоли количество альтернативных иерархий
System.Diagnostics.Debug.WriteLine
("Количество альтернативных иерархий = " + Hier.Hierarchies.Count.ToString());
// Выведем в окно консоли идентификатор альтернативной иерархии
System.Diagnostics.Debug.WriteLine
("Идентификатор альтернативной иерархии
- " + Hier.Hierarchy.Key.ToString());
// Выведем в окно консоли первый и последний элементы измерения
System.Diagnostics.Debug.WriteLine
("Первый элемент измерения - " + Hier.Selection.FirstDimElement.ToString());
System.Diagnostics.Debug.WriteLine
("Последний элемент измерения - " + Hier.Selection.LastDimElement.ToString());
// Изменим тип значка при наведении указателя мыши на вычисляемый элемент
Slice := Express.DataArea.Slices.Item[0];
DimSel := Slice.Selection.Item[0];
DimSel.SelectAll();
DimEl := DimSel.Dimension.Elements.Id[1];
CellStyle := Hier.ElementStyle[DimEl];
CellStyle.Data.PictureCursor := TabCursor.tfcurCrossSmall;
// Отфильтруем записи с помощью выражения
SelSet := Express.DataArea.Slices.Item[0].Selection.CreateCopy();
Sel_filt := SelSet.Item[0];
Sel_filt.SelectAll();
tr := Hier.FilterTransformations.Add(SelSet, Sel, uinteger.maxvalue);
tr.Enabled := True;
tr.Expression.AsString := "{Архангельская область[t]} > 25";
Hier.Filter();
If Hier.IsFiltered Then
System.Diagnostics.Debug.WriteLine("Фильтрация успешно завершена") Else
System.Diagnostics.Debug.WriteLine("Фильтрация завершилась с ошибками");
End If;
// Отсортируем записи с помощью выражения по возрастанию
If hier.IsAutoSort Then
Hier.AutoSort := Tristate.tsOffOption;
End If;
sort := Hier.SortTransformations.Add(SelSet, Sel, uinteger.maxvalue);
sort.Enabled := True;
sort.Expression.AsString := "{X[1997]}";
Hier.SortDirection := EaxDataAreaHierarchySortDirection.edahsdAsc;
Hier.Sort();
If Hier.IsSorted Then
System.Diagnostics.Debug.WriteLine("Сортировка успешно завершена") Else
System.Diagnostics.Debug.WriteLine("Сортировка завершилась с ошибками");
End If;
//Обновим и сохраним изменения
Express.RefreshAll();
(Express As IMetabaseObject).Save();
End Sub;
См. также: