Отчеты FastReport

PDF
Легкий

Важно. В Creatio версии 8.0.3 будет прекращена поддержка функциональности отчетов FastReport.

Отчет FastReport — документ, который сгенерирован на основе записей разделов Creatio в формате *.pdf.

Настроить доступ к разделу Настройка отчетов 

Доступ к разделу Настройка отчетов (Report setup) настраивается на уровне системных операций. Если пользователь не имеет доступа к разделу Настройка отчетов (Report setup), то отображается стандартное сообщение с указанием операции и недостающих прав. По умолчанию доступ к основным системным операциям имеют только администраторы приложения. Creatio предоставляет возможность настройки доступа к системным операциям для пользователей или групп пользователей. Подробнее читайте в статье Настроить права доступа на системные операции.

Чтобы настроить доступ к разделу Настройка отчетов (Report setup):

  1. Перейдите в дизайнер системы по кнопке . В блоке Пользователи и администрирование (Users and administration) перейдите по ссылке Права доступа на операции (Operation permissions).
  2. Выберите системную операцию Доступ к разделу "Настройка отчетов" (Access to "Report setup" section, код CanManageReports).
  3. На детали Доступ к операции (Operation permission) нажмите и укажите получателя прав.

В результате запись отобразится на детали Доступ к операции (Operation permission) в колонке Уровень доступа (Access level) со значением Да (Yes). Пользователи, которые входят в указанную роль, получат доступ к системной операции Доступ к разделу "Настройка отчетов" (Access to "Report setup" section, код CanManageReports).

