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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 04.10.2010, 11:58   #1  
tricky is offline
tricky
Участник
 
140 / 64 (3) ++++
Регистрация: 03.05.2005
Адрес: Гуково
Универсальный запоминатель пользовательских настроек DataSource.
Уважаемые коллеги, представляю вашему вниманию класс, позволяющий автоматически запоминать пользовательские настройки запроса (QueryRun) формы при ее закрытии, и последующем их автоматическом восстановлении при следующем запуске формы. Данные сохраняются в разрезе пользователей и компаний.

По своей сути, является совершенно бестолковой вещью, т.к. существующий стандартный функционал (Ctrl+F3), позволяет сохранять и восстанавливать любые настройки в любое время. Однако, встречаются пользователи, которым бы хотелось пользоваться столь замечательной возможностью, но при этом не утруждать себя лишним клацаньем мышки )).

Пользоваться очень просто.
  • В ClassDeclaration() формы объявляем переменную
    X++:
        DEV_SaveableQueryRun    dev_SaveableQueryRun;
  • Где-нибудь до запуска формы, например в методе init(), создаем экземпляр класса:
    X++:
        dev_SaveableQueryRun = DEV_SaveableQueryRun::construct(this);
  • После super() в методе run() вставляем:
    X++:
        dev_SaveableQueryRun.formRunPost();
  • Перед super() в методе close() вставляем:
    X++:
        dev_SaveableQueryRun.formClosePre();
Собственно, и все.

Кода и логики в классе зашито минимум - всем давно известный функционал xSysLastValue, но для не сталкивавшихся с ним, может быть интересен для рассмотрения.

Класс во вложении. Подходит как для Axapta 3.0, так и для AX2009 (для четверки не пробовал, но, думаю, проблем не будет).

Спасибо за внимание .
Вложения
Тип файла: xpo Class_DEV_SaveableQueryRun.xpo (9.1 Кб, 335 просмотров)

Последний раз редактировалось mazzy; 04.10.2010 в 13:05. Причина: добавил слово "автоматически" в описание.
За это сообщение автора поблагодарили: lev (2).
Старый 04.10.2010, 12:39   #2  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Цитата:
Сообщение от tricky Посмотреть сообщение
Кода и логики в классе зашито минимум - всем давно известный функционал xSysLastValue, но для не сталкивавшихся с ним, может быть интересен для рассмотрения.
А чем отличается от xSysLastValue?
__________________
полезное на axForum, github, vk, coub.
Старый 04.10.2010, 12:43   #3  
tricky is offline
tricky
Участник
 
140 / 64 (3) ++++
Регистрация: 03.05.2005
Адрес: Гуково
Цитата:
Сообщение от mazzy Посмотреть сообщение
А чем отличается от xSysLastValue?
Вероятно, я не совсем корректно выразился. В классе используется функционал xSysLastValue.
Старый 04.10.2010, 12:56   #4  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Цитата:
Сообщение от tricky Посмотреть сообщение
Вероятно, я не совсем корректно выразился. В классе используется функционал xSysLastValue.
да, я понял. а чем ваш отличается от стандартного? что расширяет? какие преимущества дает?
__________________
полезное на axForum, github, vk, coub.
Старый 04.10.2010, 13:00   #5  
lev is offline
lev
Ищущий знания...
Аватар для lev
Oracle
MCBMSS
Axapta Retail User
 
1,723 / 491 (20) +++++++
Регистрация: 18.01.2005
Адрес: Москва
Цитата:
Сообщение от mazzy Посмотреть сообщение
да, я понял. а чем ваш отличается от стандартного? что расширяет? какие преимущества дает?
просто сделал свою обертку этого класса видимо, наверно tricky так удобнее
__________________
"Страх перед возможностью ошибки не должен отвращать нас от поисков истины." (с)
С Уважением,
Елизаров Артем
За это сообщение автора поблагодарили: tricky (1).
Старый 04.10.2010, 13:03   #6  
tricky is offline
tricky
Участник
 
140 / 64 (3) ++++
Регистрация: 03.05.2005
Адрес: Гуково
Цитата:
Сообщение от mazzy Посмотреть сообщение
да, я понял. а чем ваш отличается от стандартного? что расширяет? какие преимущества дает?
Собственно, я выше уже отмечал, что этот функционал, по большому счету, бесполезен. Единственное, что он дает, так это автоматически запоминает настройки, а при следующем открытии формы - автоматически же их восстанавливает. Если такое поведение возможно сэмулировать без кодинга - то я буду очень благодарен за "утыкание носом" .
За это сообщение автора поблагодарили: mazzy (5).
Старый 04.10.2010, 13:20   #7  
egorych is offline
egorych
Участник
Самостоятельные клиенты AX
Oracle
 
