Провайдеры колонок используются для создания дополнительных уровней детализации отчетов (группировки данных).
Изначально в системе существуют два провайдера колонок по умолчанию: документов и справочников.
Провайдер документов предоставляет возможность детализировать отчеты по:
•времени (периодам):
▪дням;
▪неделям;
▪месяцам;
▪кварталам;
▪годам;
•непосредственно документам.
Провайдер справочников предоставляет возможность детализировать отчеты помимо значений самого справочника по значениям его свойств-ссылок.
Если для какого-либо справочника недостаточен уровень детализации, предоставляемых провайдером колонок по умолчанию, можно создать для него собственный провайдер колонок. Для создания провайдера колонок необходимо нажать кнопку Column provider script в форме редактирования справочника. По умолчанию при создании нового справочника провайдер его колонок не создается.
Список всех провайдеров колонок можно найти в справочнике "Scripts". Кроме того, провайдер колонок конкретного справочника можно открыть из его формы редактирования:
Скрипты провайдеров колонок реализуют интерфейс ITotalColumnProvider (из пространства имен Ultima.Server.Reporting.ColumnProviders), который в свою очередь реализует следующие методы:
•GetColumns – возвращает перечисление колонок, которые механизмом отчета по итогам будут интерпретированы как дополнительные измерения:
public IEnumerable<TotalColumn> GetColumns() { return new TotalColumn[] { // измерение (dimension) new SpaceTotalColumn { Name = "GroupAgentID", Caption = "Group agent", DatabaseName = "GROUP_AGENT_ID", DictionaryType = typeof(Agents), DisplayFormat = "{ID}:{FullName}" } }; } |
Класс SpaceTotalColumn описывает колонки измерений итога, наследуется от базового класса TotalColumn, обладает следующими свойствами:
▪Name, типа string – возвращает или устанавливает имя колонки;
▪Caption, типа string – возвращает или устанавливает описание колонки;
▪DatabaseName, типа string – возвращает или устанавливает имя колонки в базе данных;
▪ColumnType, типа TotalColumnTypes– возвращает или устанавливает тип колонки, может принимать значения:
▪Identity – идентификатор;
▪Number – число;
▪Date – дата;
▪Parent, типа TotalColumn– возвращает или устанавливает родителя колонки;
▪RootColumn, типа TotalColumn– возвращает корневого родителя колонки;
▪TreeLevel, типа long – возвращает или устанавливает уровень родителя колонки;
▪TransactionsOnly, типа bool – возвращает или устанавливает флаг, указывающий, что значения колонки аналитические (рассчитываемые);
▪FullName, типа string – возвращает или устанавливает полное имя колонки;
▪FullCaption, типа string – возвращает или устанавливает полное описание колонки;
▪FullDatabaseName, типа string – возвращает или устанавливает полное имя колонки в базе данных;
▪Nullable, типа bool – возвращает или устанавливает флаг, указывающий, могут ли значения колонки быть нулевыми Null.
▪DictionaryType, типа Type – возвращает или устанавливает тип справочника, являющегося измерением колонки;
▪DisplayFormat, типа string – возвращает или устанавливает формат отображения значений колонки;
•GetJoinExpression(TotalColumn column) – возвращает JoinExpression для колонки column:
public JoinExpression GetJoinExpression(TotalColumn column) { return new JoinExpression { TableName = "ARTICLE_GROUPS", ColumnName = "ID" }; } |
Класс JoinExpression описывает выражение JOIN, обладает следующими свойствами:
▪TableName, типа string – возвращает или устанавливает имя таблицы в базе данных;
▪ColumnName, типа string – возвращает или устанавливает имя колонки таблицы;
▪Type, типа string – возвращает или устанавливает тип выражения (вид оператора) JOIN, может принимать значения:
▪LEFT;
▪RIGHT;
▪INNER;
▪OUTER.
В приведенном выше примере выражение JOIN будет иметь вид:
// select * from ARTICLES A JOIN ARTICLE_GROUPS AG on AG.ID = A.GROUP_ID |