Цитата:
Сообщение от
Андрей К.
поскольку все необходимые пользователю фильтры были "вынесены" на форму, нужда в кнопке с воронкой отпала (в том числе и фильтр по выделенному полю)
Это вам сами пользователи сказали, или вы за них решили? А если появится продвинутый пользователь, который хорошо знаком с расширенным фильтром, который, может, знает про такие вещи, как
SysQueryRangeUtil, про возможность сохранения запросов и последующего их применения, то он будет вынужден мучиться с вашими кургузыми контролами на форме, которые дергают executeQuery() после каждого изменения, вместо того, чтобы дернуть его один раз, когда установлены все необходимые фильтры, сужающие выборку?
Цитата:
Сообщение от
Андрей К.
Точнее необходима защита от дурака

, чтоб пользователь не мог фильтровать как ему захочется, кроме как используя вынесенный на форму функционал фильтрации
По-моему, вы пытаетесь прикрыть, скажем так, кривоватую реализацию тех фильтров, которые вы вынесли в виде контролов на форму; обычно при корректной их реализации никакая "защита от дурака" не нужна. Корректная же реализация заключается в следующем:
- фильтры применяются на executeQuery() до super(), причем как к form_ds.query(), так и к form_qr.query() (он же form_ds.queryRun().query()), если последний существует (при самом первом вызове executeQuery() до super() соотв. QueryRun еще не инициализирован);
- при изменении значения фильтра дергается research(), а не executeQuery(), чтобы не слетали пользовательские фильтры по другим полям.
- если значение фильтра по полю задано, то удалить все другие фильтры по этому полю и потом сделать фильтр со статусом RangeStatus::Locked, если же не задано, задать SysQuery::valueUnlimited() со статусом RangeStatus::Open, чтобы пользователь мог использовать поле в расширенном фильтре.
- при необходимости реализовать в классе управления формой (или у вас вся логика обработки фильтров реализована прямо на форме?) интерфейс SysSaveable и сохранять значения фильтров между вызовами формы.
В общем ничего сложного, и, главное, никакой насущной необходимости отрубать возможность расширенной фильтрации.