761 / 154 (7) ++++++
Регистрация: 09.11.2006
Адрес: Краснодарский край
Я так понял, восстанавливается сам Query? Т.е. если форма закрывается и на DS был наложен юзером какой-то фильтр, то при следующем открытии этот фильтр и будет восстановлен.
Стандартное сохранение настроек вроде не накладывает фильтрА. Или я ошибся?
Старый 04.10.2010, 13:25   #8  
tricky is offline
tricky
Участник
 
140 / 64 (3) ++++
Регистрация: 03.05.2005
Адрес: Гуково
Цитата:
Сообщение от egorych Посмотреть сообщение
Я так понял, восстанавливается сам Query? Т.е. если форма закрывается и на DS был наложен юзером какой-то фильтр, то при следующем открытии этот фильтр и будет восстановлен.
Стандартное сохранение настроек вроде не накладывает фильтрА. Или я ошибся?
Если быть точнее, то queryRun.query(). Да, совершенно точно.

Цитата:
Сообщение от egorych Посмотреть сообщение
Стандартное сохранение настроек вроде не накладывает фильтрА. Или я ошибся?
Под стандартным тут понимается функционал, вызываемый по Ctrl+F3 - позволяющий сохранять поименно пользовательские настройки фильтров.
Старый 05.10.2010, 08:39   #9  
S.Kuskov is offline
S.Kuskov
Участник
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
 
3,438 / 1775 (66) ++++++++
Регистрация: 28.04.2007
Адрес: Калуга
У меня рац.предложение.

Как совершенно справедливо заметил tricky
Цитата:
Сообщение от tricky Посмотреть сообщение
существующий стандартный функционал (Ctrl+F3), позволяет сохранять и восстанавливать любые настройки в любое время.
Стандарный функционал к тому же и сам умеет запоминать последний используемый фильтр (он остаётся в списке сохранённых фильтров под именем "Ранее использованный запрос").

Отсюда предложение - в предложенной tricky схеме автоматического востановления фильтра избавится от необходимости "перед super() в методе close() вставлять dev_SaveableQueryRun.formClosePre()";

В общем, дарю идею . Дерзайте!
За это сообщение автора поблагодарили: tricky (1).
Старый 05.10.2010, 08:56   #10  
AndyD is offline
AndyD
Участник
КОРУС Консалтинг
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
 
2,560 / 2479 (88) +++++++++
Регистрация: 20.08.2005
Цитата:
Сообщение от S.Kuskov Посмотреть сообщение
У меня рац.предложение.

Как совершенно справедливо заметил tricky

Стандарный функционал к тому же и сам умеет запоминать последний используемый фильтр (он остаётся в списке сохранённых фильтров под именем "Ранее использованный запрос").

Отсюда предложение - в предложенной tricky схеме автоматического востановления фильтра избавится от необходимости "перед super() в методе close() вставлять dev_SaveableQueryRun.formClosePre()";

В общем, дарю идею . Дерзайте!
Уже давно реализовано
Как в расширенном фильтре у формы сделать, авто фильтрацию при запуске формы?
__________________
Axapta v.3.0 sp5 kr2
За это сообщение автора поблагодарили: tricky (2).
Старый 05.10.2010, 09:08   #11  
S.Kuskov is offline
S.Kuskov
Участник
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
 
3,438 / 1775 (66) ++++++++
Регистрация: 28.04.2007
Адрес: Калуга
Цитата:
Сообщение от AndyD Посмотреть сообщение
Уже давно реализовано
Вот уж во истину, всё новое - это хорошо забытое старое.
Старый 05.10.2010, 09:31   #12  
tricky is offline
tricky
Участник
 
140 / 64 (3) ++++
Регистрация: 03.05.2005
Адрес: Гуково
Спасибо большое, за наводку. К своему стыду, я совершенно не подумал, что форма может вызываться при переходе к основной таблице или же использоваться в качестве Lookup-формы. Да если быть откровенным, не учтено то, что на форме может быть не один основной датасоурс, а несколько, не связанных между собой.... В общем там требуется еще работа напильником .

А что касается того, что стандартный функционал способен сам запоминать последний используемый запрос - я думал об этом. Но заметил такую особенность: последний используемый запрос сохраняется в том случае, если мы вызываем форму "Запрос" по Ctrl+F3 или же по кнопке на панели. Однако если мы просто по правой кнопке мыши по полю установим фильтр - то это изменение не запомнится. Или я чего-то не так делаю?

К тому же, этот класс изначально писался для простенького справочника, но для "тройки", а вот там функционала "Ранее использованный запрос" отсутствует, во всяком случае - у нас (SP3).
Старый 05.10.2010, 10:19   #13  
tricky is offline
tricky
Участник
 
140 / 64 (3) ++++
Регистрация: 03.05.2005
Адрес: Гуково
Если кому интересно, прикрепил обновленный класс - теперь учитывается то обстоятельство, вызывается ли эта форма через переход к основной таблице или в качестве lookup-формы.

