![]() |
#1 |
Участник
|
Такая ситуация:
Имметься форма, на форме имеются кнопки.! ![]() При нажатие на одну из кнопок, в событие OnPush уменя сразу идет обращения к кодеюниту! В кодеюните производяться различные операции... Как мне допустим выйти из кодеюнита обратно в событие OnPush,не проходя весь код кодеюнита! ![]() |
|
![]() |
#2 |
Участник
|
|
|
![]() |
#3 |
Участник
|
хорошо..копаем глубже... =)
В кодеюните я вызываю ошибку: // Если поле не заполнено... // Комитом, я останавливаю все действия и вызываю ошибку! IF Setup."Pattern Name" = '' THEN BEGIN COMMIT; ERROR(Text1); END; // Как мне в это случае В Этом Условие выйти из кодеюнита обратно в событие! |
|
![]() |
#4 |
Участник
|
Цитата:
Код: Setup.TESTFIELD("Pattern Name"); |
|
![]() |
#5 |
Участник
|
Это из хелпа про ERROR
Use this function to display an error message and end the execution of C/AL code. Думаю тут надо использовать MESSAGE() а в тексте написать "Ошибка: бла-бла-бла". |
|
![]() |
#6 |
Участник
|
Никогда так не делайте.. Иначе дебагер (о котором вы сами упомянули в теме чуть раньше) никогда не выйдет на эту ошибку.. Если вы хотите потратить в несколько раз больше времени для локализации ошибки - не используйте комбинацию MESSAGE() EXIT(). А то придется искать в одном или нескольких объектах по тексту "Ошибка: бла-бла-бла" вместо того, чтобы активизировать дебаггер и запустить код на выполнение.
|
|
![]() |
#7 |
Участник
|
Ага, и сообщение будет типа Определите поле "Pattern Name" в таблице Setup, что для юзера то же самое что "Программа выполнила недопустимую операцию и будет закрыта".
|
|
![]() |
#8 |
Участник
|
Цитата:
![]() |
|
![]() |
#9 |
Участник
|
Цитата:
Подобные проверки (на заполненность критичных полей) нужно делать ДО, а не после выполнения основного алгоритма. |
|
![]() |
#10 |
Участник
|
Цитата:
Сообщение от romeo
![]() Именно так. Только так. И пользователь программы Навижен должен привыкать ИМЕННО к этому, к такой реации системы. Этот оператор ОДНОЗНАЧНО определяет ключ записи и поле, значение в котором вызвало ошибку. К тому же сообщение об ошибке, присланное юзером разработчику даст последнему более исчерпывающую информацию и возможно сразу подскажет, в каком месте копать..
|
|
![]() |
#11 |
Участник
|
Это сообщение системы. Стандартное. Юзеров много и быть с каждым из них friendly .. А еще некоторые, чтобы быть ближе к пользователям делают отмену учета вместо использования стандартных средств коррекции. Некоторые прописывают юзеров, с которыми нужно быть особенно friendly прямо на открытие форм в строке фильтра .. Ну не заводить же для этого новое поле в таблице Менеджер, выводить это поле в карточку Менеджера и обязать пользователям ставить эту галку кого-то ...
|
|
![]() |
#12 |
Участник
|
Цитата:
Сообщение от romeo
![]() Это сообщение системы. Стандартное. Юзеров много и быть с каждым из них friendly .. А еще некоторые, чтобы быть ближе к пользователям делают отмену учета вместо использования стандартных средств коррекции. Некоторые прописывают юзеров, с которыми нужно быть особенно friendly прямо на открытие форм в строке фильтра .. Ну не заводить же для этого новое поле в таблице Менеджер, выводить это поле в карточку Менеджера и обязать пользователям ставить эту галку кого-то ...
|
|
![]() |
#13 |
Участник
|
|
|
![]() |
#14 |
Участник
|
Цитата:
Сообщение от by_HT
![]() Такая ситуация:
Имметься форма, на форме имеются кнопки.! ![]() При нажатие на одну из кнопок, в событие OnPush уменя сразу идет обращения к кодеюниту! В кодеюните производяться различные операции... Как мне допустим выйти из кодеюнита обратно в событие OnPush,не проходя весь код кодеюнита! ![]() IF CODEUNIT.RUN(MyNumber) THEN; а выход из кодеюнита: ERROR(''); если нужно с откатом EXIT; если без отката |
|
![]() |
#15 |
Участник
|
2 GMC
Слова "Насчет отмены это отдельная история, практика показывает что она в наших условиях нужна. " тербуют пояснения, как слова человека из Лондона ![]() 2 romeo и GMC Думаю все же, истина как всегда где-то посередине. С одной стороны Nav выдает сообщения совершенно безграмотные с точки зрения русского языка (хотя, я конечно не филолог). И думаю, уместно писать сообщения для пользователей об их ошибках на нормальном русском языке. С другой сторононы подгонять систему под нежелание пользователей делать нормальные корректирующие документы считаю крайне вредным делом. |
|
![]() |
#16 |
Участник
|
Конечно все решается на месте, в зависимости от задачи.. Просто давая совет на форуме человеку, который в навижене не очень давно (я имею в виду автора топика) я не хочу чтобы он видел все возможные варианты.. Иначе не совсем хорошо зная возможности системы и функционал он закрепит для себя шаблоны использования операторов, такие как MESSAGE() EXIT() (у нас в компании писалось такое года 4 назад, до сих пор вызывает раздражение когда наталкиваемся), поймет, что использовать COMMIT очень даже удобно (почему нет? никаких дурацких блокировок), будет включать в текст ошибок слова "Уважаемый " + USERID() ... (кому не приятно вспомнить свой логин) и тд. Я хочу, чтобы он сразу знал, что имеет система для борьбы с частовозникающими ситуациями в работе. К тому же TESTFIELD() это собственно не ошибка. Это бескомпромиссное предупреждение о том, что пользователь плохо делает дело, за которое ему платят бабки (посмотрите юниты учета.. думаю неуместно будет в ряд стандартных тестфилдов пихать свою мессагу об ошибке с дружественным интерфейсом).
Лирика .. |
|
![]() |
#17 |
Участник
|
Цитата:
Сообщение от romeo
![]() Конечно все решается на месте, в зависимости от задачи.. Просто давая совет на форуме человеку, который в навижене не очень давно (я имею в виду автора топика) я не хочу чтобы он видел все возможные варианты.. Иначе не совсем хорошо зная возможности системы и функционал он закрепит для себя шаблоны использования операторов, такие как MESSAGE() EXIT() (у нас в компании писалось такое года 4 назад, до сих пор вызывает раздражение когда наталкиваемся), поймет, что использовать COMMIT очень даже удобно (почему нет? никаких дурацких блокировок), будет включать в текст ошибок слова "Уважаемый " + USERID() ... (кому не приятно вспомнить свой логин) и тд. Я хочу, чтобы он сразу знал, что имеет система для борьбы с частовозникающими ситуациями в работе. К тому же TESTFIELD() это собственно не ошибка. Это бескомпромиссное предупреждение о том, что пользователь плохо делает дело, за которое ему платят бабки (посмотрите юниты учета.. думаю неуместно будет в ряд стандартных тестфилдов пихать свою мессагу об ошибке с дружественным интерфейсом).
Лирика .. С TESTFIELD не совсем. Пердставте, что вам вместо кресла за компьютером предложат сидеть на табурете, как на стандартном средстве работы ![]() Не логично и не удобно. Чем юзер хуже? P.S. А вобще можно выделить нужные места цветом, и сказать, что это обязательно для заполнения. Тогда каждый юзер получив сообщение об ошибке и ничего в нем не поняв будет просто перепроверять ввденную информацию с идентификацией по цвету ![]() |
|
![]() |
#18 |
Участник
|
Цитата:
Сообщение от Fordewind
![]() С частью о наставлении на пусть истинный новых программистов полностью согласен.
С TESTFIELD не совсем. Пердставте, что вам вместо кресла за компьютером предложат сидеть на табурете, как на стандартном средстве работы ![]() Не логично и не удобно. Чем юзер хуже? P.S. А вобще можно выделить нужные места цветом, и сказать, что это обязательно для заполнения. Тогда каждый юзер получив сообщение об ошибке и ничего в нем не поняв будет просто перепроверять ввденную информацию с идентификацией по цвету ![]() |
|