Информация |
---|
|
Корневой элемент collection. Пространство имен: configuration |
Информация |
---|
icon | false |
---|
title | Краткое описание |
---|
|
Представления, используемые AF5, называются коллекциями. В отличие от обычных представлений реляционной БД, коллекции AF5 не хранятся в самой БД, а хранятся в конфигурационных файлах. |
Блок кода |
---|
language | xml |
---|
title | Структура XML |
---|
collapse | true |
---|
|
<collection name="{name}" idField="id" replace="runtime">
<prototype>
<![CDATA[SELECT
role.id,
role.id_type as typeId,
'<id>' as open_id_tag,
':' as separate,
'</>' as close_id_tag,
'<basedocid>' AS basedocid_1,
ss_module_org.Module,
role.fullname as fullname
FROM
so_role role
natural join so_unit
left join so_structureunit su on su.id = role.headorbranchoffice
::from-clause
WHERE
role.accessredirect is null
::where-clause]]>
</prototype>
<counting-prototype>
<![CDATA[SELECT
COUNT(*)
FROM (SELECT
role.id,
role.id_type as typeId,
'<id>' as self_1,
':' as self_2,
'</>' as close_tag,
'<basedocid>' AS basedocid_1,
ss_module_org.Module,
role.fullname as fullname
FROM
so_role role
natural join so_unit
left join so_structureunit su on su.id = role.headorbranchoffice
::from-clause
WHERE
role.accessredirect is null
::where-clause)]]>
</counting-prototype>
<filter name="MODULE">
<reference placeholder="from-clause">
<![CDATA[
join SS_ModuleOrg ss_module_org on ss_module_org.Organization = role.organization
join ss_module ss_module on ss_module_org.module = ss_module.id
join ss_moduletype ss_moduletype on ss_module.type = ss_moduletype.id and ss_moduletype.alias ='SO']]>
</reference>
<criteria placeholder="where-clause">
<![CDATA[
ss_module_org.Module = {0}
]]>
</criteria>
</filter>
<!-- Фильтр по колонке. Полное совпадение -->
<filter name="fullname">
<criteria placeholder="where-clause">
<![CDATA[
t.fullname = {0}
]]>
</criteria>
</filter>
<!-- Фильтр по колонке. Частичное совпадение -->
<filter name="fullname_partial">
<criteria placeholder="where-clause">
<![CDATA[
t.fullname ~* ('(^|\W)'||trim({0}))
]]>
</criteria>
</filter>
<!-- Поиск по представлению -->
<filter name="CQSEARCH">
<criteria placeholder="where-clause">
<![CDATA[
fullname ~* ('(^|\W)'||trim({0}))
]]>
</criteria>
</filter>
</collection> |
attributes
Параметры | Описание |
---|
name | Имя коллекции. Обязательный атрибут, каждая коллекция в системе должна иметь уникальное значение. |
replace | Определяет возможность «горячего» замещения конфигурации коллекции при загрузке обновленной конфигурации коллекции. runtime – разрешена, иначе – запрещена. |
idField | Колонка результирующей выборки SQL-запроса, значения из которой будут использованы в качестве идентификаторов записей. |
useClone | Флаг, если true, при отсутствии открытой транзакции новой перед вызовом открываться не будет, а при ее наличии произойдет ошибка. |
transactionCache | Флаг, enabled/disabled, включает/выключает кэширование результирующей выборки на период открытой транзакции |
prototype
Заготовка основного SQL-запроса Коллекции. Содержит опорные заглушки для фильтров (должны начинаться с двойного двоеточия и могут содержать только буквы, цифры и дефисы).

counting-prototype
Заготовка SQL-запроса, возвращающего количество записей, возвращаемых основным запросом. Также содержит опорные заглушки для фильтров.

