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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 06.07.2007, 09:12   #1  
egorych is offline
egorych
Участник
Самостоятельные клиенты AX
Oracle
 
761 / 154 (7) ++++++
Регистрация: 09.11.2006
Адрес: Краснодарский край
? Сброс фильтра в KR3 по Ctrl-N
Всем известно поведение клиента KR3, когда при добавлении новой записи сбрасывается пользовательский фильтр на форме.
Вопрос - это как-то можно победить или такое поведение зашито в exe ?
Старый 06.07.2007, 10:48   #2  
AndyD is offline
AndyD
Участник
КОРУС Консалтинг
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
 
2,560 / 2479 (88) +++++++++
Регистрация: 20.08.2005
В KR2 то-же самое.
Могу предложить такое решение.
В декларацию класса SysSetupFormRun добавить флаг
X++:
public class SysSetupFormRun extends FormRun
{
    boolean newRecordMode;
#if.never
    #define.CurrentVersion(1)
    #localmacro.CurrentList
    #endmacro
#endif
}
В методе task() этого класса вместо вызова super() вставить такой код
X++:
    ...
    if (_p1 == 260/* #taskNew*/)
        newRecordMode = true;
    if (newRecordMode && _p1 == 2840)
        ret = 1;
    else
        ret = super(_p1);
    if (_p1 == 260 /* #taskNew*/)
        newRecordMode = false;
    ...
Не совсем ясно, зачем был сделан сброс фильтра, так что советую сначала провести тщательное тестирование
__________________
Axapta v.3.0 sp5 kr2
За это сообщение автора поблагодарили: savel (1), Logger (2).
Старый 06.07.2007, 10:53   #3  
gl00mie is offline
gl00mie
Участник
MCBMSS
Most Valuable Professional
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,684 / 5798 (201) ++++++++++
Регистрация: 28.11.2005
Адрес: Москва
Записей в блоге: 3
Цитата:
Сообщение от egorych Посмотреть сообщение
Всем известно поведение клиента KR3, когда при добавлении новой записи сбрасывается пользовательский фильтр на форме.
Вопрос - это как-то можно победить или такое поведение зашито в exe ?
Цитата:
Сообщение от AndyD Посмотреть сообщение
В KR2 то-же самое.
К слову, заметил интересную особенность: если новую запись добавлять не по Ctrl-N, а по <стрелка вниз>, то фильтр не сбрасывается и даже используется для заполнения полей новой записи - во всяком случае, в KR2.
Старый 06.07.2007, 10:58   #4  
AndyD is offline
AndyD
Участник
КОРУС Консалтинг
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
 
2,560 / 2479 (88) +++++++++
Регистрация: 20.08.2005
Угу.
По стрелке вниз другой taskId приходит (1282), соответственно, и обработка другая происходит.
__________________
Axapta v.3.0 sp5 kr2
Старый 06.07.2007, 11:12   #5  
gl00mie is offline
gl00mie
Участник
MCBMSS
Most Valuable Professional
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,684 / 5798 (201) ++++++++++
Регистрация: 28.11.2005
Адрес: Москва
Записей в блоге: 3
Цитата:
Сообщение от AndyD Посмотреть сообщение
Угу. По стрелке вниз другой taskId приходит (1282), соответственно, и обработка другая происходит.
Ну, может, тогда так и задумано? В любом случае, если накладывается фильтр (а не просто производится поиск), то записи, удовлетворяющие фильтру, есть, и тогда ничто не мешает нажать Ctrl-End + стрелка_вниз, чтобы избежать сброса фильтра.

PS. Судя по моим закладкам, все это уже обсуждалось, выводы сделаны были те же
сброс фильтров на формах в KR3

Последний раз редактировалось gl00mie; 06.07.2007 в 11:17.
Старый 06.07.2007, 11:22   #6  
AndyD is offline
AndyD
Участник
КОРУС Консалтинг
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
 
