Creatio development guide
PDF
Это документация Creatio версии 7.16.0. Мы рекомендуем использовать новую версию документации.

Пример настройки отчета с изображением

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]).

Чтобы открыть шаблон в дизайнере отчетов, выполните следующие действия:

  1. Откройте дизайнер отчетов FastReport, запустив файл Terrasoft.Reporting.FastReport.Designer.exe из zip-архива (рис. 4).

    Рис. 4. — Файл с дизайнером отчетов FastReport

  2. Нажмите кнопку [Open...] в появившимся окне (рис. 5).

    Рис. 5. — Кнопка [Open...]


    Также перейти к выбору шаблона отчета можно в меню [File] по нажатию кнопки [Open...] (рис. 6) или по нажатию клавиш [Ctrl+O].

    Рис. 6. — Кнопка [Open...] в меню [File]

  3. Перейдите в папку со скачанным отчетом (обычно 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"

Отчет по нескольким записям раздела

Получить отчет, состоящий из данных нескольких записей, можно следующими способами:

  1. При установленном признаке [Отображать в разделе] ([Show in section]) (рис. 2) необходимо в реестре раздела выбрать несколько записей.
  2. При установленном признаке [Отображать в аналитике раздела] ([Show in the section analytics view]) (рис. 2) можно использовать фильтры раздела или страницу фильтрации (рис. 11).

Чтобы включить в отчет информацию из нескольких записей раздела, выполните следующие действия (рис. 13):

  1. Перейдите в раздел.
  2. При необходимости установите фильтр.
  3. Выполните [Действия] —> [Выбрать несколько записей] ([Actions] —> [Select multiple records]).
  4. Выберите необходимый отчет в выпадающем списке кнопки [Печать] ([Print]).

Рис. 13. — Получение отчета "Account Info" из нескольких записей раздела [Контрагенты] ([Accounts])

Отчет имеет следующий вид (рис. 14).

Рис. 14. — Пример отчета "Account Info" по нескольким записям раздела

Смотрите также:

© Terrasoft 2002-2020.

Был ли данный материал полезен?

Как можно улучшить эту статью?