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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 16.09.2009, 15:46   #1  
kalex_a is offline
kalex_a
Участник
Аватар для kalex_a
Самостоятельные клиенты AX
MCBMSS
 
160 / 19 (1) ++
Регистрация: 26.11.2007
Адрес: Казахстан
? Фильтр по полю и lookup
Здравствуйте. Перекрыли метод lookup на поле датасорса, добавили всяких фильтров там, все работает. НО если в выпадающем списке сделать "Фильтр по полю" и ввести значение которое отфильтровалось (не видно в выпадающем списке), то он его находит. Что можно сделать???
__________________
Лучше сделать и жалеть, чем жалеть что не сделал
Старый 16.09.2009, 16:04   #2  
Masel is offline
Masel
Участник
 
39 / 537 (18) +++++++
Регистрация: 19.09.2007
Можно сделать sql-ный фильтр по какому-нибудь ненужному пользователю полю, например по dataAreaId.
X++:
qbds.addrange(fieldnum(table1,dataAreaId)).value("field1=filter");
Ну и locked сделать его.

Такой фильтр пользователь снять не сможет.
Старый 16.09.2009, 16:29   #3  
AX2009
Гость
 
n/a
не забудьте еще validate перекрыть
а то юзер он такой, не дали в лукапе выбрать - забъет тупо ручками =)
Старый 17.09.2009, 11:51   #4  
kalex_a is offline
kalex_a
Участник
Аватар для kalex_a
Самостоятельные клиенты AX
MCBMSS
 
160 / 19 (1) ++
Регистрация: 26.11.2007
Адрес: Казахстан
Цитата:
Сообщение от Masel Посмотреть сообщение
Можно сделать sql-ный фильтр по какому-нибудь ненужному пользователю полю, например по dataAreaId.
X++:
qbds.addrange(fieldnum(table1,dataAreaId)).value("field1=filter");
Ну и locked сделать его.

Такой фильтр пользователь снять не сможет.
А по подробней про locked можно?
__________________
Лучше сделать и жалеть, чем жалеть что не сделал
Старый 17.09.2009, 12:11   #5  
ivas is offline
ivas
Участник
Аватар для ivas
 
252 / 68 (3) ++++
Регистрация: 22.12.2005
Цитата:
Сообщение от kalex_a Посмотреть сообщение
А по подробней про locked можно?
X++:
qbds.addrange(fieldnum(table1,dataAreaId)).value("field1=filter");
qbds.findRange(fieldnum(table1,dataAreaId)).status(RangeStatus::Locked);
__________________
aLL woRk aNd nO JoY MAKes jAck a dULL Boy
Старый 17.09.2009, 12:21   #6  
Masel is offline
Masel
Участник
 
39 / 537 (18) +++++++
Регистрация: 19.09.2007
X++:
QueryBuildDataSource qbds;
QueryBuildRange         qbr;
;
qbr = qbds.addrange(fieldnum(table1,dataAreaId)).value("field1=filter1 && field2=filter2");
qbr.status(1);//locked
//или можно
//qbr.status(2); //hidden
Смысл в том, что если фильтр идет по полю, которого нет в гриде, то пользователь не сможет снять такой фильтр через "найти", "фильтр". Но он может его снять через ctrl-F3(фильтрация записей - на панели сверху). Для того чтобы и там нельзя было снять у range надо поставить статус locked, фильтр станет нередактируемым, другой фильтр на то же поле добавить будет нельзя. Если hidden то фильтр даже не видно будет там в списке наложенных фильтров. Хотя помнится мне что поле dataareaId вообще не попадает никогда в фильтрацию записей и такой фильтр ко всему прочему никак не помешает пользователю делать свои фильтры.
Старый 17.09.2009, 12:33   #7  
raz is offline
raz
NavAx
Аватар для raz
NavAx Club
Лучший по профессии 2014
Лучший по профессии 2009
 
1,494 / 1065 (38) ++++++++
Регистрация: 22.07.2003
Адрес: МО
на самом деле спасет только hidden, locked можно спокойно обойти, если сделать поиск по этому полю.
точнее самый надежный вариант, это если приджоинить второй датасорс с такой же таблицой и фильтровать в нем, или не показывать на форме поля с фильтрами.
всё остальное обходится через поиск.

Последний раз редактировалось raz; 17.09.2009 в 12:43. Причина: 1
За это сообщение автора поблагодарили: kalex_a (1).
Старый 17.09.2009, 12:55   #8  
kalex_a is offline
kalex_a
Участник
Аватар для kalex_a
Самостоятельные клиенты AX
MCBMSS
 
160 / 19 (1) ++
Регистрация: 26.11.2007
Адрес: Казахстан
Так?
X++:
qbds.addrange(fieldnum(PurchTable_request,dataAreaId)).value("dat");
        qbds.findRange(fieldnum(PurchTable_request,dataAreaId)).status(RangeStatus::Hidden);
Неработает (
__________________
Лучше сделать и жалеть, чем жалеть что не сделал
Старый 17.09.2009, 13:09   #9  
Masel is offline
Masel
Участник
 
39 / 537 (18) +++++++
Регистрация: 19.09.2007
Для какого поля фильтр то надо сделать? Зачем фильтр 'dat'?
Старый 17.09.2009, 13:11   #10  
ivas is offline
ivas
Участник
Аватар для ivas
 
252 / 68 (3) ++++
Регистрация: 22.12.2005
Цитата:
Сообщение от kalex_a Посмотреть сообщение
Так?
X++:
qbds.addrange(fieldnum(PurchTable_request,dataAreaId)).value("dat");
        qbds.findRange(fieldnum(PurchTable_request,dataAreaId)).status(RangeStatus::Hidden);
Неработает (
и не должно)
X++:
qbds.addrange(fieldnum(PurchTable_request,dataAreaId)).value("PurchTable.InvoiceAccount = 012345")
както так)
__________________
aLL woRk aNd nO JoY MAKes jAck a dULL Boy
Старый 17.09.2009, 13:11   #11  
ivas is offline
ivas
Участник
Аватар для ivas
 
252 / 68 (3) ++++
Регистрация: 22.12.2005
тут можно посмотреть пример:
\Forms\Address\Data Sources\Address\Methods\addQuerySalesTable
__________________
aLL woRk aNd nO JoY MAKes jAck a dULL Boy
Старый 17.09.2009, 13:16   #12  
kalex_a is offline
kalex_a
Участник
Аватар для kalex_a
Самостоятельные клиенты AX
MCBMSS
 
160 / 19 (1) ++
Регистрация: 26.11.2007
Адрес: Казахстан
Цитата:
точнее самый надежный вариант, это если приджоинить второй датасорс с такой же таблицой и фильтровать в нем.
Спасибо, так сделал заработало.
__________________
Лучше сделать и жалеть, чем жалеть что не сделал
Теги
lookup, программно, фильтр

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Можно сделать lookup по полю типа Base Enum? Hidden DAX: Программирование 25 04.10.2017 13:06
Lookup form, OuterJoin и фильтр Russland DAX: Программирование 45 26.10.2007 15:45
Фильтр в Lookup по полю другой таблицы gefr DAX: Программирование 6 12.03.2007 13:06
Фильтр в lookup Azat DAX: Программирование 7 08.11.2005 11:40
lookup фильтр в произвольной lookup форме 111andrei DAX: Программирование 4 05.10.2005 11:28

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

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

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