Инструкция по разработке типового отчета. К инструкции прилагается проект-пример Galaktika. Kaustik. Reports csproj. (В проекте код подробно комментированный)


Скачать 90.41 Kb.
Название Инструкция по разработке типового отчета. К инструкции прилагается проект-пример Galaktika. Kaustik. Reports csproj. (В проекте код подробно комментированный)
Тип Инструкция
rykovodstvo.ru > Руководство эксплуатация > Инструкция
Инструкция по разработке типового отчета.

К инструкции прилагается проект-пример Galaktika.Kaustik.Reports.csproj. (В проекте код подробно комментированный)

  1. Концепция типовых отчетов ЕАМ.

eXpressApp Framework поставляет модуль «Отчеты». Этот модуль позволяет легко проектировать и печатать отчеты. Отчеты представляют собой персистентные объекты, которые хранятся в базе данных, для этого используется класс ReportData. Модуль использует полный функционал «движка» - XtraReports Suite. Этот «движок» предоставляет дизайнер, который позволяет создавать, просматривать и настраивать отчеты. Источником данных служит любой персистентный класс со всеми его свойствами. Параметрами отчета могут выступать значения свойств.

Недостатки существующей архитектуры:

  • Параметры отчета нельзя сохранить в базе данных

  • В качества источника данных могут выступать только персистентные объекты. Нельзя разработать отчеты, для которых структуры конкретного персистентного объекта недостаточно.

  • Нельзя добавить какой либо специфический алгоритм для получения источника данных

  • Чтобы запустить разные печатные формы для одного источника данных, нужно каждый раз выполнять получение источника данных


Архитектура типовых отчетов ЕАМ максимально использует функциональность платформы eXpressApp Framework, но также позволяет:

  • Сохранять параметры отчета в базе данных

  • Создавать отчеты со специфической структурой данных

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

  • Создавать для одного источника данных несколько печатных форм

  • Предоставить возможность запускать несколько печатных форм на одном источнике данных, при этом получение данных выполняется 1 раз.


Классы архитектуры:

Класс

Базовый класс

Предназначение

StandartReportData

DevExpress.ExpressApp.Reports.ReportData

Персистентный объект для хранения печатной формы типового отчета

StandartReportDataSourceHelper




В момент обновления базы данных инициализирует объекты, которые будут использоваться для источника данных типовых отчетов.


StandartReportDataSourceObject

DevExpress.Persistent.BaseImpl.BaseObject

Базовый класс для описания источника данных типового отчета

StandartXafReport

DevExpress.ExpressApp.Reports.XafReport

Используется для отображения дизайнера и печатной формы типового отчета

StandartReportDataSourceObjectViewController

ViewController

Контроллер отвечает за отображение и формирование Типовых отчетов



  1. Разработка типового отчета.

Для разработки нового отчета необходимо разработать ряд классов. Рассмотрим на примере отчета «Цены МЦ по данным последней закупки» (см проект-пример):

  1. Galaktika.Kaustik.Module.DataSourceObjects. InventoriesPriceReport


Наследник от StandartReportDataSourceObject. Этот класс будет использоваться как источник для стандартного отчета XAF. Смысл в том, чтобы в одном персистентном объекте хранить параметры (нужно реализовать свойство ParametersObjectList), шаблоны (свойство ReportDataCollection) и структуру данных отчета (нужно реализовать свойство DataSourceCollection). В базе данных может храниться только один объект этого типа, он создается автоматически в момент обновления базы данных и его нельзя удалить (за это отвечает статический класс StandartReportDataSourceHelper). Так же класс отвечает за заполнение источника данных для отчета (нужно реализовать метод InitializeDataSourceCollectionCore).



  1. Galaktika.Kaustik.Module.DataSourceObjects. InventoriesPriceReportParameter

Содержит перечень свойств, описывающих параметры отчета. В данном примере наследуется от класса EAMBaseReportParameters. Базовый класс имеет перечень параметров и виртуальный метод GetCriteria. Метод, согласно заданным параметрам, формирует CriteriaOperator. Данный критерий в дальнейшем используется для получения данных.


  1. Galaktika.Kaustik.Module.DataSourceObjects. InventoriesPriceReportService

