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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 20.04.2009, 14:22   #1  
KpecT is offline
KpecT
Участник
 
56 / 10 (1) +
Регистрация: 14.08.2007
Возможность выбирать только из lookup
Как сделать, чтобы на форме в поле можно было выбирать значение только из lookup и нельзя было вводить в ручную?
Пример поле имеет тип CustAccount. В lookup отображаются клинеты с определенной Клиентской групой. Пользователь может сейчас в ручную прописать в поле формы клиента, которого нет в lookup. Как это закрыть?
Старый 20.04.2009, 14:33   #2  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Цитата:
Сообщение от KpecT Посмотреть сообщение
Как сделать, чтобы на форме в поле можно было выбирать значение только из lookup и нельзя было вводить в ручную?
Пример поле имеет тип CustAccount. В lookup отображаются клинеты с определенной Клиентской групой. Пользователь может сейчас в ручную прописать в поле формы клиента, которого нет в lookup. Как это закрыть?
переформулируйте задачу.
вам нужно сделать так, чтобы пользователь мог ввести только разрешенные (валидные) значения.
проверка на валидность поля находится в метода validateField.

Т.е. вам нужно согласованно изменить lookup и validateField.
И не нужно запрещать вводить руками.
__________________
полезное на axForum, github, vk, coub.
Старый 20.04.2009, 14:34   #3  
lev is offline
lev
Ищущий знания...
Аватар для lev
Oracle
MCBMSS
Axapta Retail User
 
1,723 / 491 (20) +++++++
Регистрация: 18.01.2005
Адрес: Москва
Поле в таблице должно быть унаследовано от ExtendedDataType под названием CustAccount, тогда похожие проблемы сами собой решатся
__________________
"Страх перед возможностью ошибки не должен отвращать нас от поисков истины." (с)
С Уважением,
Елизаров Артем
Старый 20.04.2009, 14:35   #4  
klimova_m is offline
klimova_m
Участник
 
43 / 18 (1) ++
Регистрация: 17.11.2008
Адрес: С.Петербург
Можно попробовать сделать проверку на validateField.
Либо сделать релейшн на это поле (если это возможно) и поставить свойство Validate = Yes
А запрещать вводить руками как-то жестоко, плюс лучше все же делать проверки на таблице/датасорсе, а не контролах
__________________
Ты лучше голодай, чем что попало есть,
И лучше будь один, чем вместе с кем попало.
Старый 20.04.2009, 14:38   #5  
lev is offline
lev
Ищущий знания...
Аватар для lev
Oracle
MCBMSS
Axapta Retail User
 
1,723 / 491 (20) +++++++
Регистрация: 18.01.2005
Адрес: Москва
Ещё добавлю, для примера посмотрите таблицу SalesTable поле CustAccount.
__________________
"Страх перед возможностью ошибки не должен отвращать нас от поисков истины." (с)
С Уважением,
Елизаров Артем
Старый 20.04.2009, 14:42   #6  
lev is offline
lev
Ищущий знания...
Аватар для lev
Oracle
MCBMSS
Axapta Retail User
 
1,723 / 491 (20) +++++++
Регистрация: 18.01.2005
Адрес: Москва
Стоп, у Вас создан свой lookup?
тогда свой совет оставлю только для информативности
в вашем случае нужно следовать совету mazzy.
__________________
"Страх перед возможностью ошибки не должен отвращать нас от поисков истины." (с)
С Уважением,
Елизаров Артем
Старый 20.04.2009, 14:43   #7  
KpecT is offline
KpecT
Участник
 
56 / 10 (1) +
Регистрация: 14.08.2007
Переформулирую:
Есть расширенный тип унаследованный от CustAccount, имеет свойство FormHelp блаблаLookup.
В блаблаLookup отображаются только Клиенты, у которых Группа клиенты = ПРОЧ.

На форме я могу в поле выбрать значение только, которые отображаются в lookup, но некоторые умные пользуки вводят клиента в ручную.
Старый 20.04.2009, 15:13   #8  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Цитата:
Сообщение от KpecT Посмотреть сообщение
Переформулирую:
Есть расширенный тип унаследованный от CustAccount, имеет свойство FormHelp блаблаLookup.
В блаблаLookup отображаются только Клиенты, у которых Группа клиенты = ПРОЧ.

На форме я могу в поле выбрать значение только, которые отображаются в lookup, но некоторые умные пользуки вводят клиента в ручную.
а как вы тип у контрола в форме задаете? руками?
если руками, то прописывайте и validateField тоже.
каждый раз в каждой форме, где руками задаете тип контрола.

Если же вы создали свою таблицу, в которой поле вашего типа,
то измените у этой таблицы метод validateField.
__________________
полезное на axForum, github, vk, coub.
Старый 20.04.2009, 15:13   #9  
kashperuk is offline
kashperuk
Участник
Аватар для kashperuk
MCBMSS
Соотечественники
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,361 / 2084 (78) +++++++++
Регистрация: 30.05.2004
Адрес: Atlanta, GA, USA
Вот это может помочь
Запрет редактирования поля
если я правильно понял вопрос
За это сообщение автора поблагодарили: alex55 (1), KpecT (1).
Старый 20.04.2009, 15:15   #10  
propeller is offline
propeller
Участник
Аватар для propeller
 
359 / 29 (1) +++
Регистрация: 25.07.2007
на validateField Сделайте проверку с теми же условиями как у Вас сделано в lookup, если проверка не прошла то возвращайте false с ошибкой. Пользователь не сможет сохранить данные, введенные вручную и не проходящие по Вашему фильтру.
Старый 20.04.2009, 15:41   #11  
KpecT is offline
KpecT
Участник
 