Создать простой отчет FastReport 

  1. Создайте отчет FastReport.

    1. Перейдите в дизайнер системы по кнопке . В блоке Настройка системы (System setup) перейдите по ссылке Настройка отчетов (Report setup).
    2. Выполните действие Добавить отчет —>FastReport (New report —>FastReport).

    3. На панели свойств заполните свойства отчета:

      • Название отчета (Report title) — пользовательское название отчета (обязательное свойство). Отображается на соответствующей панели инструментов, которая зависит от установленных признаков Отображать в разделе (Show in the section list view), Отображать на странице записи (Show in the section record page), Отображать в аналитике раздела (Show in the section analytics view).
      • Раздел (Section) — выберите раздел, из которого планируется генерировать отчет (обязательное свойство). Например, чтобы отобразить отчет в разделе Контрагенты (Accounts), в выпадающем списке выберите соответствующий раздел.
      • Признак Отображать в разделе (Show in the section list view) — указывает необходимость отображения отчета в выпадающем меню кнопки Печать (Print) панели инструментов раздела.
      • Признак Отображать на странице записи (Show in the section record page) — указывает необходимость отображения отчета в выпадающем меню кнопки Печать (Print) панели инструментов страницы записи.
      • Признак Отображать в аналитике раздела (Show in the section analytics view) — указывает необходимость отображения отчета в выпадающем меню кнопки Отчеты (Reports) панели инструментов аналитики раздела. При установленном признаке позволяет использовать пользовательскую страницу дополнительной фильтрации записей для отчета.
      • Страница фильтрации (Filter page) — пользовательская страница дополнительной фильтрации записей для отчета. Свойство отображается при установленном признаке Отображать в аналитике раздела (Show in the section analytics view). Позволяет задать параметры фильтрации записей после выбора отчета в выпадающем меню кнопки Отчеты (Reports) аналитики раздела. Можно выбрать стандартную страницу фильтрации SimpleReportFilterPage или создать пользовательскую страницу фильтрации. Для пользовательской страницы фильтрации в качестве родительского объекта (обязательное свойство Родительский объект (Parent object) клиентской схемы) выберите схему BaseReportFilterPage пакета FastReport.

      Страница фильтрации SimpleReportFilterPage — клиентская схема, которая содержит реализацию стандартных простых фильтров.

      Параметры фильтрации, которые позволяет выбрать страница фильтрации SimpleReportFilterPage:

      • По выделенным записям (Selected records).
      • По отфильтрованным в разделе записям (Filtered records in list).
      • По всем записям без учета фильтрации (All records in list).
  2. Укажите источники данных.

    1. В блоке Укажите источники данных для отчета (Specify data sources for the report) рабочей области страницы настройки отчета укажите источники данных. Для указания источников данных используйте формат json.

      Данные, которые необходимо указать:

      • Перечень объектов.
      • Колонки объектов.
      • Связи колонок объектов, которые используются для получения данных.
      • Локализуемые строки (опционально).

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

      Шаблон источника данных
      {
          "ProviderName": "YourProviderName",
          "Schemas": {
              "TableName1": {
                  "ColumnName1": {"DataValueType": DataValueType1},
                  ...,
                  "ColumnNameN": {"DataValueType": DataValueTypeN}
              },
              ...,
              "TableNameN": {
                  "ColumnName1": {"DataValueType": DataValueType1},
                  ...,
                  "ColumnNameN": {"DataValueType": DataValueTypeN}
              },
              "LocalizableStrings": {
                  "LocalizableString1": {"DataValueType": 1},
                  ...,
                  "LocalizableStringN": {"DataValueType": 1}
              }
          }
      }
      

      ProviderName — класс провайдера данных.

      Schemas — структура таблиц для шаблона отчета.

      TableName1...TableNameN — имена таблиц базы данных или виртуальных таблиц, колонки которых необходимо добавить в отчет.

      ColumnName1...ColumnNameN — имена колонок, которые необходимо добавить в отчет.

      DataValueType1...DataValueTypeN — типы данных соответствующих колонок ColumnName1...ColumnNameN.

      LocalizableStrings — локализуемые строки.

      LocalizableString1...LocalizableStringN — имена локализуемых строк отчета.

      "DataValueType": 1 — тип данных TEXT соответствующих локализуемых строк LocalizableString1...LocalizableStringN.

      DataValueType — параметр, который содержит значение из перечисления Terrasoft.core.enums.DataValueType. Перечисление Terrasoft.core.enums.DataValueType описано в Библиотеке .NET классов.

    2. На панели инструментов страницы настройки отчета нажмите Применить (Apply).
  3. Реализуйте провайдер данных отчета.

    Провайдер данных отчета — пользовательский класс на языке C#.

    1. Создайте схему типа Исходный код (Source code). Для этого воспользуйтесь инструкцией, которая приведена в статье Исходный код (C#).
    2. В дизайнере исходного кода реализуйте класс провайдера данных.

      • В дизайнере исходного кода добавьте пространство имен Terrasoft.Configuration или любое вложенное в него пространство имен.
      • Для класса добавьте атрибут [DefaultBinding] с необходимыми параметрами. Параметр Name совпадает с параметром YourProviderName, который был указан в источнике данных.
      • Создайте класс, который является наследником Terrasoft.Configuration.Reporting.FastReport.IFastReportDataSourceDataProvider.
      • Реализуйте методы класса провайдера данных.

        • GetLocalizableStrings(UserConnection) — метод, который локализует поля отчета.
        • ExtractFilterFromParameters(UserConnection, Guid, IReadOnlyDictionary) — метод, который добавляет фильтры интерфейса.
        • GetData(UserConnection, IReadOnlyDictionary) — метод, который возвращает значение типа Task<ReportDataDictionary>. Содержит реализацию логики получения данных отчета.
  4. Настройте шаблон отчета.

    1. Скачайте файл отчета FastReport. Для этого в блоке Скачайте файл с источниками данных и сформируйте шаблон отчета (Download file with data sources to design a report in the FastReport Designer) рабочей области страницы настройки отчета нажмите кнопку Скачать файл (Download file).

      В результате скачан файл в формате *.frx.

    2. Откройте шаблон отчета.

      1. Откройте дизайнер отчетов FastReport.

        Компоненты, которые необходимы для работы дизайнера отчетов FastReport:

        • Операционная система Windows.
        • 64-разрядный Microsoft .Net Framework 4.7.2.

        Разархивируйте *.zip-архив и запустите файл Terrasoft.Reporting.FastReport.Designer.exe.

      2. Выберите отчет FastReport, который планируется настроить. Для этого в блоке Open a Recent Item окна Welcome to FastReport нажмите на кнопку Open....

      3. Перейдите в каталог со скачанным отчетом (обычно это каталог Downloads), выберите предварительно скачанный *.frx-файл и нажмите на кнопку Open.

        В шаблоне сохраняется структура источников данных, которая реализована на странице настройки отчета.

    3. Настройте шаблон отчета. Выполнение настройки шаблона описано в официальной документации FastReport.

      Поскольку дизайнер отчетов FastReport является сторонним приложением, функция предпросмотра настроенного отчета недоступна.

    4. Сохраните шаблон отчета. Для этого в меню File панели инструментов нажмите на кнопку Save.

    5. Загрузите настроенный шаблон отчета в Creatio.

      1. В блоке Загрузите настроенный шаблон отчета в Creatio (Import a file with the report template) рабочей области страницы настройки отчета нажмите на кнопку Загрузить шаблон (Upload template).

      2. Перейдите в каталог с настроенным шаблоном отчета (обычно это каталог Downloads), выберите файл с отчетом и нажмите на кнопку Open.

    В результате настроенный шаблон отчета загружен в Creatio.

Способы генерации отчета FastReport, которые зависят от настроек на странице настройки отчета:

  • Выпадающее меню кнопки Печать (Print) панели инструментов раздела.
  • Выпадающее меню кнопки Отчеты (Reports) панели инструментов аналитики раздела.
  • Кнопка Печать (Print) активной записи реестра раздела.
  • Выпадающее меню кнопки Печать (Print) панели инструментов страницы записи.

Отчет генерируется в формате *.pdf.

Если в реестре раздела не выбрана запись, то отчет не активен.

Чтобы сгенерировать отчет FastReport по нескольким записям раздела:

  1. Обновите страницу соответствующего раздела.
  2. Выберите несколько записей раздела.

    Способы выбора нескольких записей раздела:

    • В реестре раздела (на странице настройки отчета установлен признак Отображать в разделе (Show in the section list view)). Для этого на панели инструментов раздела выполните действие Действия —> Выбрать несколько записей (Actions —> Select multiple records).

    • В аналитике раздела (на странице настройки отчета установлен признак Отображать в аналитике раздела (Show in the section analytics view)).

      1. На панели инструментов раздела выполните действие Действия —> Выбрать несколько записей (Actions —> Select multiple records).
      2. Нажмите на кнопку .
      3. В выпадающем меню кнопки Отчеты (Reports) панели инструментов раздела выберите отчет, который необходимо сгенерировать.

        В результате откроется страница фильтрации.

      4. Отфильтруйте записи (опционально). Для этого на странице фильтрации выберите опцию По отфильтрованным в разделе записям (Filtered records in list).
      5. Для скачивания отчета нажмите на кнопку Создать отчет (Create report).

Создать отчет FastReport с изображением 

  1. Выполните шаги 1-4 алгоритма создания простого отчета FastReport.
  2. На шаге 4 настройте отображение изображения в шаблоне отчета.

    1. На вкладке Data панели свойств Data выполните Data Sources —> Creatio —> Data и кликните по элементу, который является изображением. Например, элемент Logo, как представлено на рисунке ниже.

    2. В группе Design панели свойств Properties элемента, который является изображением, в выпадающем списке свойства BindableControl выберите значение "Picture".

    3. Добавьте элемент, который является изображением, в рабочую область дизайнера отчетов.

Настроить мультиязычие элементов интерфейса отчета FastReport 

Чтобы настроить мультиязычие элементов интерфейса отчета FastReport, используйте раздел Переводы (Translations) дизайнера системы. Работа с разделом Переводы (Translations) описана в статье Перевести элементы интерфейса в разделе Переводы.

Особенности поиска элементов интерфейса отчета FastReport в разделе Переводы (Translations):

  • Для поиска ранее локализуемых строк отчета используйте шаблон ключа Configuration:НазваниеCхемы (например, Configuration:UsrContactDataSourceCode).
  • Для поиска полей отчета используйте шаблон ключа Configuration:НазваниеСхемы:НазваниеПоля.Value (например, Configuration:UsrContactDataSourceCode:LocalizableStrings.ReportTitle.Value).
  • Для поиска отображаемого названия отчета при установленых на странице настройки отчета признаках Отображать в разделе (Show in the section list view) и Отображать на странице записи (Show in the section record page) используйте шаблон ключа Configuration:НазваниеСхемы:Caption (например, Configuration:UsrContactDataSourceCode:Caption).
  • Для поиска отображаемого названия отчета при установленом на странице настройки отчета признаке Отображать в аналитике раздела (Show in the section analytics view) используйте шаблон ключа Data:SysModuleAnalyticsReport.Caption:ИдентификаторПоля (например, Data:SysModuleAnalyticsReport.Caption:d52e8b78-772b-77ee-3394-bdb3616d859a).

Если на странице настройки отчета установлен хотя бы один из признаков Отображать в разделе (Show in the section list view), Отображать на странице записи или Отображать в аналитике раздела (Show in the section analytics view), то обязательно выполняется перевод отображаемого названия отчета.

Привязать отчет FastReport к пакету 

  1. Перейдите в раздел Конфигурация (Configuration) и выберите пользовательский пакет, в который будет добавлена схема.
  2. На панели инструментов реестра раздела нажмите Добавить —> Данные (Add —> Data).

  3. Выполните привязку данных. Для этого воспользуйтесь инструкцией, которая приведена в статье Привязать данные к пакету.

    Элементы, привязку которых необходимо выполнить:

    • FastReportTemplate_ReportName — шаблон отчета. Подключается по идентификатору отчета (колонка [Id] таблицы [FastReportTemplate] базы данных).
    • FastReportDataSource_ReportName — источник данных отчета. Подключается по идентификатору отчета (колонка [Id] таблицы [FastReportDataSource] базы данных).
    • SysModuleReport_ReportName — отчет. Подключается по идентификатору отчета (колонка [Id] таблицы [SysModuleReport] базы данных).
Создать простой отчет FastReport
Средний

Важно. В Creatio версии 8.0.3 будет прекращена поддержка функциональности отчетов FastReport.

Пример. На страницу раздела Контакты (Contacts) и страницу контакта добавить отчет Информация контакта (Contact Data).

Поля, которые содержит отчет Информация контакта (Contact Data):

  • ФИО (Full name) — имя контакта.
  • Дата рождения (Birthday) — дата рождения контакта.
  • Пол (Gender) — пол контакта.
  • Контрагент (Account) — контрагент, который связан с контактом.

1. Создать отчет 

  1. Перейдите в дизайнер системы по кнопке . В блоке Настройка системы (System setup) перейдите по ссылке Настройка отчетов (Report setup).
  2. Выполните действие Добавить отчет —>FastReport (New report —>FastReport).

  3. На панели свойств заполните свойства отчета:

    • Название отчета (Report title) — "Информация контакта" ("Contact Data").
    • Раздел (Section) — выберите "Контакты" ("Contacts").
    • Установите признак Отображать в разделе (Show in the section list view).
    • Установите признак Отображать на странице записи (Show in the section record page).
    • Установите признак Отображать в аналитике раздела (Show in the section analytics view).
    • Страница фильтрации (Filter page) — выберите "SimpleReportFilterPage".

2. Указать источники данных 

  1. В блоке Укажите источники данных для отчета (Specify data sources for the report) рабочей области страницы настройки отчета укажите источники данных.

    Данные, которые необходимо указать:

    • Перечень объектов.
    • Колонки объектов.
    • Связи колонок объектов, которые используются для получения данных.
    • Локализуемые строки (опционально).

    Исходный код источника данных ContactDataProvider приведен ниже.

    ContactDataProvider
    {
        "ProviderName": "ContactDataProvider",
        "Schemas": {
            "ContactData": {
                "Full name": {"DataValueType": 1},
                "Birthday": {"DataValueType": 1},
                "Gender": {"DataValueType": 1},
                "Account": {"DataValueType": 1}
            },
            "LocalizableStrings": {
                "ReportTitle": {"DataValueType": 1},
                "FullNameLabel": {"DataValueType": 1},
                "BirthdayLabel": {"DataValueType": 1},
                "GenderLabel": {"DataValueType": 1},
                "AccountLabel": {"DataValueType": 1}
            }
        }
    }
    

    ProviderName — класс провайдера данных.

    DataValueType — типы данных соответствующих колонок. 1 — тип данных TEXT. Перечисление Terrasoft.core.enums.DataValueType описано в Библиотеке .NET классов.

    LocalizableStrings — локализуемые строки.

  2. На панели инструментов страницы настройки отчета нажмите Применить (Apply).

3. Реализовать провайдер данных отчета 

  1. Перейдите в раздел Конфигурация (Configuration) и выберите пользовательский пакет, в который будет добавлена схема.
  2. На панели инструментов реестра раздела нажмите Добавить —> Исходный код (Add —> Source code).

  3. В дизайнере исходного кода заполните свойства схемы:

    • Код (Code) — "UsrContactDataSourceCode".
    • Заголовок (Title) — "Информация контакта" ("Contact Data").

    Для применения изменений свойств нажмите Применить (Apply).

  4. Добавьте локализуемую строку, которая содержит заголовок отчета.

    1. В контекстном меню узла Локализуемые строки (Localizable strings) нажмите кнопку .
    2. Заполните свойства локализуемой строки:

      • Код (Code) — "ReportTitle".
      • Значение (Value) — "Информация контакта" ("Contact Data").
    3. Для добавления локализуемой строки нажмите Добавить (Add).
  5. Аналогично добавьте локализуемые строки, которые соответствуют полям отчета.

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

    Значения локализуемых строк
    Код
    (Code)
    Значение
    (Value)
    "FullNameLabel"
    "ФИО" ("Full name")
    "BirthdayLabel"
    "Дата рождения" ("Birthday")
    "GenderLabel"
    "Пол" ("Gender")
    "AccountLabel"
    "Контрагент" ("Account")
  6. В дизайнере исходного кода реализуйте логику работы класса провайдера данных для отчета.

    Исходный код схемы типа Исходный код (Source code) представлен ниже.

    UsrContactDataSourceCode
    namespace Terrasoft.Configuration
    {
        using System;
        using System.Collections.Generic;
        using System.Collections.ObjectModel;
        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;
        using Terrasoft.Nui.ServiceModel.Extensions;
        using EntitySchema = Terrasoft.Core.Entities.EntitySchema;
        using EntitySchemaColumn = Terrasoft.Core.Entities.EntitySchemaColumn;
    
        /* Название класса провайдера данных для отчета, логику которого необходимо реализовать. Совпадает с названием ProviderName, который был указан на шаге 2. */
        [DefaultBinding(typeof(IFastReportDataSourceDataProvider), Name = "ContactDataProvider")]
        public class ContactDataProvider : IFastReportDataSourceDataProvider
        {
    
            private Guid _entitySchemaUId = new Guid("16BE3651-8FE2-4159-8DD0-A803D4683DD3");
            /* Название схемы c исходным кодом. */
            private readonly string _resourceManagerName = "UsrContactDataSourceCode";
            private readonly string[] _localizableStringNames = new[] {
                "ReportTitle",
                "FullNameLabel",
                "BirthdayLabel",
                "GenderLabel",
                "AccountLabel"
            };
    
            /* Заполнение колонок в отчете. */
            private IEnumerable<IReadOnlyDictionary<string, object>> GetContactData(
                UserConnection userConnection,
                Guid entitySchemaUId,
                IEntitySchemaQueryFilterItem filter) {
                    /* Получить схему объекта. */
                    var entitySchema = userConnection.EntitySchemaManager.GetInstanceByUId(entitySchemaUId);
                    /* Создание объекта класса EntitySchemaQuery. */
                    EntitySchemaQuery query = new EntitySchemaQuery(entitySchema);
                    /* Добавление колонок в запрос. */
                    query.AddColumn("Name");
                    query.AddColumn("BirthDate");
                    var gender = query.AddColumn("Gender.Name");
                    var account = query.AddColumn("Account.Name");
                    /* Добавление созданного фильтра. */
                    query.Filters.Add(filter);
                    /* Получить коллекцию контактов. */
                    var contacts = query.GetEntityCollection(userConnection);
                    var contactsCollection = new Collection<Dictionary<string, object>>();
                    /* Заполнение колонок в отчете. */
                    foreach (var entity in contacts)
                    {
                        contactsCollection.Add(new Dictionary<string, object> {
                            ["Full name"] = entity.GetTypedColumnValue<string>("Name"),
                            ["Birthday"] = entity.GetTypedColumnValue<string>("BirthDate"),
                            ["Gender"] = entity.GetTypedColumnValue<string>(gender.Name),
                            ["Account"] = entity.GetTypedColumnValue<string>(account.Name)
                        });
                    }
                    return contactsCollection;
            }
            
            /* Локализация заголовков отчета. */
            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, Guid entitySchemaUId, IReadOnlyDictionary<string, object> parameters) {
                var managerItem = userConnection.EntitySchemaManager.GetItemByUId(entitySchemaUId);
                return parameters.ExtractEsqFilterFromReportParameters(userConnection, managerItem.Name) ?? throw new Exception();
            } 
    
            /* Получить данные. */
            public Task<ReportDataDictionary> GetData(UserConnection userConnection, IReadOnlyDictionary<string, object> parameters) {
                var filter = ExtractFilterFromParameters(userConnection, _entitySchemaUId, parameters);
                var result = new ReportDataDictionary {
                    /* Заполнить колонки в отчете. */
                        ["ContactData"] = GetContactData(userConnection, _entitySchemaUId, filter), ["LocalizableStrings"] = GetLocalizableStrings(userConnection)
                };
                return Task.FromResult(result);
            }
        }
    }
    
  7. На панели инструментов дизайнера исходного кода нажмите Опубликовать (Publish) для выполнения изменений на уровне базы данных.