Реализует наполнение элементов детализации отчета, в данном примере создает список экземпляров класса InventoriesPriceReportSource.


  1. Galaktika.Kaustik.Module.DataSourceObjects. InventoriesPriceReportSource.

Содержит перечень свойств, описывающих структуру данных, получаемых в отчете (Данные о дефектной ведомости)


  1. Galaktika.Kaustik.Module.DataSourceObjects. InventoriesPriceReportSourceSpec

Содержит перечень свойств, описывающих структуру данных спецификации.

(Данные о материалах дефектной ведомости)


  1. Получение данных для типового отчета.

  1. Получение данных из EAM.

Для получения данных из ЕАМ можно использовать множество способов. Самые распространенные это:

  • с помощью XPCollection http://documentation.devexpress.com/#XPO/clsDevExpressXpoXPCollectiontopic

  • с помощью XPQuery (Linq to XPO).

http://documentation.devexpress.com/#XPO/CustomDocument4060

При больших объемах информации рекомендуется использовать Linq to XPO. Т.к. XPCollection при загрузке данных получает всю информацию об объекте, что приводит к большому расходу оперативной памяти. А Linq to XPO позволяет отобрать только интересующую нас информацию. В классе InventoriesPriceReportService показан пример работы с Linq to XPO. В нашем примере по Дефектной ведомости отбираются только след. данные:

ExternalID, Oid, Код.

Особое внимание хочу уделить строке, где Метод AppendWhere позволяет применять критерий, полученный в классе параметров (CriteriaOperator) в XPQuery (другого способа я не нашел):

var repairLists = (IQueryable<�ЗаявкаНаРемонт>) new XPQuery<�ЗаявкаНаРемонт>(session). AppendWhere(converter, parameter.GetCriteria());

  1. Получение данных из ERP.

    1. Для работы с БД Галактика ERP были разработан ряд классов:

  • Galaktika.Kaustik.Utils.DataBase.IGalaktikaErpDbManager

Т.к. Галактика ERP может работать с разными СУБД, был разработан данный интерфейс. Он содержит ряд методов и свойств для работы с БД.

  • Galaktika.Kaustik.Utils.DataBase.GalaktikaErpDbManagerFactory

Фабрика в зависимости от строки соединения возвращает DbManager. В примере реализован DbManager только для MsSql.


  • Galaktika.Kaustik.Utils.DataBase.Sql.SqlGalaktikaErpDbManager

Это DbManager для работы с MsSql. Реализует интерфейс IGalaktikaErpDbManager. В частности метод GetInventoriesPrice, который делает запрос БД Галактика Erp и получает информормацию о ценах МЦ согласно данным последней закупки.

Если Вам необходимо разработать новый запрос в БД рекомендуется расширить интерфейс IGalaktikaErpDbManager нужным вам методом и реализовать данный метод в классе SqlGalaktikaErpDbManager.


  1. Запрос данных erp с учетом данных eam.

Для того чтоб отобрать данные erp, с учетом уже отобранных данных eam, мы создаем в БД erp временную таблицу и с помощью Bulk Copy, заносим туда данные eam. Данная временная таблица участвует в запросе данных erp (см файл GetInventoriesPriceQuery.sql).

За создание временной таблицы отвечает метод CreateTempDbTable, за копирование данных отвечает метод BulkCopyTempDbTable (см. класс SqlGalaktikaErpDbManager)


  1. Объединение данных erp и eam. Инициализация данных отчета.

После того как получили данные необходимо заполнить данные отчета. Создать список экземпляров InventoriesPriceReportSource, каждый из которых содержит список InventoriesPriceReportSourceSpec. (см. класс InventoriesPriceReportService)


  1. Запуск отчета из меню Отчеты -> Типовые отчеты

Списковая форма Типовые отчеты. Здесь перечислены все «объекты-одиночки» наследники от StandartReportDataSourceObject:



