Изменяем базовый отчёт DevExpress

advertisement
Изменяем базовый отчёт DevExpress
Задание: Добавить одну простую деталь в отчёт «Досье контрагента».
1. Находим в разделе Конфигурация отчёт «Досье контрагента».
2. Экспортируем на диск.
3. Открываем в текстовом редакторе и изменяем Uid, Name, Caption. Uid и Name необходимо
изменить во всём документе массово. Новый Guid можно сгенерировать на сайте
http://www.guidgenerator.com/ или в Visual Studio. Было.
Стало.
Нужно обратить внимание, что Name может использоваться также в именах скриптов
формирования отчета, поэтому после массовой замены и открытия отчета в DevExpress
необходимо проверить, чтобы привязка скриптов к событиям и их имена совпадали.
4. Возвращаемся в раздел Конфигурация, переходим в свой пакет, импортируем нашу изменённую
схему.
6. После успешного импорта сама схема должна появится в нашем пакете.
7. Компилируем изменения.
8. Заходим в Management Studio. Пишем скрипт для регистрации нашего изменённого отчёта в
разделе контрагенты.
За основу для добавления взял отчёт «Досье контрагента». Что получилось:
insert into SysModuleReport
(
CreatedOn,
ModifiedOn,
Caption,
SysModuleId /*Раздел Контрагенты*/,
HelpContextId,
TypeId,
SysReportSchemaUId, /*Значение колонки Uid в таблице SysSchema*/
SysOptionsPageSchemaUId,
ShowInSection,
ShowInCard
)
select
getdate(),
getdate(),
'Досье контрагента с контактами' ,
SysModuleId,
HelpContextId,
TypeId,
'B938D1D7-D6F9-4FE9-9724-E8D11C3E642E' /Uid схемы, который мы сгенерили в 3 п./
,
SysOptionsPageSchemaUId,
ShowInSection,
ShowInCard /Прзнак отвечающий за то что отчёт будет отображаться в карточке
Контрагента/
from SysModuleReport where Id = '460AD08A-8C80-E011-AFBC-00155D04320C'
9. Для того чтобы не отображать в карточке Контрагента базовый отчёт, необходимо
написать скрипт для снятия признака ShowInCard
update SysModuleReport
set ShowInCard = 0
from SysModuleReport where Id = '460AD08A-8C80-E011-AFBC-00155D04320C'
10. Да. У нас ещё есть локализация. Необходимо написать скрипты для добавления
локализации
– для русского языка
insert into SysModuleReportLcz
(
CreatedOn,
ModifiedOn,
RecordId,
ColumnUId,
SysCultureId,
Value
)
select
getdate(),
getdate(),
'C6BC9958-755F-42DB-BFC1-FB4F6017EAC6' /*Id записи, которую мыдобавили, с таблицы
SysModuleReport*/,
ColumnUId,
SysCultureId,
'Досье контрагента с контактами'
from SysModuleReportLcz
where
Id = 'C0B314AE-F895-E111-84A3-00155D054C03'
– для английского языка
insert into SysModuleReportLcz
(
CreatedOn,
ModifiedOn,
RecordId,
ColumnUId,
SysCultureId,
Value
)
select
getdate(),
getdate(),
'C6BC9958-755F-42DB-BFC1-FB4F6017EAC6' /*Id записи, которую мыдобавили, с таблицы
SysModuleReport*/,
ColumnUId,
SysCultureId,
'Company Summary With Contacts'
from SysModuleReportLcz
where
Id = 'CDB314AE-F895-E111-84A3-00155D054C03'
11. Чистим Redis, кеш, рестартуем сайт. В случае, если у Вас on-Demand, нужно просто
подождать, пока Redis очистится автоматически, либо написать/позвонить в тех. поддержку,
чтобы сделали рестарт сайта.
12. Заходим в дизайне построения отчётов DevExpress.
13. Нам необходимо добавить ФИО контакта из таблицы Карьера. Вытягиваем поле ФИО.
Нажимаем сохранить отчёт. Получаем ошибку.
14. Нужно поменять имя у соответствующего поля и заново опубликовать отчет:
.
15. Далее нам нужно добавить данные для отчета. В нашем случае это таблица Карьера контакта.
Сначала сохраняем текущие настройки:
16. Добавляем таблицу Карьера контакта через дизайнер данных. При этом возможна ситуация,
что слетят все связи с таблицей Account (именно для этого мы сохраняли настройки данных в
пункте 15).
Прежде, чем выполнять манипуляции в п. 17-20 нужно проверить, действительно «слетели» ли
связи, так как данная ошибка дизайнера уже исправлялась после написания этой инструкции.
Для этого нужно опубликовать отчет из DevExpress:
17. Снова сохраняем настроенные данные. Теперь нам нужно скопировать таблицу Карьера
контакта в первоначальные настройки из пункта 15. Это все делается в любом текстовом
редакторе. Открываем оба файла и копируем из второго блок где описывается таблица карьеры
контакта:
18. Теперь нужно в исходном файле (из пункта 15) прописать связь контрагента и таблицы
контакта. Для этого ищем в самом конце XML-ки блок со связями (Relationship). Вставляем туда
по аналогии с другими связями связь на таблицу ContactCareer(карьера контакта):
19. Теперь можно загрузить обратно файл из пункта 15.
20. Ну вот, почти все. Но остался еще очень важный момент! Нужно прописать элемент данных
для нашей новой детали контрагентов в отчете. Элемент данных это ссылка на нашу связь
(Relationship), которую мы прописали в XML. То есть, на Account_ContactCareer:
Все. Отчет готов.
Еще один пример добавления поля, но уже
без копирования отчета:
Чтобы открыть имеющийся отчет выбираем пункт меню «Открыть» и в окне указываем наш отчет:
Загрузится дизайн отчета (красным выделены заголовки, зеленым – поля данных):
Здесь можно редактировать отчет.
Для добавления новых полей нужно сначала добавить их в источник данных, например добавим
поле «Приоритет.Название». Так как объекты «Активность» и «Участник активности» уже
используются, то добавлять их не нужно, а нужно лишь отметить нужные колонки:
Теперь колонка появилась в источнике данных и можно добавит ее в отчет.
Добавляем поля заголовков и данных.
Указываем нужные данные в поля данных перетягиванием:
Теперь переходим в окно «Скрипты» и добавляем в набор данных выбранные колонки здесь:
И здесь:
Нажимаем «Опубликовать»
Если появляется такая ошибка:
Нужно поменять имя у соответствующего поля и заново опубликовать отчет:
Ждем несколько минут, пока происходит публикация и проверяем отчет.
Download