4. Настроить шаблон отчета 

  1. Скачайте файл отчета FastReport. Для этого в блоке Скачайте файл с источниками данных и сформируйте шаблон отчета (Download file with data sources to design a report in the FastReport Designer) рабочей области страницы настройки отчета нажмите кнопку Скачать файл (Download file).

    В результате скачан файл ContactData.frx.

  2. Откройте шаблон отчета.

    1. Откройте дизайнер отчетов FastReport. Для этого разархивируйте *.zip-архив и запустите файл Terrasoft.Reporting.FastReport.Designer.exe.

    2. Выберите отчет FastReport, который планируется настроить. Для этого в блоке Open a Recent Item окна Welcome to FastReport нажмите на кнопку Open....

    3. Перейдите в каталог со скачанным отчетом (обычно это каталог Downloads), выберите предварительно скачанный файл ContactData.frx и нажмите на кнопку Open.

  3. Настройте шаблон отчета.

    Настроенный шаблон отчета Информация контакта (Contact Data) приведен на рисунке ниже.

  4. Сохраните шаблон отчета. Для этого в меню File панели инструментов нажмите на кнопку Save.

  5. Загрузите настроенный шаблон отчета в Creatio.

    1. В блоке Загрузите настроенный шаблон отчета в Creatio (Import a file with the report template) рабочей области страницы настройки отчета нажмите на кнопку Загрузить шаблон (Upload template).

    2. Перейдите в каталог с настроенным шаблоном отчета (обычно это каталог Downloads), выберите файл с отчетом и нажмите на кнопку Open.

