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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 09.01.2004, 12:58   #1  
ДК is offline
ДК
Участник
 
43 / 10 (1) +
Регистрация: 24.06.2003
Адрес: Краснодар
Собственно все в сабже.
Суть такова - нужно что-то делать только при установленном на форме фильтре.
__________________
-----------------------------------------
Искренне Ваш, ДК.
Старый 09.01.2004, 14:25   #2  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
хм... на самом деле, скорее всего вопрос требоует уточнения.
есть фильтры установленные программистом, а есть фильтры установленные пользователем.

Я не знаю, как программно их различить.

А вообще говоря, надо у формы получить query, а дельше работать с query.

получить query в форме можно Query q = element.datasource(1).query().
А дальше использовать класс Query (см. ветку System Documentation \ Classes \ Query)

В Query в цикле перебрать datasources. (KERNDOC://Classes/Query/dataSourceCount, KERNDOC://Classes/Query/dataSourceNo)

В datasource узнать количество range при помощи rangeCount (KERNDOC://Classes/QueryBuildDataSource/rangeCount)

и т.д.

Но вот как узнать, какие range были поставлены пользователем, а какие были изначально назначены для формы программистом? Тут видимо придется сравнивать текущий query и исходный query из DictForm...

А чего хочешь то в конечном итоге? Может проще вопрос решается?
__________________
полезное на axForum, github, vk, coub.
Старый 09.01.2004, 14:29   #3  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
О кстати, подумал вот о чем.
Быстро сравнить текущий query с оригинальным query можно при помощи.

element.datasource(1).query().equal(<исходный-query>)

вопрос теперь сводится к тому, как получить исходный query, заданный в AOT.

Видимо, надо попробовать через dict-классы.
__________________
полезное на axForum, github, vk, coub.
Старый 09.01.2004, 15:00   #4  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Дядя Коля... Классный вопрос. Давно уже не получал такой удовольствия от поиска ответа.

вот что нужно поставить например внутри метода active в датасорсе формы.
Код:
if( this.query().equal(this.queryRun().query()) )
    info("Пользователь фильтр не ставил");
else
    info("Пользователь установил фильтр");
__________________
полезное на axForum, github, vk, coub.
Старый 09.01.2004, 16:12   #5  
Maxim Gorbunov is offline
Maxim Gorbunov
Administrator
Соотечественники
Лучший по профессии 2009
 
2,483 / 645 (26) +++++++
Регистрация: 27.11.2001
Адрес: Dubai, UAE
Да, все так

this.query() - query установленный при инициализации this.queryRun(). Записи отбираются при помощи this.queryRun(). Пользовательские фильтры в this.query() не попадают, они пишуться только в this.queryRun(). Осталось только получить структуру this.queryRun(), а это делается с помощью this.queryRun().query().
__________________
Not registered yet? Register here!
Have comments, questions, suggestions or anything else regarding our web site? Don't hesitate, send them to me
Старый 09.01.2004, 17:41   #6  
ДК is offline
ДК
Участник
 
43 / 10 (1) +
Регистрация: 24.06.2003
Адрес: Краснодар
Ха! Сергей! У меня таких вопросов...... ))) рад, что доставил удовольствие))
На самом деле нужно было:
Есть определенная форма с датасорсом InventTable
Поле для установки значеий и кнопочка. Та вот кнопочка должна работать только если пользователь установил фильтр (не важно какой), т.к. для всей InventTable нажатие кнопочки бессмысленно и даже вредно.
Есще раз спасибо.
__________________
-----------------------------------------
Искренне Ваш, ДК.
 


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

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

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