04.07.2011, 11:06 | #1 |
Участник
|
ещё раз о фильтре Lookup и lookupbrowse filter
Всем доброго времени суток. Столкнулся с проблемой фильтрации Lookup. Как делать фильтр я знаю. Прочитал статьи и всё сделал как там написано и всё работает ровно так, как там написано. Однако возникают 2 проблемы.
1. В самой форме лукапа есть поле lookupbrowse. (Поле фильтра в правом верхнем углу). Если ввеcти туда значения и нажать фильтр, то плагин, который просматривает адресную строку, не будет производить фильтрацию, т.к. в адресной строке уже нет необходимого параметра. Аналогичная проблема при попытке отсортировать лукап. Насколько я понимаю в этот момент опять идёт обращение к плагину фильтрации. 2. Если ввести в поле Lookup на форме текстовое значение параметра, то фильтрации не произойдет. Заранее спасибо |
|
04.07.2011, 11:18 | #2 |
Moderator
|
Еще есть помощник по заполнению форм, который так же промахнется мимо вашего плагина. Проблему 2 можно решить отключением данной опции на форме (помощник тоже отключается). Фильтрацию в окне лукапа, насколько помню, тоже можно забороть, установкой нужного параметра на поле лукапа (что-то вроде browseenabled - нужно смотреть в атрибутах поля) - в этом случае поле поиска в лукапе будет неактивно.
Ну и, наконец, если все описанное выше не помогает, остается последний вариант - проверка выбранного значения по OnChange и карательные меры, если пользователь как-то обошел ваши фильтры.
__________________
http://fixrm.wordpress.com, снятие/наведение порчи. Быстро, дорого, гарантия. MS Certified Dirty Magic Professional |
|
04.07.2011, 11:33 | #3 |
Участник
|
Эти методы известны. Но не хотеось бы применять радикальные. Хотелось получить полностью аналогичный функционал.
|
|
04.07.2011, 11:41 | #4 |
Участник
|
Проблему может решить если я научусь отлавливать следующий FETCH, то есть перед тем как будет отправлен запрос я имел возможность уснановить параметр, не важно куда. Возможно в тот же фетч, или куки. А уже в плагине распарсить это и применить фильтрацию
|
|
04.07.2011, 11:44 | #5 |
Чайный пьяница
|
Зачем придумывать велосипед. Данный плагин уже написан - http://mscrmfilteredlookup.codeplex.com/
Но при этом всё равно прийдётся отключать авторезолв и помощник, для того чтобы лукап работал. Так же не стоит забывать про множественное редактирование и заблокировать поле для него.
__________________
Эмо разработчик, сначала пишу код, потом плачу над его несовершенством. Подписывайтесь на мой блог, twitter и YouTube канал. Пользуйтесь моим Ultimate Workflow Toolkit Последний раз редактировалось a33ik; 04.07.2011 в 11:50. |
|
04.07.2011, 13:28 | #6 |
Moderator
|
Цитата:
Сообщение от a33ik
Зачем придумывать велосипед. Данный плагин уже написан - http://mscrmfilteredlookup.codeplex.com/
Но при этом всё равно прийдётся отключать авторезолв и помощник, для того чтобы лукап работал. Так же не стоит забывать про множественное редактирование и заблокировать поле для него. Вариант у вас, по сути, один: вносить изменения в страницу лукапа или вообще писать свой диалог и подменять системный. Все прочие более-менее поддерживаемые решения мы вам обозначили.
__________________
http://fixrm.wordpress.com, снятие/наведение порчи. Быстро, дорого, гарантия. MS Certified Dirty Magic Professional |
|
04.07.2011, 13:32 | #7 |
Чайный пьяница
|
Тому плагину по барабану какой пришёл запрос - с доп фильтром или без. Он принимает на вход Fetch, добавляет необходимый фильтр, который был добавлен скриптом и пропускает его далее. Я знаю, потому что мне необходимо было его расширять, потому как linked entity синтаксис он не понимал и я переписывал всё что внутри его.
__________________
Эмо разработчик, сначала пишу код, потом плачу над его несовершенством. Подписывайтесь на мой блог, twitter и YouTube канал. Пользуйтесь моим Ultimate Workflow Toolkit |
|
04.07.2011, 13:35 | #8 |
Участник
|
Плагин действительно помог.
var pageUrl = HttpContext.Current.Request.Url.ToString(); var refererUrl = HttpContext.Current.Request.ServerVariables["HTTP_REFERER"]; Вот эти строки. В первой находится адрес, объекта, который вызвал. В случае если я введу данные из формы, прямо в поле лукапа, то в pageUrl будет адрес моей страницы. Если с фильтрую или сортирую данные лукапа, то в refererUrl всё равно будет мой параметр из адресной строки, который я передаю. Так что вот решение. Если на 1 форме будет 2 связи с одной сущностью, при этом фильтровать надо только одну, то будет не весело, иначе всё вроде должно работать |
|
04.07.2011, 16:44 | #9 |
Чайный пьяница
|
Цитата:
Сообщение от g.Naukovych
Плагин действительно помог.
var pageUrl = HttpContext.Current.Request.Url.ToString(); var refererUrl = HttpContext.Current.Request.ServerVariables["HTTP_REFERER"]; Вот эти строки. В первой находится адрес, объекта, который вызвал. В случае если я введу данные из формы, прямо в поле лукапа, то в pageUrl будет адрес моей страницы. Если с фильтрую или сортирую данные лукапа, то в refererUrl всё равно будет мой параметр из адресной строки, который я передаю. Так что вот решение. Если на 1 форме будет 2 связи с одной сущностью, при этом фильтровать надо только одну, то будет не весело, иначе всё вроде должно работать
__________________
Эмо разработчик, сначала пишу код, потом плачу над его несовершенством. Подписывайтесь на мой блог, twitter и YouTube канал. Пользуйтесь моим Ultimate Workflow Toolkit |
|
04.07.2011, 17:50 | #10 |
Участник
|
Цитата:
Сообщение от a33ik
Зачем придумывать велосипед. Данный плагин уже написан - http://mscrmfilteredlookup.codeplex.com/
Но при этом всё равно прийдётся отключать авторезолв и помощник, для того чтобы лукап работал. Так же не стоит забывать про множественное редактирование и заблокировать поле для него. авторезолв не надо отключать. Остальное пока не проверял. |
|
04.07.2011, 18:21 | #11 |
Чайный пьяница
|
Авторезолв не подчиняется указанному плагину насколько я помню.
__________________
Эмо разработчик, сначала пишу код, потом плачу над его несовершенством. Подписывайтесь на мой блог, twitter и YouTube канал. Пользуйтесь моим Ultimate Workflow Toolkit |
|
05.07.2011, 12:11 | #12 |
Участник
|
Возможно не силён в терминологии. Авторезолв это ввод данных в поле лукапа, после минуя формы. Если речь об этом, то в pageUrl будет адрес нашёй формы. Мы смотрим, что это наша форма и фтльтруемая сущность тоже наша. значит фильтруем. Если на форме есть одинаковые сущности и одну из них надо фильтровать, то это не сработает, в противном случае все работает.
|
|
05.07.2011, 13:59 | #13 |
Moderator
|
Возможно я не силен в русском. Авторезолв - это автоматическое заполнение лукапа, при вводе в него текстового значения. Интересный момент состоит в том, что авторезолв может работать по нескольким связанным сущностям одновременно, а так же предлагать несколько результатов на выбор. Если мне не изменяет память, то при этом используется отдельный веб сервис. Так что лично у меня нет четкой уверенности, что в этом случае вы увидите адрес формы, откуда пришел этот вызов.
__________________
http://fixrm.wordpress.com, снятие/наведение порчи. Быстро, дорого, гарантия. MS Certified Dirty Magic Professional |
|
05.07.2011, 15:10 | #14 |
Участник
|
Возможно. пробовал в singlelookup вижу адрес формы.
|
|
05.07.2011, 15:55 | #15 |
Чайный пьяница
|
Цитата:
Проблема заключается в том, что даже если можно увидеть адрес формы, но не получится получить фильтр который наложен на контрол лукапа при помощи скрипта как не старайся. Ну конечно же кроме случая, что фильтр статический, а не динамический.
__________________
Эмо разработчик, сначала пишу код, потом плачу над его несовершенством. Подписывайтесь на мой блог, twitter и YouTube канал. Пользуйтесь моим Ultimate Workflow Toolkit |
|
05.07.2011, 16:14 | #16 |
Moderator
|
Я имел в виду тот вебсервис, который http://server/org/AppWebServices/LookupService.asmx. Насколько я понимаю именно он отвечает за работу авторезолв и формасистант. То что он в конечном итоге использует стандартные системные механизмы меня совершенно не удивляет
__________________
http://fixrm.wordpress.com, снятие/наведение порчи. Быстро, дорого, гарантия. MS Certified Dirty Magic Professional |
|
05.07.2011, 16:33 | #17 |
Участник
|
Цитата:
Сообщение от a33ik
Не старина - тут ты неправ - используется тот же самый Execute и FetchXml. Раскопал это ещё тогда, когда свой record counter писал.
Проблема заключается в том, что даже если можно увидеть адрес формы, но не получится получить фильтр который наложен на контрол лукапа при помощи скрипта как не старайся. Ну конечно же кроме случая, что фильтр статический, а не динамический. |
|
Теги |
browse, filter, lookup, фильтр, crm |
|
|