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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 24.05.2007, 13:11   #1  
Lucky13 is offline
Lucky13
Участник
1C
 
714 / 198 (8) ++++++
Регистрация: 21.10.2004
Выбор значения из lookup + ввод с клавиатуры
Требуется чтобы пользователь мог как выбрать значение из lookup, так и вести его с клавиатуры. Необходимо для решения следующей задачи: вводить не только наименование из lookup, но и некоторую его часть. Например, name, name*, na*. Запретить lookup нельзя.
Единственный способ, который я нашел, это убрать с поля EDT и перекрыть метод lookup, но этот способ мне не очень нравится, так как таких контролов (StringEdit) много и придется перекрывать много методов.

Может кто знает способ проще, как можно такое сделать?
Старый 24.05.2007, 13:23   #2  
Dron AKA andy is offline
Dron AKA andy
Moderator
 
944 / 253 (10) ++++++
Регистрация: 27.03.2002
Адрес: Москва
В чем проблема? Если я правильно понял, достаточно перекрыть validateField() на таблице и для нужного поля программно проверять правильность введенной маски.
__________________
Андрей.
За это сообщение автора поблагодарили: Lucky13 (2).
Старый 24.05.2007, 13:30   #3  
Lucky13 is offline
Lucky13
Участник
1C
 
714 / 198 (8) ++++++
Регистрация: 21.10.2004
Правильность проверять не надо, нужно просто убрать проверку на определенных полях чтобы убрать ошибку "Поле не найдено в связанной таблице" и validateField для этого отлично подходит. Спасибо и respect.
Старый 24.05.2007, 14:26   #4  
Мариночка is offline
Мариночка
Microsoft Dynamics
Аватар для Мариночка
Сотрудники Microsoft Dynamics
 
75 / 56 (2) ++++
Регистрация: 31.01.2005
Адрес: Киев
Но если вы будете использовать табличку по назначению? и тогда validateField не будет проверять те поля, которые вы закоментили.
ИМХО, лучше перекрыть лукап и сделать его статичным в каком-нить классе и вызывать его, но это ИМХО )
Старый 24.05.2007, 14:59   #5  
Lucky13 is offline
Lucky13
Участник
1C
 
714 / 198 (8) ++++++
Регистрация: 21.10.2004
Как говорится, моя таблица, что хочу с ней то и делаю. Если таблица была бы стандартная, тогда да, лучше lookup. А в моем случае, когда таблица содержит 12 полей и на всех перекрывать lookup не самый лучший вариант. Вариант с validateField в данном случае предпочтительнее.
Старый 24.05.2007, 15:16   #6  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Цитата:
Сообщение от Lucky13 Посмотреть сообщение
Требуется чтобы пользователь мог как выбрать значение из lookup, так и вести его с клавиатуры. Необходимо для решения следующей задачи: вводить не только наименование из lookup, но и некоторую его часть. Например, name, name*, na*. Запретить lookup нельзя.
Для ввода ничего программировать не нужно.

В вашей таблице есть два поля: код, наименование.
У поля Наименование в свойстве Alias for укажите поле Код
(см. LedgerTable.AccountNameAlias)

Как только вы это сделаете, то сразу вместо кода можно будет вводить алиас.
А Аксапта сама подставит код вместо алиаса.

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

вот так выглядит поиск по первым буквам в lookup'е
Миниатюры
Нажмите на изображение для увеличения
Название: 04.gif
Просмотров: 446
Размер:	23.6 Кб
ID:	2651  
__________________
полезное на axForum, github, vk, coub.
Старый 24.05.2007, 15:20   #8  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
а вот так поиск в lookup'е
Миниатюры
Нажмите на изображение для увеличения
Название: 05.gif
Просмотров: 383
Размер:	30.6 Кб
ID:	2649   Нажмите на изображение для увеличения
Название: 06.gif
Просмотров: 410
Размер:	14.6 Кб
ID:	2650  

__________________
полезное на axForum, github, vk, coub.
Старый 24.05.2007, 15:25   #9  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Да.
И хотелось бы отметить, что эта стандартная функциональность работает если ни один программист не переопределил работу с lookup'ами.

