- Создатель Васильев Антон, отредактировано 08.11.2022
Краткое описание
Представления, используемые AF5, называются коллекциями. В отличие от обычных представлений реляционной БД, коллекции AF5 не хранятся в самой БД, а хранятся в конфигурационных файлах.
<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-кода, заданным (-ими) в конфигурационном файле коллекции. Поэтому необходимо соблюдение соглашения о непротиворечивости заданного типа фильтра и его фактического условия (т.е. фильтр по полному равенству содержит условие проверки именно на полное равенство и т.д.). Важно: если в конфигурации коллекции не определен основной фильтр, но определены фильтры частичного совпадения, они игнорируются.
Название фильтра | Описание |
---|---|
<column_name> | Полное совпадение значения фильтра со значением данных Пример column_name = {0} |
<column_name>_partiral | Частичное совпадение значения фильтра со значением данных Пример column_name ~* ('(^|\W)'||{0}) |
<column_name>_GE | Больше или равно Пример column_name >= {0} |
<column_name>_L | Меньше Пример column_name < {0} |
MODULE | Фильтр по идентификатору доменного объекта модуля. С помощью него отфильтровываются объекты, не относящиеся к модулю представления. Используется для представлений разных модулей она должна содержать фильтр MODULE, содержащий фрагмент SQL, ограничивающий выборку теми объектами, значение поля Module которых соответствует переданному системой. |
CQSEARCH | Фильтр по представлению. Содержит фрагмент SQL, который ищет информацию по совокупности полей. Пример column_name_1 ~* ('(^|\W)'||trim({0})) OR column_name_2 ~* ('(^|\W)'||trim({0})) OR column_name_3 ~* ('(^|\W)'||trim({0})) Используется совместно с билдером: UiBuilderCQSearch и BuilderDominoViewCQSearch |
reference
Содержит произвольный фрагмент sql, который может содержать заглушки для параметров запроса вида {натуральное число}
Параметры | Описание |
---|---|
placeholder | Идентификатор опорной заглушки, которая используется для определения места вставки фрагмента при применении фильтра. |
criteria
Содержит фрагмент sql, вычисляющий условие. Если используется, присоединяется к запросу с помощью ключевого слова AND. Может быть параметризован аналогично reference.
Параметры | Описание |
---|---|
placeholder | Идентификатор опорной заглушки, которая используется для определения места вставки фрагмента при применении фильтра. |
generator
Содержит идентификатор класса процедурной генерации результирующей выборки для коллекции. Если указан одновременно с prototype/counting-prototype/filter, последние игнорируются AF5.
Параметры | Описание |
---|---|
class-name | Идентификатор класса-генератора. Должен совпадать со значением атрибута name аннотации server-component класса, реализующего интерфейс CollectionDataGenerator. |
Статус | ГОТОВО |
---|---|
Комментарий |
Теги и атрибуты: