3.3.6. Макросы выборок

3.3.6.1. Макросы фильтрации и условия Alias

&DefUniFltMacros Макрос универсального (серверного) фильтра выборки
&DefUniFltMacrosRO Условие, дописываемое к условию макроса &DefUniFltMacros
&ServFilterAliasMacros Макрос условия Alias
&LoadData# Используется, если установлено свойство выборки "Не загружать данные при первом открытии"

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

select ServFilterAliasMacros.*
from ('исходный запрос') &ServFilterAliasMacros
where &DefUniFltMacros and &DefUniFltMacrosRO

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

Условия добавления макросов:

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

  1. значение макроса непусто (недопустим запрос *select .* from ... * с пустотой перед '.');
  2. в исходном запросе еще не встречается ни один из трех указанных макросов (недопустимо использование макросов фильтрации внутри обертки Alias).

&DefUniFltMacros и &DefUniFltMacrosRO независимо дописываются, если:

  1. они ещё не встретились в исходном запросе;
  2. соответствующие им значения непусты или запрос начинается с макроса Alias.

Примечание:

&ServFilterAliasMacros заполняется (может быть прописан в запросе вручную) только при активных операциях универсального фильтра.

Об использовании макросов фильтрации и операций серверного фильтра см. в статье: http://wiki.gs.local/index.php/Фильтрация_серверая#Паскаль-события_фильтрации>

3.3.6.2. Макросы сортировки:

&SortOrder# Макрос сортировки

Макрос сортировки, содержащий накладываемые фильтрами значения. Подробнее см. в статье: http://wiki.gs.local/index.php/Сортировка_серверная

3.3.6.3. Свойства выборки, отключающие применение макросов фильтрации и сортировки:

ApplyServFilterMacros Свойство отвечает за наложение макросов фильтрации &DefUniFltMacros и &DefUniFltMacrosRO. По умолчанию включено - значения макросов накладываются при запросе данных. Если свойство выключить, значения макросов все равно соответствуют настройкам фильтров, однако на формирование запроса не влияют.
ApplyServSortOrderMacros Аналогичное свойство, отвечающее за применение макроса сортировки &SortOrder#.

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

3.3.6.4. Смена макросов и переоткрытие выборки

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

  1. при добавлении нового макроса, или смене значения макроса, не входящего в GST, ничего не происходит.
  2. при смене значения макроса, входящего в текст запроса, выполняется переоткрытие выборки (если не установлено свойство "Не закрывать датасет при обновлении макроса").