Карточная форма типового отчета, закладка параметры. Здесь пользователь может работать с параметрами данного типового отчета: создавать новые, редактировать, удалять:



Карточная форма типового отчета, закладка шаблоны. Здесь пользователь может работать с шаблонами данного типового отчета: создавать новые, редактировать, удалять.



Карточная форма типового отчета, закладка Источник. Здесь пользователь может просмотреть и проанализировать сформированный источник данных не вызывая печатную форму.



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

  1. Запуск отчета из карточки или списка объекта.

Для того чтобы отчет запустить из представления (View) какого либо персистентного объекта необходимо разработать контроллер (ViewController), с действием, которое будет выполнять запуск отчета. Действие должно иметь категорию (Category) “StandartReports”.

Рекомендуется создать базовый класс для ваших контроллеров (реализация данного класса есть в примере):

public partial class ShowInStandartReportViewController : ViewController

{

protected WinReportServiceController reportServiceController;

protected IObjectSpace reportObjectSpace;
protected override void OnActivated()

{

base.OnActivated();
reportObjectSpace = this.Application.CreateObjectSpace();

reportServiceController = this.Frame.GetController();

if (reportServiceController != null)

{

reportServiceController.CustomShowPreview += new EventHandler(reportServiceController_CustomShowPreview);

}

}
protected override void OnDeactivated()

{

reportObjectSpace = null;

if (reportServiceController != null)

{

reportServiceController.CustomShowPreview += new EventHandler(reportServiceController_CustomShowPreview);

reportServiceController = null;

}
base.OnDeactivated();

}
void reportServiceController_CustomShowPreview(object sender, CustomShowPreviewEventArgs e)

{

//устанавливаем для отчета ObjectSpace в котором получаются данные

e.Report.ObjectSpace = reportObjectSpace;

}
protected virtual void ExecuteStandartReport(Type dataSourceObjectType, object patameterObject)

{

//получаем singletone объект для отчета:

var standartReportDataSourceObject = (StandartReportDataSourceObject)reportObjectSpace.GetObjects(dataSourceObjectType)[0];

//устанавливаем текущие параметры:

standartReportDataSourceObject.ParametersObject = patameterObject;

//Загружаем данные:

standartReportDataSourceObject.InitializeDataSourceCollection();

foreach (var reportData in standartReportDataSourceObject.ReportDataCollection)

{

if (reportData.IsMain)

reportServiceController.ShowPreview(reportData);

}

}

}

Данный класс имеет метод ExecuteStandartReport, который и выполняет запуск.

Пример реализации наследника см. класс ДефектнаяВедомость_StandartReportViewController в примере.

Для пользователя, в списке или карточке, в тулбаре появится раздел типовые отчеты, в котором будет доступно ваше действие. В примере выделенные дефектные ведомости попадают в параметры отчета. И для них выводятся отчет о ценах МЦ.

Похожие:

