Дополнительные действия
AZykov (обсуждение | вклад) Нет описания правки |
AZykov (обсуждение | вклад) |
||
Строка 15: | Строка 15: | ||
#Создать контрол необходимого для отчёта типа. '''Выбрать controlMode = Custom.''' Настроить у контрола dataSource с необходимым способом получения данных, фильтрами и обработками. Удобнее всего начать с контрола с типом table, даже если целевой отчёт не должен быть таблицей. В таблице удобно протестировать создаваемый отчет, его фильтры и обработки. Уже после тестирования можно создать новый контрол другого типа и перенести все настройки в него | #Создать контрол необходимого для отчёта типа. '''Выбрать controlMode = Custom.''' Настроить у контрола dataSource с необходимым способом получения данных, фильтрами и обработками. Удобнее всего начать с контрола с типом table, даже если целевой отчёт не должен быть таблицей. В таблице удобно протестировать создаваемый отчет, его фильтры и обработки. Уже после тестирования можно создать новый контрол другого типа и перенести все настройки в него | ||
#Произвести мелкие настройки контрола, например разрешить или запретить сортировку и изменение состава колонок. Этот этап в целом является опциональным, перечень параметров, доступных для настройки можно найти в [[Отображение данных. Таблицы и карточки#Табличный контрол|статье по контролам]]. Обращаем внимание, что особые настройки контрола становятся доступными после сохранения контрола с определенным типом. Тип контрола после сохранения изменять нельзя. | #Произвести мелкие настройки контрола, например разрешить или запретить сортировку и изменение состава колонок. Этот этап в целом является опциональным, перечень параметров, доступных для настройки можно найти в [[Отображение данных. Таблицы и карточки#Табличный контрол|статье по контролам]]. Обращаем внимание, что особые настройки контрола становятся доступными после сохранения контрола с определенным типом. Тип контрола после сохранения изменять нельзя. | ||
В общем виде любой сложный отчёт состоит из двух частей: | В общем виде любой сложный отчёт состоит из двух частей: | ||
Строка 23: | Строка 22: | ||
Для простых отчётов, сервис может отсутствовать, например если данные для отчёта получаются напрямую из объектов опредленного класса и не требуется какие-либо сложные операции. | Для простых отчётов, сервис может отсутствовать, например если данные для отчёта получаются напрямую из объектов опредленного класса и не требуется какие-либо сложные операции. | ||
= Пример вывода данных из сервиса в контрол = | |||
=== Настройки контрола === | |||
{| class="wikitable" | |||
!Свойство | |||
!Значение | |||
!Комментарий | |||
|- | |||
|controlKind | |||
|table | |||
|Используется тип контрола Таблица как стандартный способ вывода отчетов | |||
|- | |||
|controlMode | |||
|custom | |||
|Режим custom означает, что контрол не привязан к конкретному классу и использует собственные настройки для отображения. | |||
|- | |||
|dataSource | |||
|<syntaxhighlight lang="json"> | |||
{ | |||
"action": { | |||
"method": "Control_getData", | |||
"request": { | |||
"parameters": {} | |||
}, | |||
"responsePath": "", | |||
"service": "creomate_tutorial.Server2Service" | |||
}, | |||
"kind": "action" | |||
} | |||
</syntaxhighlight> | |||
|Универсальный источник данных, получающий данные из сервиса Server2Service. Отдельного внимания заслуживает пустое значение в responsePath. Это означает, что данные из сервиса передаются не обёрнутые в какой-либо объект. | |||
|- | |||
|allowExport | |||
|True | |||
|Данная настройка разрешает экспорт данных пользователем в Excel, CSV и JSON. Для табличных отчётов полезно оставлять включенной | |||
|- | |||
|showToolbar | |||
|True | |||
|Включает отображение панели инструментов с полем поиска и кнопками экспорта | |||
|- | |||
|allowShowCard | |||
|False | |||
|Данная настройка запрещает открытие карточек по ссылкам | |||
|- | |||
|allowColumnChoose | |||
|False | |||
|Данная настройка разрешает произвольный выбор колонки. Эта настройка остаётся на усмотрение разработчика | |||
|- | |||
|allowColumnReorder | |||
|True | |||
|Данная настройка разрешает изменение порядка колонок в контроле. Эта настройка остаётся на усмотрение разработчика | |||
|- | |||
|allowColumnResize | |||
|True | |||
|Настройка разрешает изменение ширины колонок | |||
|- | |||
|allowSearchPanel | |||
|True | |||
|Включает отображение поля поиска в панели инструментов | |||
|- | |||
|allowRowNumbers | |||
|True | |||
|Настройка включает отображение номеров строк | |||
|- | |||
|pageSize | |||
|20 | |||
|Настройка задаёт ограничение по количеству строк на одной "странице" отчёта | |||
|- | |||
|customColumns | |||
|<syntaxhighlight lang="json"> | |||
[ | |||
{ | |||
"caption": "Имя", | |||
"propertyName": "name" | |||
}, | |||
{ | |||
"caption": "valuex", | |||
"propertyName": "valuex" | |||
}, | |||
{ | |||
"caption": "Идентификатор", | |||
"propertyName": "id" | |||
} | |||
] | |||
</syntaxhighlight> | |||
|JSON, описывающий колонки для отображения. В поле caption задаётся заголовок для отображения пользователю. В поле propertyName задается имя свойства элемента коллекции | |||
|- | |||
|wordWrap | |||
|True | |||
|Настройка разрешает перенос строк, если они не помещаются в ширину колонки | |||
|} | |||
Версия от 13:07, 12 марта 2025
Предыдущая статья курса: Работа с универсальным источником данных
Общая информация
В качестве отчётов, в рамках приложений на платформе Эра, выступают особым образом настроеные контролы. В платформе изначально предусмотрен достаточно исчерпывающий перечень видов контролов, которые закрывают подавляющее большинство задач по разработке отчёта. Полный список базовых видов контролов можно посмотреть в статье этого курса, посвещенной контролам.
Общий алгоритм разработки отчёта следующий:
- Определение источников данных для отчёта. Это могут быть данные объектов, перечислений, информация из внешней системы, константы и т.д.
- Определение логики построения отчёта и выбор способа сбора данных. На этом этапе необходимо понять, как из исходных данных собрать целевой отчёт и какой из инструментов платформы подойдет для этого лучше. Выбранный источник данных должен быть настроен в соответствующем контроле с помощью универсального источника данных, рассмотренного в предыдущей статье. Возможные варианты:
- Получение данных классов напрямую из хранилища. Фильтрация, группировка и преобразование данных выполняется на уровне dataSource
- Разработка сервиса, подготавливающего данные для отчёта
- Использование внешнего источника данных (URL)
- Если на шаге 2 был выбран сервис, то данный сервис необходимо разработать и протестировать
- Создать контрол необходимого для отчёта типа. Выбрать controlMode = Custom. Настроить у контрола dataSource с необходимым способом получения данных, фильтрами и обработками. Удобнее всего начать с контрола с типом table, даже если целевой отчёт не должен быть таблицей. В таблице удобно протестировать создаваемый отчет, его фильтры и обработки. Уже после тестирования можно создать новый контрол другого типа и перенести все настройки в него
- Произвести мелкие настройки контрола, например разрешить или запретить сортировку и изменение состава колонок. Этот этап в целом является опциональным, перечень параметров, доступных для настройки можно найти в статье по контролам. Обращаем внимание, что особые настройки контрола становятся доступными после сохранения контрола с определенным типом. Тип контрола после сохранения изменять нельзя.
В общем виде любой сложный отчёт состоит из двух частей:
- Сервис, который принимает Invocation с параметрами, реализует логику построения отчёта, совершает внутренние и внешние вызовы для сбора данных, подготавливает данные в структуру JSON и возвращает их.
- Контрол необходимого для отчёта типа, с набором необходимых фильтров, набором настроек интерфейса, облегчающих работу с отчётом, а также dataSource, сконфигурированный для работы с созданным сервисом.
Для простых отчётов, сервис может отсутствовать, например если данные для отчёта получаются напрямую из объектов опредленного класса и не требуется какие-либо сложные операции.
Пример вывода данных из сервиса в контрол
Настройки контрола
Свойство | Значение | Комментарий |
---|---|---|
controlKind | table | Используется тип контрола Таблица как стандартный способ вывода отчетов |
controlMode | custom | Режим custom означает, что контрол не привязан к конкретному классу и использует собственные настройки для отображения. |
dataSource | {
"action": {
"method": "Control_getData",
"request": {
"parameters": {}
},
"responsePath": "",
"service": "creomate_tutorial.Server2Service"
},
"kind": "action"
}
|
Универсальный источник данных, получающий данные из сервиса Server2Service. Отдельного внимания заслуживает пустое значение в responsePath. Это означает, что данные из сервиса передаются не обёрнутые в какой-либо объект. |
allowExport | True | Данная настройка разрешает экспорт данных пользователем в Excel, CSV и JSON. Для табличных отчётов полезно оставлять включенной |
showToolbar | True | Включает отображение панели инструментов с полем поиска и кнопками экспорта |
allowShowCard | False | Данная настройка запрещает открытие карточек по ссылкам |
allowColumnChoose | False | Данная настройка разрешает произвольный выбор колонки. Эта настройка остаётся на усмотрение разработчика |
allowColumnReorder | True | Данная настройка разрешает изменение порядка колонок в контроле. Эта настройка остаётся на усмотрение разработчика |
allowColumnResize | True | Настройка разрешает изменение ширины колонок |
allowSearchPanel | True | Включает отображение поля поиска в панели инструментов |
allowRowNumbers | True | Настройка включает отображение номеров строк |
pageSize | 20 | Настройка задаёт ограничение по количеству строк на одной "странице" отчёта |
customColumns | [
{
"caption": "Имя",
"propertyName": "name"
},
{
"caption": "valuex",
"propertyName": "valuex"
},
{
"caption": "Идентификатор",
"propertyName": "id"
}
]
|
JSON, описывающий колонки для отображения. В поле caption задаётся заголовок для отображения пользователю. В поле propertyName задается имя свойства элемента коллекции |
wordWrap | True | Настройка разрешает перенос строк, если они не помещаются в ширину колонки |
Следующая статья курса: Задание 11. Разработка кастомного отчета
Предыдущая статья курса: Работа с универсальным источником данных