Еще раз спасибо AndyD.
Вложения
Тип файла: xpo Class_DEV_SaveableQueryRun.xpo (9.3 Кб, 548 просмотров)

Последний раз редактировалось tricky; 05.10.2010 в 10:26.
Старый 05.10.2010, 12:38   #14  
Ivanhoe is offline
Ivanhoe
Участник
Аватар для Ivanhoe
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
 
4,143 / 2156 (80) +++++++++
Регистрация: 29.09.2005
Адрес: Санкт-Петербург
На самом деле, было бы удобно сделать галку "Фильтр по умолчанию" и открывать не последний фильтр, а именно отмеченный.

Похожую задачу даже ставил разработчикам на одном проекте, но т.к., начиная с 4.0, можно добавить в меню избранное любую форму и настроить фильтр по умолчанию стандартной функцией, решили не делать модификацию.
__________________
Ivanhoe as is..
Старый 05.10.2010, 12:48   #15  
tricky is offline
tricky
Участник
 
140 / 64 (3) ++++
Регистрация: 03.05.2005
Адрес: Гуково
Цитата:
Сообщение от Ivanhoe Посмотреть сообщение
На самом деле, было бы удобно сделать галку "Фильтр по умолчанию" и открывать не последний фильтр, а именно отмеченный.

Похожую задачу даже ставил разработчикам на одном проекте, но т.к., начиная с 4.0, можно добавить в меню избранное любую форму и настроить фильтр по умолчанию стандартной функцией, решили не делать модификацию.
А как можно настроить фильтр по умолчанию стандартной функцией?
Старый 05.10.2010, 13:00   #16  
Ivanhoe is offline
Ivanhoe
Участник
Аватар для Ivanhoe
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
 
4,143 / 2156 (80) +++++++++
Регистрация: 29.09.2005
Адрес: Санкт-Петербург
В форме сохраните фильтр, добавьте форму в избранное. Потом откройте редактирование избранного, выберите форму и там будет кнопка для выбора фильтра по-умолчанию.
__________________
Ivanhoe as is..
За это сообщение автора поблагодарили: tricky (2).
Старый 05.10.2010, 13:06   #17  
sukhanchik is offline
sukhanchik
Administrator
Аватар для sukhanchik
MCBMSS
Злыдни
Лучший по профессии 2015
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,309 / 3546 (125) ++++++++++
Регистрация: 13.06.2004
Адрес: Москва
Цитата:
Сообщение от tricky Посмотреть сообщение
А как можно настроить фильтр по умолчанию стандартной функцией?
в 4.0 и выше при нажатии на кнопку добавить в избранное можно выбрать из списка запрос, сохраненный при форме, добавляемой в избранное. Если запрос не сохранен при форме - то конечно ничего выбрать нельзя ("Ранее использованный запрос" не считается сохраненным)
Ну и конечно - это все актуально только для тех форм, которые вызываются непосредственно из меню, а не через кнопку или еще как-то.

UPD опередили
__________________
Возможно сделать все. Вопрос времени
За это сообщение автора поблагодарили: tricky (1).
Старый 05.10.2010, 13:10   #18  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Цитата:
Сообщение от tricky Посмотреть сообщение
Спасибо большое, за наводку. К своему стыду, я совершенно не подумал, что форма может вызываться при переходе к основной таблице или же использоваться в качестве Lookup-формы. Да если быть откровенным, не учтено то, что на форме может быть не один основной датасоурс, а несколько, не связанных между собой.... В общем там требуется еще работа напильником .
А учтено, что форма может вызываться из другой формы (может быть включен dynalink)?
__________________
полезное на axForum, github, vk, coub.
За это сообщение автора поблагодарили: tricky (1).
Старый 05.10.2010, 13:13   #19  
tricky is offline
tricky
Участник
 
140 / 64 (3) ++++
Регистрация: 03.05.2005
Адрес: Гуково
Цитата:
Сообщение от mazzy Посмотреть сообщение
А учтено, что форма может вызываться из другой формы (может быть включен dynalink)?
Еще нет

Ой, наврал. Учтено .

Последний раз редактировалось tricky; 05.10.2010 в 13:20.
Теги
queryrun, syslastvalue, xsyslastvalue, законченный пример, полезное, сохраниние настроек

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
C# and AX Development: Updating the caller Form/DataSource Blog bot DAX Blogs 0 18.07.2009 02:28
How-to. Слетание пользовательских настроек в формах после вызова lookup, или MS - suxx. Maximin DAX: База знаний и проекты 2 29.06.2007 12:16
Заполнение DataSource из постоянной и временной таблиц m_ax DAX: Программирование 2 21.06.2007 13:08
Сохранение пользовательских настроек в диалоге отчета Андрей К. DAX: Программирование 14 26.04.2007 10:56
Копирование пользовательских настроек Himan DAX: Программирование 6 21.12.2006 09:46

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

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

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