Провайдеры колонок

DevBookmark_ColumnProvider_ Провайдеры колонок используются для создания дополнительных уровней детализации отчетов (группировки данных).

Изначально в системе существуют два провайдера колонок по умолчанию: документов и справочников.

Провайдер документов предоставляет возможность детализировать отчеты по:

времени (периодам):

дням;

неделям;

месяцам;

кварталам;

годам;

непосредственно документам.

Провайдер справочников предоставляет возможность детализировать отчеты помимо значений самого справочника по значениям его свойств-ссылок.

Если для какого-либо справочника недостаточен уровень детализации, предоставляемых провайдером колонок по умолчанию, можно создать для него собственный провайдер колонок. Для создания провайдера колонок необходимо нажать кнопку Column provider script в форме редактирования справочника. По умолчанию при создании нового справочника провайдер его колонок не создается.

Список всех провайдеров колонок можно найти в справочнике "Scripts". Кроме того, провайдер колонок конкретного справочника можно открыть из его формы редактирования:

Scripts_ColumnProvider

DevBookmark_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}"

         }

 };

}

DevBookmark_Scripts Класс 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" };

}

DevBookmark_Scripts Класс 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