56 / 10 (1) +
Регистрация: 14.08.2007
На самом деле полностью задача звучит так:
Расчет с клиентами/Запросы/Акт сверки
При выборе клиента на форме Акт сверки в зависимости от прав, которые даны пользователю отображать в выпадающем списке (lookup) только клиентов с определенной Группой клиентов.
Старый 20.04.2009, 15:57   #12  
Raven Melancholic is offline
Raven Melancholic
Участник
Аватар для Raven Melancholic
Самостоятельные клиенты AX
Лучший по профессии 2015
 
2,164 / 1293 (48) ++++++++
Регистрация: 21.03.2005
Адрес: Москва-Петушки
Настройте доступ на уровне записи на таблицу клиентов.
Старый 20.04.2009, 16:00   #13  
KpecT is offline
KpecT
Участник
 
56 / 10 (1) +
Регистрация: 14.08.2007
Акт сверки видел?
Старый 20.04.2009, 16:02   #14  
KpecT is offline
KpecT
Участник
 
56 / 10 (1) +
Регистрация: 14.08.2007
Больше всех помог Kashperuk. Но в той теме так и не нашел готового решения
Старый 21.04.2009, 11:21   #15  
Sergey Petrov is offline
Sergey Petrov
Участник
 
80 / 19 (1) ++
Регистрация: 03.04.2007
Адрес: Saint-Petersburg, Russia
Когда-то мне помогло следующее:Чтобы запретить ввод каких-либо посторонних значений в lookup-поле, ограничившись только значениями из выпадающего списка, нужно перекрыть метод validate() на контроле, чтобы он возвращал всегда false. При вводе через выпадающий список это метод не вызывается, а сразу срабатывает modified().Чтобы разрешить ввод каких-либо посторонних значений в lookup-поле, не ограничиваясь только значениями из выпадающего списка, нужно перекрыть метод validate() на поле соответствующего датасурса формы, чтобы он возвращал всегда true.
За это сообщение автора поблагодарили: KpecT (1).
Старый 21.04.2009, 19:03   #16  
plumbum is offline
plumbum
Участник
Соотечественники
 
182 / 86 (3) ++++
Регистрация: 07.12.2007
Адрес: Vienna, AT
Еще (немножко оффтоп, но все же), если признак "правильности" клиента - флаг или enum - добавьте условие по фиксированному полю таблицы.
__________________
http://www.axdevposts.blogspot.com
Пришел, уведел.... отойди, дай другому увидеть!
Старый 22.04.2009, 10:36   #17  
Gustav is offline
Gustav
Moderator
Аватар для Gustav
SAP
Лучший по профессии 2009
 
1,858 / 1152 (42) ++++++++
Регистрация: 24.01.2006
Адрес: Санкт-Петербург
Записей в блоге: 19
Встряну со своим "пятаком". Пришлось делать нечто подобное для поля диалога(!), где, как известно, ни датасорсов, ни релэйшенов. Использовал подход с controlMethodOverload. Поступил радикально - запер пользователя в контроле после ввода "плохого" значения методом leave, который срабатывает всегда:
X++:
public boolean MyDialogField1_leave()
{
    boolean             ret;
    FormStringControl   me = dialog.formRun().controlCallingMethod();
    MyTable	        table;
    ;	
    ret = me.leave(); // как super

    // далее наш функционал, который должен отрабатывать на событие
    select table where table.Field1 == me.text();

    // если указано непустое значение, отсутствующее в списке,
    // то не выпускаем из поля
    if (! table && me.text())
    {
	box::stop('Значение отсутствует в списке!');
        ret = ret && false;
    }
    return ret;
}
Метод размещен в некотором классе, предназначенном для обработки событий именно этого конкретного диалога. Названия полей диалога по умолчанию вида "Fld1_1" динамически заменил на более содержательные: "MyDialogField1" - чтобы не переписывать заголовки методов в классе, если вдруг в дальнейшем придется добавить в диалог новые поля и имена по умолчанию "съедут" (Ax 3.0, SP4).

Ну, а в методе, формирующем собственно диалог, перед вызовом run расположился такой блок операторов:
X++:
    dialog.doInit();

    dialog.formRun().controlMethodOverload( true );
    dialog.formRun().controlMethodOverloadObject( new MyEventHandlerForThisDialog( dialog ));

    dialog.run();
Старый 22.04.2009, 10:52   #18  
Yprit is offline
Yprit
Злыдни
Аватар для Yprit
Злыдни
 
419 / 93 (4) ++++
Регистрация: 22.02.2004
Адрес: СПб
Цитата:
Сообщение от KpecT Посмотреть сообщение
Как сделать, чтобы на форме в поле можно было выбирать значение только из lookup и нельзя было вводить в ручную?
Поставить свойство SearchMode контрола в Search On Typing
За это сообщение автора поблагодарили: AlexArh (1), KpecT (1).
Теги
lookup, validate, validatefield, запрет

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Как убрать автопоиск по "*" для Lookup? Poleax DAX: База знаний и проекты 14 17.03.2009 13:38
Проблема со своим lookup-ом sweeper DAX: Программирование 9 15.01.2009 18:38
Lookup, Company, FeatureKey Владимир Максимов DAX: Программирование 7 18.03.2008 15:14
Создание Lookup формы Maxim Gorbunov DAX: База знаний и проекты 9 26.06.2007 16:44
Динамические Lookup формы. Андрей Василюк DAX: База знаний и проекты 0 07.12.2001 07:07

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

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

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