2,560 / 2479 (88) +++++++++
Регистрация: 20.08.2005
Ну, я не имею доступ на партнерские ресурсы, но здесь и ниже Андре пишет, что MBS обещала это исправить, так что, скорее всего, бага

Кстати, а чем поиск от фильтра отличается?
__________________
Axapta v.3.0 sp5 kr2
Старый 06.07.2007, 11:49   #7  
gl00mie is offline
gl00mie
Участник
MCBMSS
Most Valuable Professional
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,684 / 5798 (201) ++++++++++
Регистрация: 28.11.2005
Адрес: Москва
Записей в блоге: 3
Цитата:
Сообщение от AndyD Посмотреть сообщение
Ну, я не имею доступ на партнерские ресурсы, но здесь и ниже Андре пишет, что MBS обещала это исправить, так что, скорее всего, бага
Мда, к сожалению, в списке выпущенных hot fix'ов ничего такого пока не упоминается
Цитата:
Сообщение от AndyD Посмотреть сообщение
Кстати, а чем поиск от фильтра отличается?
Основная разница между поиском ("Найти" в контекстном меню либо Ctrl-F) и фильтром в том, что условия поиска не учитываются (сбрасываются) при последующем наложении фильтра, а условия фильтрации, если потом задать фильтр еще по значению какого-то поля, остаются и влияют на результат.
Я, может, не совссем точно выразился на счет того, что в случае с фильтром всегда будут присутствовать соответствующие записи Конечно, если использовать "фильтрацию записей" (Ctrl-F3), то тоже может ничего не найтись - просто я привык фильтровать через контекстное меню по отдельным полям...
Вложения
Тип файла: rar ax3-hot-fixes-20070706.rar (24.6 Кб, 121 просмотров)

Последний раз редактировалось gl00mie; 06.07.2007 в 11:53.
Старый 06.07.2007, 12:48   #8  
AndyD is offline
AndyD
Участник
КОРУС Консалтинг
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
 
2,560 / 2479 (88) +++++++++
Регистрация: 20.08.2005
Ну, это в кернеле надо править, а sp6, к примеру, содержит в себе kr3, который от ошибки не избавлен. Так что надо kr4 ждать
А по поводу поиска - так он тоже в конечном счете приводит к наложению фильтра на датасоурс. Так что разделять их не стоит. Имхо.
__________________
Axapta v.3.0 sp5 kr2
Старый 26.07.2007, 14:42   #9  
Logger is offline
Logger
Участник
Лучший по профессии 2015
Лучший по профессии 2014
 
3,940 / 3229 (115) ++++++++++
Регистрация: 12.10.2004
Адрес: Москва
Записей в блоге: 2
Talking
Цитата:
Сообщение от AndyD Посмотреть сообщение
Не совсем ясно, зачем был сделан сброс фильтра, так что советую сначала провести тщательное тестирование
в каком то из роллапов было указано на глюк когда при создании записи на форме с установленным фильтром могли сгенериться одинаковые LineNum.
Типа роллап это исправил.

Возможно эта багофича лечила именно этот глюк. Перед созданием записи сбрасывала фильтр, чтобы гарантировано не мог воспроизвестись баг с одинаковыми LineNum
За это сообщение автора поблагодарили: gl00mie (3).
Старый 27.07.2007, 10:08   #10  
gl00mie is offline
gl00mie
Участник
MCBMSS
Most Valuable Professional
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,684 / 5798 (201) ++++++++++
Регистрация: 28.11.2005
Адрес: Москва
Записей в блоге: 3
Цитата:
Сообщение от Logger Посмотреть сообщение
в каком то из роллапов было указано на глюк когда при создании записи на форме с установленным фильтром могли сгенериться одинаковые LineNum. Типа роллап это исправил. Возможно эта багофича лечила именно этот глюк. Перед созданием записи сбрасывала фильтр, чтобы гарантировано не мог воспроизвестись баг с одинаковыми LineNum
Точно, это как раз было в KR2 fixlist:
Цитата:
Request No. 13800
KB 912788
Short Desc Filtering on any form causes duplicate linenums
Problem On the form where lines are numbered it is possible to create duplicate values in the line number field. These duplicate line numbers prevent posting to the journal.
Cause This problem may occur when the journal form is filtered by line number.
Solution Remove the filter when adding a new line between existing lines on the sales order.
Так что по ходу ждать исправления такого поведения бесполезно...
Вместо того, чтобы сделать уникальные индексы [JournalId, LineNum] на строках журналов, сделали сброс пользовательского фильтра везде