В результате настроенный шаблон отчета Информация контакта (Contact Data) загружен в Creatio.

Для переноса изменений между рабочими средами, привяжите отчет к пакету. Для этого воспользуйтесь инструкцией, которая приведена в статье Отчеты FastReport.

Результат выполнения примера 

Чтобы посмотреть результат выполнения примера, обновите страницу раздела Контакты (Contacts).

В результате выполнения примера на страницу раздела Контакты (Contacts) добавлен отчет Информация контакта (Contact Data). Отчет доступен в выпадающем меню кнопки Печать (Print) панели инструментов раздела.

Отчет Информация контакта (Contact Data) имеет вид, который представлен на рисунке ниже.

Если в реестре раздела Контакты (Contacts) не выбрана запись, то отчет Информация контакта (Contact Data) не активен в выпадающем меню кнопки Печать (Print) панели инструментов.

В результате выполнения примера в аналитику раздела Контакты (Contacts) также добавлен отчет Информация контакта (Contact Data). Отчет доступен в выпадающем меню кнопки Отчеты (Reports) панели инструментов раздела.

В результате выполнения примера на страницу контакта также добавлен отчет Информация контакта (Contact Data). Отчет доступен в выпадающем меню кнопки Печать (Print) панели инструментов страницы контакта.

Чтобы посмотреть результат выполнения примера по нескольким контактам:

  1. Обновите страницу раздела Контакты (Contacts).
  2. Выберите несколько записей раздела.

    Способы выбора нескольких записей раздела:

    • В реестре раздела (на странице настройки отчета установлен признак Отображать в разделе (Show in the section list view)). Для этого на панели инструментов раздела выполните действие Действия —> Выбрать несколько записей (Actions —> Select multiple records).

    • В аналитике раздела (на странице настройки отчета установлен признак Отображать в аналитике раздела (Show in the section analytics view)).

      1. На панели инструментов раздела выполните действие Действия —> Выбрать несколько записей (Actions —> Select multiple records).
      2. Нажмите на кнопку .
      3. В выпадающем меню кнопки Отчеты (Reports) панели инструментов раздела выберите отчет Информация контакта (Contact Data).

        В результате откроется страница фильтрации.

      4. Отфильтруйте записи (опционально). Для этого на странице фильтрации выберите опцию По отфильтрованным в разделе записям (Filtered records in list).
      5. Для скачивания отчета нажмите на кнопку Создать отчет (Create report).