filter
Фильтр. Параметризируемый фрагмент SQL, который вливается в заготовку и модифицирует условие выборки. Множественный.
Параметры | Описание |
---|
name | Имя фильтра. Обязательный атрибут, каждый фильтр в коллекции должен иметь уникальное значение. |
Примечание |
---|
Имя поля представления может быть произвольным, однако необходимо учитывать следующее: - Имя элемента фильтра в конфигурации коллекции может содержать только буквы латиницы, поэтому, если имя поле содержит какие-то символы не из этого множества, и для него необходимо явно задать фильтр, он не может быть привязан автоматически (поскольку у него не может быть имени, совпадающего с именем поля), и должен быть привязан через параметр filterName дополнительной конфигурации представления.
- Если имя поля содержит какие-то специальные символы, недопустимые для идентификатора SQL-стандартом (например, $) или является ключевым словом SQL (например, "value"), его необходимо брать в двойные кавычки в Sql-запросе, иначе произойдет ошибка при проверке синтаксиса запроса. Если по полю необходимо осуществлять сортировку, то необходимо в дополнительной конфигурации представления указать caseSensitiveFieldNames = true. Также с такими полями нельзя использовать генерируемые фильтры.
|
Если фильтр для соответствующего типа условия или главный фильтр не заданы, условие фильтрации будет сгенерировано. В большинстве случаев, когда не используются вычисляемые поля или оптимизации SQL –запросов, сгенерированные условия будут корректными и в конфигурации коллекции элементы фильтров допустимо полностью опускать.
Кроме стандартных фильтров, которые вызываются при поиске по полному совпадению (по равенству ключу), существуют фильтры частичного совпадения, которые вызываются при менее строгих условиях поиска. Фильтры частичного совпадения должны иметь имя в определенном формате, чтобы быть распознанными: <Имя основного фильтра> + <Суффикс фильтра частичного совпадения>.Фактическое условие фильтрации полностью определяется фрагментом или фрагментами SQL-кода, заданным (-ими) в конфигурационном файле коллекции. Поэтому необходимо соблюдение соглашения о непротиворечивости заданного типа фильтра и его фактического условия (т.е. фильтр по полному равенству содержит условие проверки именно на полное равенство и т.д.). Важно: если в конфигурации коллекции не определен основной фильтр, но определены фильтры частичного совпадения, они игнорируются.Если фильтр для соответствующего типа условия или главный фильтр не заданы, условие фильтрации будет сгенерировано. В большинстве случаев, когда не используются вычисляемые поля или оптимизации SQL –запросов, сгенерированные условия будут корректными и в конфигурации коллекции элементы фильтров допустимо полностью опускать.
Тип фильтра | Суффикс | Автоматически генерируемое условие | Комментарий |
---|
Полное равенство | Имя_поля = {0} | Используется при поиске по ключу во всех системных представлениях. | Строковое значение начинается со значения ключа | _partial | Имя_поля ~*
Название фильтра | Описание |
---|
<column_name> | Полное совпадение значения фильтра со значением данных Блок кода |
---|
| column_name = {0} |
|
<column_name>_partiral | Частичное совпадение значения фильтра со значением данных Блок кода |
---|
| column_name ~* ('(^|\W)'||{0}) |
|
Используется при поиске по ключу в некоторых системных представлениях._GE | Имя_поля >= Блок кода |
---|
| column_name >= {0} |
|
Используется при быстром поиске в пользовательских коллекциях. | Меньше | _L | Имя_поля < {0} | Используется при быстром поиске в пользовательских коллекциях. |
Примечание |
---|
Имя поля представления может быть произвольным, однако необходимо учитывать следующее: - Имя элемента фильтра в конфигурации коллекции может содержать только буквы латиницы, поэтому, если имя поле содержит какие-то символы не из этого множества, и для него необходимо явно задать фильтр, он не может быть привязан автоматически (поскольку у него не может быть имени, совпадающего с именем поля), и должен быть привязан через параметр filterName дополнительной конфигурации представления.
- Если имя поля содержит какие-то специальные символы, недопустимые для идентификатора SQL-стандартом (например, $) или является ключевым словом SQL (например, "value"), его необходимо брать в двойные кавычки в Sql-запросе, иначе произойдет ошибка при проверке синтаксиса запроса. Если по полю необходимо осуществлять сортировку, то необходимо в дополнительной конфигурации представления указать caseSensitiveFieldNames = true. Также с такими полями нельзя использовать генерируемые фильтры.
|
Некоторые фильтры конфигурации коллекции AF5 являются системными. К ним относятся фильтры:
MODULE (с сохранением регистра). <column_name>_L | Меньше
Блок кода |
---|
| column_name < {0} |
|
MODULE | Фильтр по идентификатору доменного объекта модуля. С помощью него отфильтровываются объекты, не относящиеся к модулю представления. Используется для представлений разных модулей она должна содержать фильтр MODULE, содержащий фрагмент SQL, ограничивающий выборку теми объектами, значение поля Module которых соответствует переданному системой. |
CQSEARCH |
(с сохранением регистра). | Фильтр по представлению. Содержит фрагмент SQL, который ищет информацию по совокупности полей. |
t.moduleType | column_name_1 ~* ('(^|\W)'||trim({0}))
OR |
|
t.moduleNamecolumn_name_2 ~* ('(^|\W)'||trim({0}))
OR |
|
t.complectcolumn_name_3 ~* ('(^|\W)'||trim({0})) |
|
reference
Содержит произвольный фрагмент sql, который может содержать заглушки для параметров запроса вида {натуральное число}
Параметры | Описание |
---|
placeholder | Идентификатор опорной заглушки, которая используется для определения места вставки фрагмента при применении фильтра. |
criteria
Содержит фрагмент sql, вычисляющий условие. Если используется, присоединяется к запросу с помощью ключевого слова AND. Может быть параметризован аналогично reference.
Параметры | Описание |
---|
placeholder | Идентификатор опорной заглушки, которая используется для определения места вставки фрагмента при применении фильтра. |
generator
Содержит идентификатор класса процедурной генерации результирующей выборки для коллекции. Если указан одновременно с prototype/counting-prototype/filter, последние игнорируются AF5.
Параметры | Описание |
---|
class-name | Идентификатор класса-генератора. Должен совпадать со значением атрибута name аннотации server-component класса, реализующего интерфейс CollectionDataGenerator. |