Последний раз редактировалось gl00mie; 27.07.2007 в 10:14.
Старый 27.07.2007, 12:49   #11  
Logger is offline
Logger
Участник
Лучший по профессии 2015
Лучший по профессии 2014
 
3,940 / 3229 (115) ++++++++++
Регистрация: 12.10.2004
Адрес: Москва
Записей в блоге: 2
Лучше сделать так

X++:
    if (_p1 == 260/* #taskNew*/)
        SysSetupFormRun::GRD_NewRecordMode(this.hWnd(), true);
    if (_p1 == 2840 && SysSetupFormRun::GRD_NewRecordMode(this.hWnd()))
        ret = 1;
    else
        ret = super(_p1);
    if (_p1 == 260 /* #taskNew*/)
        SysSetupFormRun::GRD_NewRecordMode(this.hWnd(), false);
и еще добавить вот такой метод
X++:
  // pkoz 27.07.2007
static boolean GRD_NewRecordMode(int    _hwnd, boolean _parm = false)
{
    SysGlobalCache      SysGlobalCache = infolog.globalCache();
    boolean             ret;
    ;
    if (prmIsDefault(_parm)) // читаем
    {
        ret = SysGlobalCache.get(funcName(), _hWnd, false);
    }
    else
    {
        if (_parm)
        {
            SysGlobalCache.set(funcName(), _hWnd, _parm);
        }
        else
        {
            SysGlobalCache.remove(funcName(), _hWnd); // значение false не кладем
            // а просто чистим кеш - чтобы не флудить его ненужными значениями - все равно
            // hwnd почти всегда новый выделяется
        }
        ret = _parm;
    }
    return ret;
}
При таком подходе нет ошибок выполнения при фильтрации в лукапах.
За это сообщение автора поблагодарили: rumpleteazer (1), erudit (1), dn (3), raz (5), savel (1), Pustik (2), Bega (5), SIrina (1).
Старый 27.07.2007, 12:51   #12  
Logger is offline
Logger
Участник
Лучший по профессии 2015
Лучший по профессии 2014
 
3,940 / 3229 (115) ++++++++++
Регистрация: 12.10.2004
Адрес: Москва
Записей в блоге: 2
Цитата:
Сообщение от gl00mie Посмотреть сообщение
Точно, это как раз было в KR2 fixlist:
Так что по ходу ждать исправления такого поведения бесполезно...
Вместо того, чтобы сделать уникальные индексы [JournalId, LineNum] на строках журналов, сделали сброс пользовательского фильтра везде
Там проблема не только в индексе, а еще в том что новое значение, которое движок формы генерит автоматом - повторяется.
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
сброс фильтров на формах в KR3 Lazy_Tiger DAX: Администрирование 15 23.06.2010 13:42
staticsax: Restore(ctrl-F5) and access control (AllowEdit) problem Blog bot DAX Blogs 0 19.01.2009 20:05
Как автоматически открыть lookup после нажатия ctrl+n Dima_Dima DAX: Программирование 11 13.10.2008 14:41
Как запретить операцию CTRL+C на LookUp? Pomor DAX: Программирование 3 22.05.2006 23:26
Свой диалог фильтра Vadik DAX: Программирование 7 31.01.2003 19:20

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

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

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