Отчет Информация контакта (Contact Data) по нескольким записям имеет вид, который представлен на рисунке ниже.

Создать отчет FastReport с изображением
Средний

Важно. В Creatio версии 8.0.3 будет прекращена поддержка функциональности отчетов FastReport.

Пример. На страницу раздела Контрагенты (Accounts) и страницу контрагента добавить отчет Информация контрагента (Account Info).

Поля, которые содержит отчет Информация контрагента (Account Info):

  • Название контрагента (Name) — название контрагента.
  • Логотип (Logo) — логотип контрагента.

1. Создать отчет 

  1. Перейдите в дизайнер системы по кнопке . В блоке Настройка системы (System setup) перейдите по ссылке Настройка отчетов (Report setup).
  2. Выполните действие Добавить отчет —>FastReport (New report —>FastReport).

  3. На панели свойств заполните свойства отчета:

    • Название отчета (Report title) — "Информация контрагента" ("Account Info").
    • Раздел (Section) — выберите "Контрагенты" ("Accounts").
    • Установите признак Отображать в разделе (Show in the section list view).
    • Установите признак Отображать на странице записи (Show in the section record page).

2. Указать источники данных 

  1. В блоке Укажите источники данных для отчета (Specify data sources for the report) рабочей области страницы настройки отчета укажите источники данных.

    Данные, которые необходимо указать:

    • Перечень объектов.
    • Колонки объектов.
    • Связи колонок объектов, которые используются для получения данных.
    • Локализуемые строки (опционально).

    Исходный код источника данных AccountInfoProvider приведен ниже.

    AccountInfoProvider
    {
        "ProviderName": "AccountInfoProvider",
        "Schemas": {
            "Data": {
                "Name": {"DataValueType": 1},
                "Logo": {"DataValueType": 14}
            },
            "LocalizableStrings": {
                "ReportTitle": {"DataValueType": 1},
                "NameLabel": {"DataValueType": 1},
                "LogoLabel": {"DataValueType": 1}
            }
        }
    }
    

    ProviderName — класс провайдера данных.

    DataValueType — типы данных соответствующих колонок. Перечисление Terrasoft.core.enums.DataValueType описано в Библиотеке .NET классов.

    • 1 — тип данных TEXT.
    • 14 — тип данных IMAGE.

    LocalizableStrings — локализуемые строки.

  2. На панели инструментов страницы настройки отчета нажмите Применить (Apply).

