Пример настройки отчета с изображением
Glossary Item Box
Описание примера
Возможность настраивать пользовательские отчеты доступна в Creatio версии 7.15.3 и выше.
Создать отчет "Account Info", который отображает следующую информацию о контрагентах:
- [Название контрагента] ([Name]);
- [Логотип] ([Logo]).
Исходный код
Пакет с реализацией примера можно скачать по ссылке.
Алгоритм реализации примера
1. Выполните настройку параметров отображения отчета
Установите следующие значения (рис. 2) в области настройки параметров отображения отчета (рис. 1, 2):
- [Название отчета] ([Report title]) — "Account Info".
- [Раздел] ([Section]) — "Accounts".
- [Отображать в разделе] ([Show in section]).
- [Отображать на странице записи] ([Show in card]).
- [Отображать в аналитике раздела] ([Show in the section analytics view]).
- [Страница фильтрации] ([Filter page]) — SimpleReportFilterPage.
SimpleReportFilterPage — клиентская схема, которая реализовывает стандартные простые фильтры.
Рис. 1. — Страница настройки отчета
Рис. 2. — Настройка параметров отображения отчета
2. Укажите источники данных
В блоке [Укажите источники данных для отчета] ([Specify data sources for the report]) рабочей области страницы (рис. 1, 4) добавьте следующий код:
{ // Название класса провайдера данных. "ProviderName": "AccountInfoProvider", "Schemas": { "Data": { "Name": { "DataValueType": 1 }, "Logo": { "DataValueType": 14 } }, // Добавляется для локализации. "LocalizableStrings": { "ReportTitle": {"DataValueType": 1}, "NameLabel": {"DataValueType": 1}, "LogoLabel": {"DataValueType": 1} } } }
Для сохранения внесенных изменений нажмите кнопку [Применить] ([Apply]) на панели инструментов страницы (рис. 1, 1).
3. Создайте провайдер данных отчета
В разделе [Конфигурация] ([Configuration]) пользовательского пакета на вкладке [Схемы] ([Schemas]) выполните действие [Добавить] —> [Исходный код] ([Add] —> [Source Code]). Процесс создания схемы типа [Исходный код] ([Source Code]) описан в статье "Создание схемы [Исходный код]".
Для создаваемой схемы объекта установите (рис. 3):
- [Заголовок] ([Title]) — "Account Info";
- [Название] ([Name]) — "UsrAccountInfoSourceCode".
Рис. 3. — Настройка схемы объекта типа [Исходный код] ([Source Code])
Полностью исходный код представлен ниже.
namespace Terrasoft.Configuration { using System; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; using Terrasoft.Common; using Terrasoft.Configuration.Reporting.FastReport; using Terrasoft.Core; using Terrasoft.Core.Entities; using Terrasoft.Core.Factories; // Название класса провайдера данных для отчета, логику которого необходимо реализовать. [DefaultBinding(typeof(IFastReportDataSourceDataProvider), Name = "AccountInfoProvider")] public class AccountInfoProvider : IFastReportDataSourceDataProvider { // Название схемы c исходным кодом. private readonly string _resourceManagerName = "UsrAccountInfoSourceCode"; private readonly string[] _localizableStringNames = new[] { "ReportTitle", "NameLabel", "LogoLabel" }; // Заполнение колонок в отчете. private IEnumerable<IReadOnlyDictionary<string, object>> GetData(UserConnection userConnection, IEntitySchemaQueryFilterItem filter) { var esq = new EntitySchemaQuery(userConnection.EntitySchemaManager, "Account"); // Добавление колонок в запрос. var nameColumn = esq.AddColumn("Name").OrderByDesc(); var logoColumn = esq.AddColumn("AccountLogo.Data"); // Добавление созданного фильтра. esq.Filters.Add(filter); return esq.GetEntityCollection(userConnection) .Select(x => new Dictionary<string, object> { ["Name"] = x.GetTypedColumnValue<string>(nameColumn.Name), ["Logo"] = x.GetStreamValue(logoColumn.Name)?.ToArray() }); } // Локализация заголовков отчета. private IEnumerable<IReadOnlyDictionary<string, object>> GetLocalizableStrings(UserConnection userConnection) { var localizableStrings = _localizableStringNames.ToDictionary( x => x, x => (object)(new LocalizableString(userConnection.ResourceStorage, _resourceManagerName, $"LocalizableStrings.{x}.Value")).Value); return new[] { localizableStrings }; } // Добавление фильтров интерфейса. private IEntitySchemaQueryFilterItem ExtractFilterFromParameters(UserConnection userConnection, IReadOnlyDictionary<string, object> parameters) { return parameters.ExtractEsqFilterFromReportParameters(userConnection, "Account") ?? throw new Exception(); } // Получить данные. public Task<ReportDataDictionary> GetData(UserConnection userConnection, IReadOnlyDictionary<string, object> parameters) { var filter = ExtractFilterFromParameters(userConnection, parameters); var result = new ReportDataDictionary { // Заполнить колонки в отчете. ["Data"] = GetData(userConnection, filter), ["LocalizableStrings"] = GetLocalizableStrings(userConnection) }; return Task.FromResult(result); } } }
Присвойте локализуемым строкам шаблона отчета следующие значения (табл. 1):
Табл. 1. — Настройка локализованных строк
Name | English (United States) | Русский (Россия) |
---|---|---|
ReportTitle | Account Info | Информация о контрагенте |
NameLabel | Name | Название контрагента |
LogoLabel | Logo | Логотип |
Больше о работе с локализуемыми строками в статье "Дизайнер исходного кода".
Опубликуйте схему.
4. Скачайте шаблон из Creatio и настройте его внешний вид в FastReport
Скачайте файл AccountInfo.frx. Для этого в блоке [Скачайте файл с источниками данных и сформируйте шаблон отчета] ([Download file with data sources to design a report in the FastReport Designer]) рабочей области страницы (рис. 1, 4) нажмите кнопку [Скачать файл] ([Download file]).
Чтобы открыть шаблон в дизайнере отчетов, выполните следующие действия:
-
Откройте дизайнер отчетов FastReport, запустив файл Terrasoft.Reporting.FastReport.Designer.exe из zip-архива (рис. 4).
Рис. 4. — Файл с дизайнером отчетов FastReport
-
Нажмите кнопку [Open...] в появившимся окне (рис. 5).
Рис. 5. — Кнопка [Open...]
Также перейти к выбору шаблона отчета можно в меню [File] по нажатию кнопки [Open...] (рис. 6) или по нажатию клавиш [Ctrl+O].Рис. 6. — Кнопка [Open...] в меню [File]
-
Перейдите в папку со скачанным отчетом (обычно Downloads), выберите файл с шаблоном и нажмите кнопку [Open] (рис. 7).
Рис. 7. — Открытие шаблона отчета в FastReport
Настройте внешний вид шаблона (рис. 8).
Рис. 8. — Настройка шаблона в дизайнере отчетов FastReport
Для отображения изображения в колонке [Логотип] ([Logo]) отчета, необходимо при настройке внешнего вида шаблона в поле [BindableControl] дизайнера отчетов выбрать значение Picture (рис. 8).
5. Загрузите настроенный шаблон в Creatio
Чтобы загрузить файл AccountInfo.frx, нажмите кнопку [Загрузить шаблон] ([Upload template]) в блоке [Загрузите настроенный шаблон отчета в Creatio] ([Import a file with the report template]) рабочей области страницы (рис. 1, 4). Подтвердите успешность загрузки шаблона.
В результате отчет "Account Info" будет доступен на странице контрагента по кнопке [Печать] ([Print]) (рис. 9).
Рис. 9. — Отображение отчета "Account Info" на странице записи раздела [Контрагенты] ([Accounts])
Также отчет доступен в аналитике раздела [Контрагенты] ([Accounts]) по кнопке [Отчеты] ([Reports]) (рис. 10).
Рис. 10. — Отображение отчета "Account Info" в аналитике раздела [Контрагенты] ([Accounts])
Формирование отчета выполняется в соответствии с выбранной опцией [По отфильтрованным в разделе записям] ([Filtered records in list]) на странице фильтрации (рис. 11). Для загрузки отчета нажмите кнопку [Создать отчет] (Create report]), для закрытия страницы фильтрации и отмены формирования отчета нажмите [Отмена] ([Cancel]).
Рис. 11. — Страница фильтрации отчета "Account Info"
Отчет имеет следующий вид (рис. 12).
Рис. 12. — Пример отчета "Account Info"
Отчет по нескольким записям раздела
Получить отчет, состоящий из данных нескольких записей, можно следующими способами:
- При установленном признаке [Отображать в разделе] ([Show in section]) (рис. 2) необходимо в реестре раздела выбрать несколько записей.
- При установленном признаке [Отображать в аналитике раздела] ([Show in the section analytics view]) (рис. 2) можно использовать фильтры раздела или страницу фильтрации (рис. 11).
Чтобы включить в отчет информацию из нескольких записей раздела, выполните следующие действия (рис. 13):
- Перейдите в раздел.
- При необходимости установите фильтр.
- Выполните [Действия] —> [Выбрать несколько записей] ([Actions] —> [Select multiple records]).
- Выберите необходимый отчет в выпадающем списке кнопки [Печать] ([Print]).
Рис. 13. — Получение отчета "Account Info" из нескольких записей раздела [Контрагенты] ([Accounts])
Отчет имеет следующий вид (рис. 14).
Рис. 14. — Пример отчета "Account Info" по нескольким записям раздела
Смотрите также: