Будет ли фильтровать префильтр, заблокированный для пользователя на изменение?
Да, будет если его значение вычисляется кодом или установлено по умолчанию.
Это дает возможность использовать префильтр для жесткого разделения доступа к строкам — делается заблокированный для пользователя префильтр, в котором вычисляется относящееся к нему значение.
Например, если мы хотим для менеджера показывать только его строки, а для остальных все:
// 10 — роль «менеджер»
=: if(condition: $#nr = 10; then: $#nu; else: "")
$#nr
— list
из ролей пользователя, проверяем, есть ли в нем «менеджер».
$#nu
— id
текущего пользователя.
Будет ли фильтровать префильтр, скрытый для пользователя?
Да, если поле префильтра включено в web или api и скрыто для пользователя — оно все равно будет применятся.
Это дает возможность делать комплексные префильтры. Например мы хотим, что бы в поле префильтра выбирался пользователь
, а фильрация происходила по компании
к которой он относится:
// Код в поле fl_teh_prefilter
= : if(condition: #fl_user = ""; then: $#lc; else: $calc)
calc: selectList(table: 'table_users'; field: 'id'; where: 'company' = $company)
company: select(table: 'table_users'; field: 'company'; where: 'id' = #fl_user)
В этом случае мы префильтр fl_user
не привязываем к строчной части, а привязываем скрытый fl_teh_prefilter
.
Для большей безопасности отключайте ему редактирование тоже.
Будет ли работать предзаполнение поля по префильтру если он скрыт?
Да, ключевым фактором здесь является привязка и доступ на редактирование при добавлении.
Если необходимо заблокировать поле от ошибки пальцев, то можно заблокировать его через форматирование:
f1=: setFormat(condition: #id = ""; block: true)
В этом случае поле будет заблокировано, но автоподстановка значения будет работать.
Будет ли работать префильтр если он выключен в web?
Нет. В этом случае префильтр отключается.