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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 07.11.2007, 09:22   #1  
VasVovec is offline
VasVovec
Участник
Аватар для VasVovec
 
145 / 10 (1) +
Регистрация: 13.04.2007
Заметил что тригер OnValidate не срабатывает (даже если его вызываешь Rec.VALIDATE(SomeField); ), если полю не присваивать значения отличного от его текущего.
Что посоветуете использовать вместо него? Или как его использовать чтоб он срабатывал при каждом вызове?
Старый 07.11.2007, 10:10   #2  
romeo is offline
romeo
Участник
Аватар для romeo
 
564 / 10 (2) +
Регистрация: 31.03.2004
На форме? В таблице? Почему не срабатывает? Срабатывает.
Старый 07.11.2007, 10:41   #3  
RedFox is offline
RedFox
Участник
 
1,441 / 10 (0) +
Регистрация: 28.12.2004
Адрес: Киев
Цитата:
Сообщение от VasVovec Посмотреть сообщение
Заметил что тригер OnValidate не срабатывает (даже если его вызываешь Rec.VALIDATE(SomeField); ), если полю не присваивать значения отличного от его текущего.
Что посоветуете использовать вместо него? Или как его использовать чтоб он срабатывал при каждом вызове?
По идее он должен срабатывать при каждом визове.
А в триггере поля или на форме (незнаю, где Вы смотрите) нет кода типа такого IF Rec.Field <> xRec.Field THEN ...
Старый 07.11.2007, 11:01   #4  
VasVovec is offline
VasVovec
Участник
Аватар для VasVovec
 
145 / 10 (1) +
Регистрация: 13.04.2007
Тригер на поле таблицы. Даже если просто открыть таблицу поставить курсор в записи на это поле и нажать энтер (не меняя значения этого поля), тригер OnValidate не срабатывает. И соответственно если откуда то извне пишешь Rec.VALIDATE(SomeField); и перед этим значения поля не менять - то тригер тоже не сработает. Видимо навижен смотрит на то было ли измененно значение поля или нет. У меня Navision 4 SP2
Старый 07.11.2007, 14:35   #5  
romeo is offline
romeo
Участник
Аватар для romeo
 
564 / 10 (2) +
Регистрация: 31.03.2004
Цитата:
Сообщение от VasVovec Посмотреть сообщение
Тригер на поле таблицы. Даже если просто открыть таблицу поставить курсор в записи на это поле и нажать энтер (не меняя значения этого поля), тригер OnValidate не срабатывает.
А вы считаете это странным? Почему при хождении по полям должен срабатывать триггер OnValidate()? Вот если вы встанете в поле, скопируете и тут же вставите то же самое значение - триггер отработает. Потому что ПОЛЕ ОТВАЛИДЕЙТИЛИ.
Старый 08.11.2007, 05:02   #6  
smoyk is offline
smoyk
Участник
 
188 / 13 (1) ++
Регистрация: 20.04.2007
Цитата:
Сообщение от romeo Посмотреть сообщение
А вы считаете это странным? Почему при хождении по полям должен срабатывать триггер OnValidate()? Вот если вы встанете в поле, скопируете и тут же вставите то же самое значение - триггер отработает. Потому что ПОЛЕ ОТВАЛИДЕЙТИЛИ.
Нет, по моему не сработает. По крайней мере в 3.70А не срабатывает.
Знаю, есть такая бага. В принципе логику разработчиков можно понять: при вводе значения (первый раз или нового) мы вызвали validate, значение проверили (или что мы там делаем, неважно) и следовательно вызывать 2-й раз эту функцию для того же самого значения смысла нет.
В принципе не смертельная фича, логика в большинстве случаев себя оправдывает.
Старый 08.11.2007, 11:42   #7  
RedFox is offline
RedFox
Участник
 
1,441 / 10 (0) +
Регистрация: 28.12.2004
Адрес: Киев
Цитата:
Сообщение от smoyk Посмотреть сообщение
Нет, по моему не сработает. По крайней мере в 3.70А не срабатывает.
Знаю, есть такая бага. В принципе логику разработчиков можно понять: .....
По моему это совершенно не бага. Хочешь проверять значение на обновление - напиши простой цикле и все.
OnValidate работает только на обновление данных. А вот чем обновляется - должен думать программист (внедренец и т.д.), но не как не Core-developer.
Старый 07.11.2007, 11:06   #8  
VasVovec is offline
VasVovec
Участник
Аватар для VasVovec
 
145 / 10 (1) +
Регистрация: 13.04.2007
У меня кроме как вынести код из этого тригера в функцию, и вызывать ее из этого тригера других идей пока нет. А извне соответственно вызывать не триггер VALIDATE, а именно эту функцию. Но внутри таблицы всеравно все попрежнему тупо останется, чтобы тригер сработал надо ввести в поле какое нибуть другое значение а потом опять прежнее :/
Старый 07.11.2007, 11:08   #9  
VasVovec is offline
VasVovec
Участник
Аватар для VasVovec
 
