Дерево страниц
Skip to end of metadata
Go to start of metadata
Корневой элемент collection.  Пространство имен: configuration

Краткое описание

Представления, используемые AF5, называются коллекциями. В отличие от обычных представлений реляционной БД, коллекции AF5 не хранятся в самой БД, а хранятся в конфигурационных файлах.

Структура XML
<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

Имя фильтра. Обязательный атрибут, каждый фильтр в коллекции должен иметь уникальное значение.

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

  1. Имя элемента фильтра в конфигурации коллекции может содержать только буквы латиницы, поэтому, если имя поле содержит какие-то символы не из этого множества, и для него необходимо явно задать фильтр, он не может быть привязан автоматически (поскольку у него не может быть имени, совпадающего с именем поля), и должен быть привязан через параметр filterName дополнительной конфигурации представления.
  2. Если имя поля содержит какие-то специальные символы, недопустимые для идентификатора 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.
Статус

ГОТОВО

Комментарий

Теги и атрибуты: