3.3.6. Макросы выборок¶
3.3.6.1. Макросы фильтрации и условия Alias¶
&DefUniFltMacros | Макрос универсального (серверного) фильтра выборки |
&DefUniFltMacrosRO | Условие, дописываемое к условию макроса &DefUniFltMacros |
&ServFilterAliasMacros | Макрос условия Alias |
&LoadData# | Используется, если установлено свойство выборки "Не загружать данные при первом открытии" |
Эти макросы используются для "оборачивания" исходного запроса данных следующим образом:
select ServFilterAliasMacros.*
from ('исходный запрос') &ServFilterAliasMacros
where &DefUniFltMacros and &DefUniFltMacrosRO
Оборачивание происходит на применении фильтра. Вид обертки может меняться: если в исходном запросе уже имеются некоторые из указанных макросов, или соответствующие им значения пусты, то эти макросы к запросу не приписываются.
Условия добавления макросов:
&ServFilterAliasMacros - добавляется с оборотом запроса только в случае, если выполнены следующие условия:
- значение макроса непусто (недопустим запрос *select .* from ... * с пустотой перед '.');
- в исходном запросе еще не встречается ни один из трех указанных макросов (недопустимо использование макросов фильтрации внутри обертки Alias).
&DefUniFltMacros и &DefUniFltMacrosRO независимо дописываются, если:
- они ещё не встретились в исходном запросе;
- соответствующие им значения непусты или запрос начинается с макроса 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. Смена макросов и переоткрытие выборки¶
Во избежание лишних переоткрытий датасета, решено поддерживать следующую логику при смене значений макросов:
- при добавлении нового макроса, или смене значения макроса, не входящего в GST, ничего не происходит.
- при смене значения макроса, входящего в текст запроса, выполняется переоткрытие выборки (если не установлено свойство "Не закрывать датасет при обновлении макроса").