Если же программист такие перепрограммровал работу с lookup-ами, то он должен предусмотреть открытие lookup'а с фильтрами, работу с алиасами, ввод по первым символам и поиск внутри lookup'а...
__________________
полезное на axForum, github, vk, coub.
Старый 24.05.2007, 15:26   #10  
belugin is offline
belugin
Участник
Аватар для belugin
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,622 / 2925 (107) +++++++++
Регистрация: 16.01.2004
Записей в блоге: 5
Насколько я понял проблема в том что хочется ввести * в качетве значения поля
Старый 24.05.2007, 15:27   #11  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Цитата:
Сообщение от belugin Посмотреть сообщение
Насколько я понял проблема в том что хочется ввести * в качетве значения поля
По-моему, таки нет.
Но это только автор может сказать.
__________________
полезное на axForum, github, vk, coub.
За это сообщение автора поблагодарили: Lucky13 (2).
Старый 24.05.2007, 15:40   #12  
Lucky13 is offline
Lucky13
Участник
1C
 
714 / 198 (8) ++++++
Регистрация: 21.10.2004
Спасибо, mazzy, про aliasFor не знал, думаю в будущем пригодится, но сейчас мне нужно не это. Belugin прав, мне нужно чтобы пользователь мог выбрать значение из lookup и, при необходимости добавить * к этому значению.
Старый 24.05.2007, 15:59   #13  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Цитата:
Сообщение от Lucky13 Посмотреть сообщение
Спасибо, mazzy, про aliasFor не знал, думаю в будущем пригодится, но сейчас мне нужно не это. Belugin прав, мне нужно чтобы пользователь мог выбрать значение из lookup и, при необходимости добавить * к этому значению.
Закройте выпадающий lookup кнопкой ESC. Символ * останется.
Или это раздражает сильно?

Вообще говоря, наличие специальных символов здорово осложнит вам жизнь при программировании и в отчетах. Вам всегда нужно будет помнить об экранировании этих специальных символов. Опять же, к сожалению, не везде в стандартном функционале спецсимволы экранируются. Кроме того, могут быть проблемы с join'ами.

См. также: http://axapta.mazzy.ru/lib/lookup/
__________________
полезное на axForum, github, vk, coub.
Старый 24.05.2007, 16:16   #14  
Lucky13 is offline
Lucky13
Участник
1C
 
714 / 198 (8) ++++++
Регистрация: 21.10.2004
Цитата:
Сообщение от mazzy Посмотреть сообщение
Закройте выпадающий lookup кнопкой ESC. Символ * останется.
Или это раздражает сильно?
звездочка-то остается, но при сохранении записи выдается ошибка "Поле не найдено в связанной таблице". Это не только раздражает, но и не позволяет нормально работать.
Цитата:
Сообщение от mazzy Посмотреть сообщение
Вообще говоря, наличие специальных символов здорово осложнит вам жизнь при программировании и в отчетах. Вам всегда нужно будет помнить об экранировании этих специальных символов. Опять же, к сожалению, не везде в стандартном функционале спецсимволы экранируются. Кроме того, могут быть проблемы с join'ами.

См. также: http://axapta.mazzy.ru/lib/lookup/
В моем случае введенное значение передается в Query, так что экранировать как раз ничего не нужно.
Старый 24.05.2007, 16:25   #15  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Цитата:
Сообщение от Lucky13 Посмотреть сообщение
звездочка-то остается, но при сохранении записи выдается ошибка "Поле не найдено в связанной таблице".
А... извините, что так торможу.

Я же говорю, будут проблемы с join'ами.
См. статью про специальные символы http://axapta.mazzy.ru/lib/search/
подраздел Рекомендация 1

Цитата:
Это неочевидно, но Аксапта использует этот же механизм поиска и для связи данных в своей работе. Например, если из клиента сделать запрос по всем заказам, то Аксапта сгенерирует запрос и будет искать все заказы в которых клиент совпадает с текущим. Пока все нормально. Однако, если в коде клиента присутствуют специальные символы, то код клиента подставляется как есть и... поиск выполняется с шаблонами.