3. Реализовать провайдер данных отчета 

  1. Перейдите в раздел Конфигурация (Configuration) и выберите пользовательский пакет, в который будет добавлена схема.
  2. На панели инструментов реестра раздела нажмите Добавить —> Исходный код (Add —> Source code).

  3. В дизайнере исходного кода заполните свойства схемы:

    • Код (Code) — "UsrAccountInfoSourceCode".
    • Заголовок (Title) — "Информация контрагента" ("Account Info").

    Для применения изменений свойств нажмите Применить (Apply).

  4. Добавьте локализуемую строку, которая содержит заголовок отчета.

    1. В контекстном меню узла Локализуемые строки (Localizable strings) нажмите кнопку .
    2. Заполните свойства локализуемой строки:

      • Код (Code) — "ReportTitle".
      • Значение (Value) — "Информация контрагента" ("Account Info").
    3. Для добавления локализуемой строки нажмите Добавить (Add).
  5. Аналогично добавьте локализуемые строки, которые соответствуют полям отчета.

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

    Значения локализуемых строк
    Код
    (Code)
    Значение
    (Value)
    "NameLabel"
    "Название контрагента" ("Name")
    "LogoLabel"
    "Логотип" ("Logo")
  6. В дизайнере исходного кода реализуйте логику работы класса провайдера данных для отчета.

    Исходный код схемы типа Исходный код (Source code) представлен ниже.

    UsrAccountInfoSourceCode
    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;
    
        /* Название класса провайдера данных для отчета, логику которого необходимо реализовать. Совпадает с названием ProviderName, который был указан на шаге 2. */
        [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);
            }
        }
    }
    
  7. На панели инструментов дизайнера исходного кода нажмите Опубликовать (Publish) для выполнения изменений на уровне базы данных.

