|
![]() |
#1 |
MCTS
|
Помниться была в четверке фича: если значение в контроле измененяется с помощью выбора из лукапа, то метод validate на этом контроле почему-то не отрабатывает. Может задача как-то связана с этой фичей?
__________________
Dynamics AX Experience Последний раз редактировалось CDR; 15.03.2011 в 11:30. |
|
![]() |
#2 |
Участник
|
Цитата:
Точно, наверно речь идет о различиях работы метода validate() в двух случаях:
В нашем сценарии пользователь два раза покинет контрол - то есть два раза вызавиться метод validate(). Вопрос был какие результаты он покажет (пройдет валидация или нет в обоих случиях) при данной реализации. Цитата:
?! Как должно быть или как будет в конкретной версии?
Цитата:
Хм.. Прошу не топтать в случае ошибки, отвечаю честно, без примера. Вроде бы должно быть так:
1) Сработает перекрытый validate - выкинет ошибку 2) Сработает табличный validate, который тоже выкинет ошибку
__________________
Thx, Ievgenii Korovin| Dynamics Ax SCM| Microsoft Corp| http://blogs.msdn.com/DynamicsAxSCM/ ![]() Последний раз редактировалось Ievgenii; 15.03.2011 в 11:43. |
|
![]() |
#3 |
MCP
|
Все-таки сделал пример:
1. Если контрол связан с источником данных - система запустит validate написанный на контроле, потом modified на контроле, потом validate на таблице. 2. Если контрол не привязан к источнику данных, но привязан к EDT, система запустит validate только в случае ручного ввода текста в поле. Если выбрать значение из лукапа - validate написанный на контроле вообще не отработает. И еще одна интересная особенность: ваш пример выкидывает 2 одинаковые ошибки: "validation failed". Причем, если поставить breakpoint на info.add() и пройтись отладчиком, то в система выкидывает только одну ошибку. Последний раз редактировалось kornix; 15.03.2011 в 11:59. |
|
![]() |
#4 |
Участник
|
Цитата:
1. Если контрол связан с источником данных - система запустит validate написанный на контроле.
Цитата:
, потом modified на контроле, потом validate на таблице.
Обратите внимание на:
__________________
Thx, Ievgenii Korovin| Dynamics Ax SCM| Microsoft Corp| http://blogs.msdn.com/DynamicsAxSCM/ ![]() |
|
![]() |
#5 |
MCP
|
Тогда получается совсем круто, выводится 2 сообщения:
1. "validation is ok" 2. "Значение не найдено.." Связано это вот с чем: сначала система попадает в validate на formStringControl'е, при первом вхождении в него метод valueStr() возвращает только то что было выбрано из лукапа. А потом система выполняет проверку уже по связям с источником данных, и причем в этой проверке сравнивается корректное введеное пользователем значение. А по поводу: Цитата:
4. Возращает курсор на поле первого контрола и вводит опять валидное значение (GW)
Версия DAX4.0 Kernel 4.0.2503.454 Последний раз редактировалось kornix; 15.03.2011 в 13:08. |
|
|
За это сообщение автора поблагодарили: Ievgenii (3). |
![]() |
#6 |
Участник
|
Цитата:
Тогда получается совсем круто, выводится 2 сообщения:
1. "validation is ok" 2. "Значение не найдено.." Связано это вот с чем: сначала система попадает в validate на formStringControl'е, при первом вхождении в него метод valueStr() возвращает только то что было выбрано из лукапа. А потом система выполняет проверку уже по связям с источником данных, и причем в этой проверке сравнивается корректное введеное пользователем значение. ![]() В Dynamics Ax2009 + в кастомизациях наших партнеров есть формы которые используют valueStr() при валидации, модификции контролов и так далее. Это приводит к очень странному поведению в более сложных случиях, по-этому следует использовать text() метод если нужна подобная валидация. В Dynamics Ax 2012 куча новых возможностей валидации контролов и такой проблемы быть не должно (очень редко)
__________________
Thx, Ievgenii Korovin| Dynamics Ax SCM| Microsoft Corp| http://blogs.msdn.com/DynamicsAxSCM/ ![]() |
|
|
За это сообщение автора поблагодарили: kornix (1). |
Теги |
validate, как правильно, метод |
|
|