Инструкция по разработке типового отчета. К инструкции прилагается проект-пример Galaktika. Kaustik. Reports csproj. (В проекте код подробно комментированный) icon Методический пример проект производства работ (ппр) на монтаж панельного высотного дома
Проект производства работ состоит из общего раздела и технологических карт на монтаж типового этажа, второго этажа на монолитном...
Инструкция по разработке типового отчета. К инструкции прилагается проект-пример Galaktika. Kaustik. Reports csproj. (В проекте код подробно комментированный) icon С чего начать?
На обратной стороне коробочки, вы можете видеть, так называемый qr-код (штрих-код). Ниже дан пример, как он выглядит. Данный код...
Инструкция по разработке типового отчета. К инструкции прилагается проект-пример Galaktika. Kaustik. Reports csproj. (В проекте код подробно комментированный) icon С чего начать?
На обратной стороне коробочки, вы можете видеть, так называемый qr-код (штрих-код). Ниже дан пример, как он выглядит. Данный код...
Инструкция по разработке типового отчета. К инструкции прилагается проект-пример Galaktika. Kaustik. Reports csproj. (В проекте код подробно комментированный) icon С чего начать?
На обратной стороне коробочки, вы можете видеть, так называемый qr-код (штрих-код). Ниже дан пример, как он выглядит. Данный код...
Инструкция по разработке типового отчета. К инструкции прилагается проект-пример Galaktika. Kaustik. Reports csproj. (В проекте код подробно комментированный) icon Инструкция по чтению отчета структурные продукты и внебиржевые пфи
Внесены уточнения о зависимости статуса отчета сформированного в Личном кабинете от времени формирования отчета
Инструкция по разработке типового отчета. К инструкции прилагается проект-пример Galaktika. Kaustik. Reports csproj. (В проекте код подробно комментированный) icon Инструкция о мерах пожарной безопасности Пример инструкции о мерах...
Работники организации обязаны знать и соблюдать все требования настоящей инструкции
Инструкция по разработке типового отчета. К инструкции прилагается проект-пример Galaktika. Kaustik. Reports csproj. (В проекте код подробно комментированный) icon Инструкция о мерах пожарной безопасности Пример инструкции о мерах...
Работники организации обязаны знать и соблюдать все требования настоящей инструкции
Инструкция по разработке типового отчета. К инструкции прилагается проект-пример Galaktika. Kaustik. Reports csproj. (В проекте код подробно комментированный) icon Образец аудита
Для различных объектов разработаны различные по объему, содержанию и отчетности модели энергоаудита, т н. Motiva-модели. В инструкциях...
Инструкция по разработке типового отчета. К инструкции прилагается проект-пример Galaktika. Kaustik. Reports csproj. (В проекте код подробно комментированный) icon Инструкция для организатора в аудитории подготовки
...
Инструкция по разработке типового отчета. К инструкции прилагается проект-пример Galaktika. Kaustik. Reports csproj. (В проекте код подробно комментированный) icon Инструкция по химиотерапии больных туберкулезом проект изменений...
Проект изменений «Инструкции по химиотерапии больных туберкулезом» приложения №6 к Приказу мз РФ №109 от 21 марта 2003 года «О совершенствовании...
Инструкция по разработке типового отчета. К инструкции прилагается проект-пример Galaktika. Kaustik. Reports csproj. (В проекте код подробно комментированный) icon Дипломный проект по специальности код и название специальности по теме
Проект реконструкции участка по капитальному ремонту фартука токарного станка 16Б16 ОАО «Прогресс»
Инструкция по разработке типового отчета. К инструкции прилагается проект-пример Galaktika. Kaustik. Reports csproj. (В проекте код подробно комментированный) icon Календарно-тематическое планирование педагогов, работающих в проекте
Перечень документов, которые должны быть в образовательных учреждениях, участвующих в проекте «Дистанционное образование»
Инструкция по разработке типового отчета. К инструкции прилагается проект-пример Galaktika. Kaustik. Reports csproj. (В проекте код подробно комментированный) icon Пример готовой работы (перевод инструкции к медицинскому прибору с китайского на русский)

Инструкция по разработке типового отчета. К инструкции прилагается проект-пример Galaktika. Kaustik. Reports csproj. (В проекте код подробно комментированный) icon Инструкция ацк-госзаказ Ульяновская область (План-график) Нужно привязать...
Далее создаете новый план-график План-График создается только на основании Плана Закупок на статусе “Отправлен в проект бюджета”,...
Инструкция по разработке типового отчета. К инструкции прилагается проект-пример Galaktika. Kaustik. Reports csproj. (В проекте код подробно комментированный) icon Необходимо помнить, что ответственность за правильность расчета,...
При оформлении emd на сбор (код 50) необходимо руководствоваться информацией авиакомпании
Инструкция по разработке типового отчета. К инструкции прилагается проект-пример Galaktika. Kaustik. Reports csproj. (В проекте код подробно комментированный) icon Инструкция по заполнению отчета от школы Шаг 1
Шаг Выйти на сайт https://monitoring rcokoit ru/, скачать форму отчета по своему району

Руководство, инструкция по применению




При копировании материала укажите ссылку © 2024
контакты
rykovodstvo.ru
Поиск