4. Настроить шаблон отчета 

  1. Скачайте файл отчета FastReport. Для этого в блоке Скачайте файл с источниками данных и сформируйте шаблон отчета (Download file with data sources to design a report in the FastReport Designer) рабочей области страницы настройки отчета нажмите кнопку Скачать файл (Download file).

    В результате скачан файл AccountInfo.frx.

  2. Откройте шаблон отчета.

    1. Откройте дизайнер отчетов FastReport. Для этого разархивируйте *.zip-архив и запустите файл Terrasoft.Reporting.FastReport.Designer.exe.

    2. Выберите отчет FastReport, который планируется настроить. Для этого в блоке Open a Recent Item окна Welcome to FastReport нажмите на кнопку Open....

    3. Перейдите в каталог со скачанным отчетом (обычно это каталог Downloads), выберите предварительно скачанный файл AccountInfo.frx и нажмите на кнопку Open.

  3. Настройте шаблон отчета.

    Чтобы изображение отобразилось в сформированном отчете:

    1. На вкладке Data панели свойств Data выполните Data Sources —> Creatio —> Data и кликните по элементу Logo.

    2. В группе Design панели свойств Properties элемента Logo в выпадающем списке свойства BindableControl выберите значение "Picture".

    3. Добавьте элемент Logo в рабочую область дизайнера отчетов.

    Настроенный шаблон отчета Информация контрагента (Account Info) приведен на рисунке ниже.

  4. Сохраните шаблон отчета. Для этого в меню File панели инструментов нажмите на кнопку Save.

  5. Загрузите настроенный шаблон отчета в Creatio.

    1. В блоке Загрузите настроенный шаблон отчета в Creatio (Import a file with the report template) рабочей области страницы настройки отчета нажмите на кнопку Загрузить шаблон (Upload template).

    2. Перейдите в каталог с настроенным шаблоном отчета (обычно это каталог Downloads), выберите файл с отчетом и нажмите на кнопку Open.