Например, есть клиент с кодом Аксапта 2,5. Если посмотреть заказы по этому клиенту, то Аксапта будет искать записи по двум (!) клиентам - "Аксапта 2" и по клиенту с кодом "5".

Поэтому: не используйте специальные символы в кодах.
В вашем случае, validate ищет запись, у которой код начинается с name и оканчивается любыми символами. Чтобы validate искал именно name* нужно ввести name\*

Вы бы не мучались со спецсимволами...

Цитата:
Сообщение от Lucky13 Посмотреть сообщение
В моем случае введенное значение передается в Query, так что экранировать как раз ничего не нужно.
Я снова чего-то не понял?
Тогда почему родился изначальный вопрос?
__________________
полезное на axForum, github, vk, coub.
Старый 24.05.2007, 16:49   #16  
Lucky13 is offline
Lucky13
Участник
1C
 
714 / 198 (8) ++++++
Регистрация: 21.10.2004
Цитата:
Сообщение от mazzy Посмотреть сообщение
Я снова чего-то не понял?
Тогда почему родился изначальный вопрос?
Задача: есть N критериев по которым определенным образом нужно выбрать из таблицы запись, которая наиболее точно соответстует выбранным критериям. Значение критерия выбираются из различных справочников и записываюся в таблицу критериев. Но критерий не обязан точно соответствовать значению в справочнике. Например, в справочнике есть поставщик Бенефис ООО, а критерием может быть Бенефис*. Убирать lookup нецелосообразно, так как 80% значений выбираюся из списка, поэтому появилась идея сделать двойной ввод - и из списка, и с клавиатуры. То есть мне нужно вводить в поле даже те значения, которых нет в связной таблице. .
Старый 24.05.2007, 16:53   #17  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Цитата:
Сообщение от Lucky13 Посмотреть сообщение
Задача: есть N критериев по которым определенным образом нужно выбрать из таблицы запись, которая наиболее точно соответстует выбранным критериям. Значение критерия выбираются из различных справочников и записываюся в таблицу критериев. Но критерий не обязан точно соответствовать значению в справочнике.
Ой... Тогда наверное подойдет то, что посоветовал Dron Aka Andy
Выбор значения из lookup + ввод с клавиатуры

А можно полюбопытствовать, как формулировалась задача пользователями ДО того, как получила такую программистскую формулировку?
__________________
полезное на axForum, github, vk, coub.
Старый 24.05.2007, 17:04   #18  
Lucky13 is offline
Lucky13
Участник
1C
 
714 / 198 (8) ++++++
Регистрация: 21.10.2004
Цитата:
Сообщение от mazzy Посмотреть сообщение
А можно полюбопытствовать, как формулировалась задача пользователями ДО того, как получила такую программистскую формулировку?
Задачу ставил не пользователь, а консультант. В общем так она и звучала как я написал, просто я исключил термины предметной области
Старый 24.05.2007, 17:12   #19  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Цитата:
Сообщение от Lucky13 Посмотреть сообщение
В общем так она и звучала как я написал
Ок. Попробуем с другой стороны.
А чего позволит достичь решение этой задачи с точки зрения пользователей? Какие именно действия облегчит? Какие новые результаты появятся?
__________________
полезное на axForum, github, vk, coub.
Старый 24.05.2007, 17:15   #20  
kashperuk is offline
kashperuk
Участник
Аватар для kashperuk
MCBMSS
Соотечественники
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,361 / 2084 (78) +++++++++
Регистрация: 30.05.2004
Адрес: Atlanta, GA, USA
Насколько я понял - это что-то типа пользовательской фильтрации (SysQueryForm) - только ограниченный набор и самописная.
Теги
lookup, validate, validatefield

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Выбор из справочника используя Lookup Poleax DAX: Программирование 11 08.06.2008 10:23
LookUp. На основе предыдущего значения. Михаил Петрович DAX: Программирование 4 24.10.2007 12:26
multiselect при lookup-е значения типа enum nebula DAX: Программирование 4 14.12.2006 18:56
Как получить значения поля из lookup метода в WEB Dronas DAX: Программирование 5 13.01.2005 10:17
Получение больше одного значения из Lookup tolik DAX: Программирование 1 18.12.2003 11:26
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

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

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

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