Изменяем базовый отчёт 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: Все. Отчет готов. Еще один пример добавления поля, но уже без копирования отчета: Чтобы открыть имеющийся отчет выбираем пункт меню «Открыть» и в окне указываем наш отчет: Загрузится дизайн отчета (красным выделены заголовки, зеленым – поля данных): Здесь можно редактировать отчет. Для добавления новых полей нужно сначала добавить их в источник данных, например добавим поле «Приоритет.Название». Так как объекты «Активность» и «Участник активности» уже используются, то добавлять их не нужно, а нужно лишь отметить нужные колонки: Теперь колонка появилась в источнике данных и можно добавит ее в отчет. Добавляем поля заголовков и данных. Указываем нужные данные в поля данных перетягиванием: Теперь переходим в окно «Скрипты» и добавляем в набор данных выбранные колонки здесь: И здесь: Нажимаем «Опубликовать» Если появляется такая ошибка: Нужно поменять имя у соответствующего поля и заново опубликовать отчет: Ждем несколько минут, пока происходит публикация и проверяем отчет.