Показать сообщение отдельно
Старый 29.07.2014, 17:02   #1  
Ярослав Щекин is offline
Ярослав Щекин
Участник
 
78 / 174 (6) ++++++
Регистрация: 16.03.2009
Корректное наложение filter by selection
Добрый день.
Сразу скажу, что нижеописанное относится к Axapta 3.0.

Как известно, при использовании "filter by selection" (правый клик по полю на grid'е -> фильтр) текущее значение поля интерпретируется как регулярное выражение, поэтому, если там есть специальные символы (*, " и т.п.), фильтр работает неожиданно/неправильно (т.к. выбранное значение обычно не зафильтровывается).

Я вот попытался исправить это добавлением такого кода в SysSetupFormRun.task:

Код:
//ysch: Корректное наложение 'filter by selection':
if (_p1 == #taskShortCutMenuFilter) {
   formDataSource = this.objectSet();
   if (formDataSource && formDataSource.queryRun()) {
      formControl = this.selectedControl();
      if (classidget(formControl) == classnum(formStringControl)) {
         formStringControl = formControl;
         if (formStringControl.dataField()) {
            formDataSource.filter(formStringControl.dataField(), queryvalue(formStringControl.valueStr()));
            return 1;
            }
         }
      }
   }
Как Вы думаете, будут ли от этого какие-нибудь побочные эффекты?

Последний раз редактировалось Ярослав Щекин; 29.07.2014 в 17:20.