|
24.05.2007, 13:11 | #1 |
Участник
|
Выбор значения из lookup + ввод с клавиатуры
Требуется чтобы пользователь мог как выбрать значение из lookup, так и вести его с клавиатуры. Необходимо для решения следующей задачи: вводить не только наименование из lookup, но и некоторую его часть. Например, name, name*, na*. Запретить lookup нельзя.
Единственный способ, который я нашел, это убрать с поля EDT и перекрыть метод lookup, но этот способ мне не очень нравится, так как таких контролов (StringEdit) много и придется перекрывать много методов. Может кто знает способ проще, как можно такое сделать? |
|
24.05.2007, 13:23 | #2 |
Moderator
|
В чем проблема? Если я правильно понял, достаточно перекрыть validateField() на таблице и для нужного поля программно проверять правильность введенной маски.
__________________
Андрей. |
|
|
За это сообщение автора поблагодарили: Lucky13 (2). |
24.05.2007, 13:30 | #3 |
Участник
|
Правильность проверять не надо, нужно просто убрать проверку на определенных полях чтобы убрать ошибку "Поле не найдено в связанной таблице" и validateField для этого отлично подходит. Спасибо и respect.
|
|
24.05.2007, 14:26 | #4 |
Microsoft Dynamics
|
Но если вы будете использовать табличку по назначению? и тогда validateField не будет проверять те поля, которые вы закоментили.
ИМХО, лучше перекрыть лукап и сделать его статичным в каком-нить классе и вызывать его, но это ИМХО ) |
|
24.05.2007, 14:59 | #5 |
Участник
|
Как говорится, моя таблица, что хочу с ней то и делаю. Если таблица была бы стандартная, тогда да, лучше lookup. А в моем случае, когда таблица содержит 12 полей и на всех перекрывать lookup не самый лучший вариант. Вариант с validateField в данном случае предпочтительнее.
|
|
24.05.2007, 15:16 | #6 |
Участник
|
Цитата:
В вашей таблице есть два поля: код, наименование. У поля Наименование в свойстве Alias for укажите поле Код (см. LedgerTable.AccountNameAlias) Как только вы это сделаете, то сразу вместо кода можно будет вводить алиас. А Аксапта сама подставит код вместо алиаса. См. картинки. |
|
24.05.2007, 15:20 | #7 |
Участник
|
К сожалению, алиасы не работают в выпадающем списке.
Чтобы искать по наименованию, нужно открыть lookup, табом перейти на наименование и уже там искать по первым символам или при помощи фильтра. вот так выглядит поиск по первым буквам в lookup'е |
|
24.05.2007, 15:20 | #8 |
Участник
|
а вот так поиск в lookup'е
|
|
24.05.2007, 15:25 | #9 |
Участник
|
Да.
И хотелось бы отметить, что эта стандартная функциональность работает если ни один программист не переопределил работу с lookup'ами. Если же программист такие перепрограммровал работу с lookup-ами, то он должен предусмотреть открытие lookup'а с фильтрами, работу с алиасами, ввод по первым символам и поиск внутри lookup'а... |
|
24.05.2007, 15:26 | #10 |
Участник
|
Насколько я понял проблема в том что хочется ввести * в качетве значения поля
|
|
24.05.2007, 15:27 | #11 |
Участник
|
Цитата:
Но это только автор может сказать. |
|
|
За это сообщение автора поблагодарили: Lucky13 (2). |
24.05.2007, 15:40 | #12 |
Участник
|
Спасибо, mazzy, про aliasFor не знал, думаю в будущем пригодится, но сейчас мне нужно не это. Belugin прав, мне нужно чтобы пользователь мог выбрать значение из lookup и, при необходимости добавить * к этому значению.
|
|
24.05.2007, 15:59 | #13 |
Участник
|
Цитата:
Или это раздражает сильно? Вообще говоря, наличие специальных символов здорово осложнит вам жизнь при программировании и в отчетах. Вам всегда нужно будет помнить об экранировании этих специальных символов. Опять же, к сожалению, не везде в стандартном функционале спецсимволы экранируются. Кроме того, могут быть проблемы с join'ами. См. также: http://axapta.mazzy.ru/lib/lookup/ |
|
24.05.2007, 16:16 | #14 |
Участник
|
Цитата:
Цитата:
Сообщение от mazzy
Вообще говоря, наличие специальных символов здорово осложнит вам жизнь при программировании и в отчетах. Вам всегда нужно будет помнить об экранировании этих специальных символов. Опять же, к сожалению, не везде в стандартном функционале спецсимволы экранируются. Кроме того, могут быть проблемы с join'ами.
См. также: http://axapta.mazzy.ru/lib/lookup/ |
|
24.05.2007, 16:25 | #15 |
Участник
|
Цитата:
Я же говорю, будут проблемы с join'ами. См. статью про специальные символы http://axapta.mazzy.ru/lib/search/ подраздел Рекомендация 1 Цитата:
Это неочевидно, но Аксапта использует этот же механизм поиска и для связи данных в своей работе. Например, если из клиента сделать запрос по всем заказам, то Аксапта сгенерирует запрос и будет искать все заказы в которых клиент совпадает с текущим. Пока все нормально. Однако, если в коде клиента присутствуют специальные символы, то код клиента подставляется как есть и... поиск выполняется с шаблонами.
Например, есть клиент с кодом Аксапта 2,5. Если посмотреть заказы по этому клиенту, то Аксапта будет искать записи по двум (!) клиентам - "Аксапта 2" и по клиенту с кодом "5". Поэтому: не используйте специальные символы в кодах. Вы бы не мучались со спецсимволами... Цитата:
Тогда почему родился изначальный вопрос? |
|
24.05.2007, 16:49 | #16 |
Участник
|
Задача: есть N критериев по которым определенным образом нужно выбрать из таблицы запись, которая наиболее точно соответстует выбранным критериям. Значение критерия выбираются из различных справочников и записываюся в таблицу критериев. Но критерий не обязан точно соответствовать значению в справочнике. Например, в справочнике есть поставщик Бенефис ООО, а критерием может быть Бенефис*. Убирать lookup нецелосообразно, так как 80% значений выбираюся из списка, поэтому появилась идея сделать двойной ввод - и из списка, и с клавиатуры. То есть мне нужно вводить в поле даже те значения, которых нет в связной таблице. .
|
|
24.05.2007, 17:15 | #17 |
Участник
|
Насколько я понял - это что-то типа пользовательской фильтрации (SysQueryForm) - только ограниченный набор и самописная.
|
|
24.05.2007, 17:21 | #18 |
Участник
|
а зачем?
|
|
24.05.2007, 17:22 | #19 |
Участник
|
А шаблоны записей не подошли?
|
|
24.05.2007, 17:26 | #20 |
Участник
|
|
|
Теги |
lookup, validate, validatefield |
|
Опции темы | Поиск в этой теме |
Опции просмотра | |
|