04.10.2010, 11:58 | #1 |
Участник
|
Универсальный запоминатель пользовательских настроек DataSource.
Уважаемые коллеги, представляю вашему вниманию класс, позволяющий автоматически запоминать пользовательские настройки запроса (QueryRun) формы при ее закрытии, и последующем их автоматическом восстановлении при следующем запуске формы. Данные сохраняются в разрезе пользователей и компаний.
По своей сути, является совершенно бестолковой вещью, т.к. существующий стандартный функционал (Ctrl+F3), позволяет сохранять и восстанавливать любые настройки в любое время. Однако, встречаются пользователи, которым бы хотелось пользоваться столь замечательной возможностью, но при этом не утруждать себя лишним клацаньем мышки )). Пользоваться очень просто.
Кода и логики в классе зашито минимум - всем давно известный функционал xSysLastValue, но для не сталкивавшихся с ним, может быть интересен для рассмотрения. Класс во вложении. Подходит как для Axapta 3.0, так и для AX2009 (для четверки не пробовал, но, думаю, проблем не будет). Спасибо за внимание . Последний раз редактировалось mazzy; 04.10.2010 в 13:05. Причина: добавил слово "автоматически" в описание. |
|
|
За это сообщение автора поблагодарили: lev (2). |
04.10.2010, 12:39 | #2 |
Участник
|
А чем отличается от xSysLastValue?
|
|
04.10.2010, 12:43 | #3 |
Участник
|
|
|
04.10.2010, 12:56 | #4 |
Участник
|
да, я понял. а чем ваш отличается от стандартного? что расширяет? какие преимущества дает?
|
|
04.10.2010, 13:00 | #5 |
Ищущий знания...
|
просто сделал свою обертку этого класса видимо, наверно tricky так удобнее
__________________
"Страх перед возможностью ошибки не должен отвращать нас от поисков истины." (с) С Уважением, Елизаров Артем |
|
|
За это сообщение автора поблагодарили: tricky (1). |
04.10.2010, 13:03 | #6 |
Участник
|
Собственно, я выше уже отмечал, что этот функционал, по большому счету, бесполезен. Единственное, что он дает, так это автоматически запоминает настройки, а при следующем открытии формы - автоматически же их восстанавливает. Если такое поведение возможно сэмулировать без кодинга - то я буду очень благодарен за "утыкание носом" .
|
|
|
За это сообщение автора поблагодарили: mazzy (5). |
04.10.2010, 13:20 | #7 |
Участник
|
Я так понял, восстанавливается сам Query? Т.е. если форма закрывается и на DS был наложен юзером какой-то фильтр, то при следующем открытии этот фильтр и будет восстановлен.
Стандартное сохранение настроек вроде не накладывает фильтрА. Или я ошибся? |
|
04.10.2010, 13:25 | #8 |
Участник
|
Цитата:
Под стандартным тут понимается функционал, вызываемый по Ctrl+F3 - позволяющий сохранять поименно пользовательские настройки фильтров. |
|
05.10.2010, 08:39 | #9 |
Участник
|
У меня рац.предложение.
Как совершенно справедливо заметил tricky Цитата:
Отсюда предложение - в предложенной tricky схеме автоматического востановления фильтра избавится от необходимости "перед super() в методе close() вставлять dev_SaveableQueryRun.formClosePre()"; В общем, дарю идею . Дерзайте! |
|
|
За это сообщение автора поблагодарили: tricky (1). |
05.10.2010, 08:56 | #10 |
Участник
|
Цитата:
Сообщение от S.Kuskov
У меня рац.предложение.
Как совершенно справедливо заметил tricky Стандарный функционал к тому же и сам умеет запоминать последний используемый фильтр (он остаётся в списке сохранённых фильтров под именем "Ранее использованный запрос"). Отсюда предложение - в предложенной tricky схеме автоматического востановления фильтра избавится от необходимости "перед super() в методе close() вставлять dev_SaveableQueryRun.formClosePre()"; В общем, дарю идею . Дерзайте! Как в расширенном фильтре у формы сделать, авто фильтрацию при запуске формы?
__________________
Axapta v.3.0 sp5 kr2 |
|
|
За это сообщение автора поблагодарили: tricky (2). |
05.10.2010, 09:08 | #11 |
Участник
|
|
|
05.10.2010, 09:31 | #12 |
Участник
|
Цитата:
Сообщение от AndyD
Уже давно реализовано
Как в расширенном фильтре у формы сделать, авто фильтрацию при запуске формы? А что касается того, что стандартный функционал способен сам запоминать последний используемый запрос - я думал об этом. Но заметил такую особенность: последний используемый запрос сохраняется в том случае, если мы вызываем форму "Запрос" по Ctrl+F3 или же по кнопке на панели. Однако если мы просто по правой кнопке мыши по полю установим фильтр - то это изменение не запомнится. Или я чего-то не так делаю? К тому же, этот класс изначально писался для простенького справочника, но для "тройки", а вот там функционала "Ранее использованный запрос" отсутствует, во всяком случае - у нас (SP3). |
|
05.10.2010, 10:19 | #13 |
Участник
|
Если кому интересно, прикрепил обновленный класс - теперь учитывается то обстоятельство, вызывается ли эта форма через переход к основной таблице или в качестве lookup-формы.
Еще раз спасибо AndyD. Последний раз редактировалось tricky; 05.10.2010 в 10:26. |
|
05.10.2010, 12:38 | #14 |
Участник
|
На самом деле, было бы удобно сделать галку "Фильтр по умолчанию" и открывать не последний фильтр, а именно отмеченный.
Похожую задачу даже ставил разработчикам на одном проекте, но т.к., начиная с 4.0, можно добавить в меню избранное любую форму и настроить фильтр по умолчанию стандартной функцией, решили не делать модификацию.
__________________
Ivanhoe as is.. |
|
05.10.2010, 12:48 | #15 |
Участник
|
Цитата:
Сообщение от Ivanhoe
На самом деле, было бы удобно сделать галку "Фильтр по умолчанию" и открывать не последний фильтр, а именно отмеченный.
Похожую задачу даже ставил разработчикам на одном проекте, но т.к., начиная с 4.0, можно добавить в меню избранное любую форму и настроить фильтр по умолчанию стандартной функцией, решили не делать модификацию. |
|
05.10.2010, 13:00 | #16 |
Участник
|
В форме сохраните фильтр, добавьте форму в избранное. Потом откройте редактирование избранного, выберите форму и там будет кнопка для выбора фильтра по-умолчанию.
__________________
Ivanhoe as is.. |
|
|
За это сообщение автора поблагодарили: tricky (2). |
05.10.2010, 13:06 | #17 |
Administrator
|
в 4.0 и выше при нажатии на кнопку добавить в избранное можно выбрать из списка запрос, сохраненный при форме, добавляемой в избранное. Если запрос не сохранен при форме - то конечно ничего выбрать нельзя ("Ранее использованный запрос" не считается сохраненным)
Ну и конечно - это все актуально только для тех форм, которые вызываются непосредственно из меню, а не через кнопку или еще как-то. UPD опередили
__________________
Возможно сделать все. Вопрос времени |
|
|
За это сообщение автора поблагодарили: tricky (1). |
05.10.2010, 13:10 | #18 |
Участник
|
Цитата:
Сообщение от tricky
Спасибо большое, за наводку. К своему стыду, я совершенно не подумал, что форма может вызываться при переходе к основной таблице или же использоваться в качестве Lookup-формы. Да если быть откровенным, не учтено то, что на форме может быть не один основной датасоурс, а несколько, не связанных между собой.... В общем там требуется еще работа напильником .
|
|
|
За это сообщение автора поблагодарили: tricky (1). |
05.10.2010, 13:13 | #19 |
Участник
|
Цитата:
Ой, наврал. Учтено . Последний раз редактировалось tricky; 05.10.2010 в 13:20. |
|
Теги |
queryrun, syslastvalue, xsyslastvalue, законченный пример, полезное, сохраниние настроек |
|
|