Пользовательские отчеты

DevBookmark_CustomReport_ Потребность в пользовательских отчетах возникает в случае, когда функционала отчетов по итогам не хватает и необходимо реализовать нестандартный отчет, например, с дополнительной детализацией данных, которой нельзя добиться с помощью измерений.

Список всех пользовательских отчетов можно найти в справочнике "Custom reports":

CustomReports_ListForm

Записи справочника можно фильтровать по Названию отчета (Name).

Открыть скрипт выбранного пользовательского отчета в форме редактирования можно прямо из списковой формы справочника, выбрав пункт Edit script в контекстном меню.

Кнопка Dict_scr_LinkTables4 в панели инструментов формы редактирования пользовательского отчета позволяет открыть отчет (форму параметров отчета). Функционал работает только для уже созданных отчетов:

CustomReports_EditForm

Пользовательский отчет обладает следующими свойствами:

Name – название отчета;

Caption – отображаемое в экранных формах название отчета;

Guid используется для идентификации пункта меню.

Guid генерируется автоматически случайным образом и при необходимости (при совпадении с Guid другого объекта) может быть изменен:

GuidControl_HowDoesItWork

Script – ссылка на скрипт. При создании нового пользовательского отчета скрипт создается автоматически при его сохранении. Нажатие на ссылку Click here to edit the script... при создании нового пользовательского отчета приведет к сохранению отчета и его перезагрузке, затем откроется форма редактирования скрипта;

Icon – иконка отчета (размером 16 на 16 пикселей).

Кнопки справа от области предпросмотра иконки позволяют:

Dict_EditForm1_But1 – загрузить иконку;

Dict_EditForm1_But2 – сохранить загруженную ранее иконку на компьютер;

Dict_EditForm1_But3 – удалить иконку;

Large icon – большая иконка (размером 32 на 32 пикселя);

User help – комментарий к отчету, который конечный пользователь может видеть в виде подсказки (hint), выпадающей при наведении курсора мыши на отчет. Комментарий вводится для каждого из языков системы в открывающейся по клику по ссылке форме;

Metadata tags – теги, используемые для описания функционала отчета;

Developer's comments – комментарии прикладного разработчика.

Пользовательские отчеты используют функционал отчетов по итогам, реализуемый системой. Отсюда следует задача прикладного разработчика при написании пользовательского отчета – представить данные своего отчета аналогично данным итога, с которыми может работать механизм отчета.

DevBookmark_Scripts Скрипты пользовательских отчетов реализуют интерфейс IReportDataSource (из пространства имен Ultima.Server.Reporting.DataSources), который в свою очередь реализует следующие методы:

GetTransactionsSql – возвращает запрос для транзакций (движений);

GetBalanceSql – возвращает запрос для балансов (входящих остатков);

GetReportColumns – возвращает колонки отчета (измерения и переменные):

public IEnumerable<TotalColumn> GetReportColumns()

{

 return new TotalColumn[]

 {

         // дата

         new DateTotalColumn {

                 Name = "TransactionDate",

                 Caption = "Process date",

                 DatabaseName = "TRANSACTION_DATE",

                 TransactionsOnly = true

         },

         // документ

         new DocumentTotalColumn {

                 Name = "Document",

                 Caption = "Document"

                 DatabaseName = "DOCUMENT_ID",

                 TransactionsOnly = true

         },

         // измерение (dimension)

         new SpaceTotalColumn {

                 Name = "ProductID",

                 Caption = "Product",

                 DatabaseName = "PRODUCT_ID",

                 DictionaryType = typeof(Goods),

                 DisplayFormat = "{ID}:{Name}"

         },

         // переменная (variable)

         new VariableTotalColumn {

                 Name = "Amount",

                 Caption = "Amount",

                 DatabaseName = "AMOUNT",

                 Modifiers = new[] {

                         VariableTotalColumnModifier.In,

                         VariableTotalColumnModifier.Add,

                         VariableTotalColumnModifier.Sub,

                         VariableTotalColumnModifier.Out

                 }.ToList()

         }

 };

}

Базовый класс колонок отчета TotalColumn обладает следующими свойствами:

Name, типа string – возвращает или устанавливает имя колонки;

Caption, типа string – возвращает или устанавливает описание колонки;

DatabaseName, типа string – возвращает или устанавливает имя колонки в базе данных;

ColumnType, типа TotalColumnTypes– возвращает или устанавливает тип колонки, может принимать значения:

Identity – идентификатор;

Number число;

Date – дата;

Parent, типа TotalColumn– возвращает или устанавливает родителя колонки;

RootColumn, типа TotalColumn– возвращает корневого родителя колонки;

TransactionsOnly, типа bool – возвращает или устанавливает флаг, указывающий, что значения колонки аналитические (рассчитываемые);

FullName, типа string – возвращает или устанавливает полное имя колонки;

FullCaption, типа string – возвращает или устанавливает полное описание колонки;

FullDatabaseName, типа string – возвращает или устанавливает полное имя колонки в базе данных.

Класс DimensionTotalColumn описывает колонки измерений, наследуется от базового класса TotalColumn, обладает следующими свойствами:

Nullable, типа bool – возвращает или устанавливает флаг, указывающий, могут ли значения колонки быть нулевыми Null.

Класс DateTotalColumn описывает колонки временных измерений, наследуется от класса DimensionTotalColumn.

Класс DocumentTotalColumn описывает колонки измерений-документов, наследуется от класса DimensionTotalColumn.

Класс SpaceTotalColumn описывает колонки прочих измерений, наследуется от класса DimensionTotalColumn, обладает следующими свойствами:

DictionaryType, типа Type – возвращает или устанавливает тип справочника, являющегося измерением колонки;

DisplayFormat, типа string – возвращает или устанавливает формат отображения значений колонки;

TreeLevel, типа long – возвращает или устанавливает уровень родителя колонки.

Класс VariableTotalColumn описывает колонки переменных, наследуется от базового класса TotalColumn, обладает следующими свойствами:

Modifiers, типа VariableTotalColumnModifier – возвращает или устанавливает список модификаторов переменной, может принимать значения:

Default = 0;

In = 1;

Add = 2;

Sub = 3;

Out = 4.

GetSortOrderColumns – возвращает набор колонок для сортировки движений:

public IEnumerable<string> GetSortOrderColumns()

{

 return new[] { "Document""TransactionDate" };

}

GetCalculatedTransactionsDate – возвращает дату, по которую рассчитаны транзакции;

GetActualTransactionsDate – возвращает дату актуальности транзакций (самая ранняя дата, на которую существует измененный документ).