В результате настроенный шаблон отчета Информация контрагента (Account Info) загружен в Creatio.

Для переноса изменений между рабочими средами, привяжите отчет к пакету. Для этого воспользуйтесь инструкцией, которая приведена в статье Отчеты FastReport.

Результат выполнения примера 

Чтобы посмотреть результат выполнения примера, обновите страницу раздела Контрагенты (Accounts).

В результате выполнения примера на страницу раздела Контрагенты (Accounts) добавлен отчет Информация контрагента (Account Info). Отчет доступен в выпадающем меню кнопки Печать (Print) панели инструментов раздела.

Отчет Информация контрагента (Account Info) имеет вид, который представлен на рисунке ниже.

Если в реестре раздела Контрагенты (Accounts) не выбрана запись, то отчет Информация контрагента (Account Info) не активен в выпадающем меню кнопки Печать (Print) панели инструментов.

В результате выполнения примера на страницу контрагента также добавлен отчет Информация контрагента (Account Info). Отчет доступен в выпадающем меню кнопки Печать (Print) панели инструментов страницы контрагента.

Чтобы посмотреть результат выполнения примера по нескольким контрагентам:

  1. Обновите страницу раздела Контрагенты (Accounts).
  2. Выберите несколько записей раздела. Для этого на панели инструментов раздела выполните действие Действия —> Выбрать несколько записей (Actions —> Select multiple records).

  3. В реестре раздела выберите несколько контрагентов.
  4. Выберите отчет Информация контрагента (Account Info) в выпадающем меню кнопки Печать (Print) панели инструментов раздела.

Отчет Информация контрагента (Account Info) по нескольким записям имеет вид, который представлен на рисунке ниже.