AXForum  
Вернуться   AXForum > Microsoft Dynamics AX > DAX: Программирование
All
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 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.
Старый 29.07.2014, 17:55   #2  
Logger is offline
Logger
Участник
Лучший по профессии 2015
Лучший по профессии 2014
 
3,952 / 3230 (115) ++++++++++
Регистрация: 12.10.2004
Адрес: Москва
Записей в блоге: 2
Я бы проверил корректность выбора датасорса на формах где их несколько.
Ваша вариант похоже заточен на формочки с одним датасорсом.
Старый 29.07.2014, 20:25   #3  
Ярослав Щекин is offline
Ярослав Щекин
Участник
 
78 / 174 (6) ++++++
Регистрация: 16.03.2009
Да вроде бы работает и на формах с несколькими datasource... Буду ещё тестировать.
Старый 01.08.2014, 09:36   #4  
Ярослав Щекин is offline
Ярослав Щекин
Участник
 
78 / 174 (6) ++++++
Регистрация: 16.03.2009
В процессе тестирования выяснилось, что не работает с полями из Datasource-ов с linkType == InnerJoin, поэтому теперь тестируем такой вариант:

Код:
if (_p1 == #taskShortCutMenuFilter) {
   formControl = this.selectedControl();
   if (formControl && classidget(formControl) == classnum(formStringControl)) {
      formStringControl = formControl;
      if (formStringControl.dataField()) {
         for (f = 1; f <= this.dataSourceCount(); f++) {
            formDataSource = this.dataSource(f);
            if (formDataSource.id() == formStringControl.dataSource()) {
               formDataSource.filter(formStringControl.dataField(), queryvalue(formStringControl.valueStr()));
               joinSourceId = formDataSource.joinSource();
               if (joinSourceId && formDataSource.linkType() == FormLinkType::InnerJoin) {
                  for (i = 1; i <= this.dataSourceCount(); i++) {
                      formDataSource = this.dataSource(i);
                      if (formDataSource.id() == joinSourceId) {
                         formDataSource.research();
                         break;
                         }
                      }
                  }
               return 1;
               }
            }
         }
      }
   }
Старый 01.08.2014, 09:59   #5  
michel1971 is offline
michel1971
Участник
 
78 / 78 (3) ++++
Регистрация: 14.01.2011
Цитата:
Сообщение от Ярослав Щекин Посмотреть сообщение
не работает с полями из Datasource-ов с linkType == InnerJoin[/code]
Еще попробуйте отфильтроваться на лукапе. Форма лукапа закрывается после фильтра?
Старый 01.08.2014, 10:35   #6  
Ярослав Щекин is offline
Ярослав Щекин
Участник
 
78 / 174 (6) ++++++
Регистрация: 16.03.2009
Цитата:
Сообщение от michel1971 Посмотреть сообщение
Еще попробуйте отфильтроваться на лукапе. Форма лукапа закрывается после фильтра?
Да, закрывается.
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
atinkerersnotebook: Use Filter By Selection To Quickly Find Common Records Blog bot DAX Blogs 0 12.03.2014 14:11
atinkerersnotebook: Quickly Filter Your Data Through The Type To Filter Box Blog bot DAX Blogs 0 10.03.2014 14:11
axaptapedia: Filter-by-Grid Blog bot DAX Blogs 2 30.05.2012 13:39
epblog: Persisting Filter conditions in EP Grid Blog bot DAX Blogs 0 29.08.2009 11:05
Solutions Monkey: Persisting Filter conditions in EP Grid Blog bot DAX Blogs 0 29.08.2009 04:49

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 22:10.