145 / 10 (1) +
Регистрация: 13.04.2007
2 RedFox
Цитата:
А в триггере поля или на форме (незнаю, где Вы смотрите) нет кода типа такого IF Rec.Field <> xRec.Field THEN ...
Конечно нет. Если б все так просто было
Старый 07.11.2007, 14:28   #10  
RedFox is offline
RedFox
Участник
 
1,441 / 10 (0) +
Регистрация: 28.12.2004
Адрес: Киев
Цитата:
Сообщение от VasVovec Посмотреть сообщение
2 RedFox

Конечно нет. Если б все так просто было
1. В тригере пропишите ERROR.
2. На поле, где прописан ERROR, в таблице встаньше и нажмите F2 (обновление поля текущим значением). После этого должна выйти ERROR. Если нет - у меня больше нет идей... (по крайней мере я такого НИКОГДА не встречал).
Старый 07.11.2007, 14:42   #11  
Corleone is offline
Corleone
Участник
 
355 / 10 (1) +
Регистрация: 27.05.2004
Адрес: London
Чего гадать, запости код, который у тебя висит на OnValidate.
Старый 08.11.2007, 11:49   #12  
smoyk is offline
smoyk
Участник
 
188 / 13 (1) ++
Регистрация: 20.04.2007
2 RedFox
Да, в принципе согласен. Наверно "бага" надо было в кавычках написать
Старый 09.11.2007, 09:41   #13  
rov_imported is offline
rov_imported
Участник
 
176 / 10 (1) +
Регистрация: 20.01.2005
В On Lookup надеюсь ничего нет? Т.к. это единственная причина, по которой Validate не будет
срабатывать.
В остальных случаях - должон работать.
Старый 09.11.2007, 10:28   #14  
VasVovec is offline
VasVovec
Участник
Аватар для VasVovec
 
145 / 10 (1) +
Регистрация: 13.04.2007
Я нашел багу у себя при вызове из вне после VALIDATE забыл MODIFY написать, вернее думал тогда что надо.
Старый 09.11.2007, 13:35   #15  
RedFox is offline
RedFox
Участник
 
1,441 / 10 (0) +
Регистрация: 28.12.2004
Адрес: Киев
Цитата:
Сообщение от VasVovec Посмотреть сообщение
...при вызове из вне после VALIDATE забыл MODIFY написать, вернее думал тогда что надо.
не до конца понял что в конце предложения, ну да ладно. Самое главное, что решение нашлось!
Старый 09.11.2007, 13:51   #16  
TRIgor is offline
TRIgor
Участник
 
45 / 10 (1) +
Регистрация: 19.10.2007
А можно подробней и понятней, как разрешилось и в чем бага была?
Старый 09.11.2007, 13:54   #17  
romeo is offline
romeo
Участник
Аватар для romeo
 
564 / 10 (2) +
Регистрация: 31.03.2004
Цитата:
Сообщение от TRIgor Посмотреть сообщение
А можно подробней и понятней, как разрешилось и в чем бага была?
Ну он же написал. Код в триггере OnValidate() таблицы должен был модифицировать судя по всему не поля текущей записи (иначе изменения были бы видны и сохранялись бы формой, при переходе на след запись). Человек написал код по модификации каких-то данных, а оператор MODIFY() зыбыл. В итоге изменения не закреплялись в базе данных. Отчего человек и подумал, что не срабатывает триггер, где был написан код... Смотрел на результат, которого не было.
Старый 09.11.2007, 14:00   #18  
TRIgor is offline
TRIgor
Участник
 
45 / 10 (1) +
Регистрация: 19.10.2007
Цитата:
Сообщение от romeo Посмотреть сообщение
Смотрел на результат, которого не было.
А дебагер на что Вам дан, люююди?
Старый 09.11.2007, 14:06   #19  
romeo is offline
romeo
Участник
Аватар для romeo
 
564 / 10 (2) +
Регистрация: 31.03.2004
Цитата:
Сообщение от TRIgor Посмотреть сообщение
А дебагер на что Вам дан, люююди?
Все сообщения на форуме появились когда дебагер уже существовал... )
И про него даже знали ... )
И знали, для чего он нужен.
Старый 09.11.2007, 14:10   #20  
TRIgor is offline
TRIgor
Участник
 
45 / 10 (1) +
Регистрация: 19.10.2007
Цитата:
Сообщение от romeo Посмотреть сообщение
Все сообщения на форуме появились когда дебагер уже существовал... )
И про него даже знали ... )
И знали, для чего он нужен.
Я не про то)))) я про то, что вопрос звучал бы по другому звучал бы, не почему не вызывается и т.д., а, например, почему не апдейтится и т.д.
Вообще извиняюсь - тема закрыта. Sorry
 


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

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

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 22:45.
Powered by vBulletin® v3.8.5. Перевод: zCarot
Контактная информация, Реклама.