Имя: Пароль:
1C
1С v8
Проверка корректности данных в поле ввода
,
0 Программисточка
 
02.08.11
17:10
Подскажите, пожалуйста, как правильно реализовать проверку значений, введеных на форме. Мне нужен такой механизм: пользователь вводит значение, я его проверяю и если оно не правильное, то вывожу сообщение об ошибке и не даю выйти из поля ввода, пока не будет введено корректное значение или пользователь вообще откажется от ввода. Такой механизм автоматически реализован при вводе ссылочных типов. Основная проблема у меня в том, чтобы пользователь не мог выйти из поля, введя некорректное значение, и чтобы введеное им значение не затиралось и могло быть исправлено.
1 Alexey87
 
02.08.11
17:11
(0)без фото не взлетит
2 Maxus43
 
02.08.11
17:13
надо поиграть с событием обработка выбора, точно не скажу
3 Программисточка
 
02.08.11
17:14
Как буду дома, поищу обязательно фото :)
4 Maxus43
 
02.08.11
17:15
(3) тут аудитория требовательная. фото с пляжа обязательно)
5 Программисточка
 
02.08.11
17:24
что-то не вижу чем мне может помочь обработка выбора, кроме того, при заполнении текстового поля она не отработает, а мне нужно проверять текст и даты.
Вначале я думала, что СтандартнаяОбработка = Ложь в окончании ввода текста и обработке выбора будет работать так, как мне надо, но что-то не получается
6 Maxus43
 
02.08.11
17:26
(5) да, согласен, тут выбора нет, в окончании ввода текста надо, только сомневаюсь что получится не затирать неправильное или не выйти из поля
7 Программисточка
 
02.08.11
17:28
Ну вот у меня и получается, что пользователь вводит номер договора длинный и сложный, поставил в конце какую-нибудь каку, а я ему "ты фигню ввел" и все стёрла, как-то не по-человечески :)
8 Программисточка
 
02.08.11
17:29
тем более, что он видит, что в других полях (ссылочных) работает по-человечески и обижается :)
9 patapum
 
02.08.11
17:30
проверять при записи, не давать записывать
10 Staffa
 
02.08.11
17:30
(7) запомни в локальной переменной то, что он ввел перед проверкой
11 Программисточка
 
02.08.11
17:34
(9) вариант, но хочется, чтобы он сразу видел где и какая ошибка, а не тогда, когда уже понаделал десяток и решил наконец-то сохраниться. Ну и больше всего смущает наличие такого механизма при стандартной работе системы, нуежели нельзя повторить то, что уже реализовано... Заказчик же видит, как уже работает и гвоорит: "хочу, чтобы в этом поле работало так же, как в том"
12 kosts
 
02.08.11
17:37
(11) При ошибочном вводе, сделай поле ввода красным цветом.
13 Программисточка
 
02.08.11
17:37
(10) запомню, а как мне не позволить ему продолжить редактировать другие поля и оставить в нем некорректное значение. Потом ещё и при записи все на второй раз проверять?
14 Программисточка
 
02.08.11
17:37
(12) о, круто
15 patapum
 
02.08.11
17:38
(11) Заказчик же видит, как уже работает и говорит "хочу, чтобы - предложи ему реализовать, прочитай внушительную лекцию про ссылочные и примитивные типы (только чтоб на свой счет не принял...)
в конце концов после ввода поля выведи предупреждение, и при записи тоже. (12) тоже отлично
16 Программисточка
 
02.08.11
17:39
получается, что все советы направлены на другие способы решения, т.е. повторить встроенный механизм совсем не реально? :(
17 patapum
 
02.08.11
17:41
(16) советы направлены на достижение цели, а не на достижение цели заданным способом. раз никто не советует как повторить, значит никто не видит возможности. да и опять же, зачем?
18 Программисточка
 
02.08.11
17:42
ладно, значит будем раскрашивать и сохранять признак ошибки, чтоб при записи поругаться :)
заказчик-то у меня лояльный, ему маленькой лекции хватит, но здорово же, когда все однотипно работает, а не для каждого поля свой механизм
19 Staffa
 
02.08.11
17:42
я один не понимаю, о каком "встроенный механизм" идет речь?
20 Программисточка
 
02.08.11
17:45
(19) ну вот берешь поле "Контрагент", вводишь туда "Карпупкин" и если у тебя в базе нет карапупкина, то выводится сообщение
"В поле введены некорректные данные. Отменить ввод? Нажмите "Да" для отмены ввода или "Нет" для продолжения редактирования"
21 Программисточка
 
02.08.11
17:46
после ввода Enter нажимаешь :)
22 Staffa
 
02.08.11
17:49
)))) теперь понял
23 Staffa
 
02.08.11
17:51
есть замечательное событие: ОкончаниеВводаТекста
24 patapum
 
02.08.11
17:55
(23) оно не позволит запретить дальше перейти
25 patapum
 
02.08.11
17:58
Процедура НаименованиеПриИзменении(Элемент)
   Если Найти(Наименование, 1) = 0 Тогда
       ЭтаФорма.ТекущийЭлемент = ЭлементыФормы.Наименование;
   КонецЕсли;
КонецПроцедуры

Но срабатывает только при одной попытке уйти с поля. Вторая уже не контролируется - при изменении не возникает
26 Fragster
 
гуру
02.08.11
18:02
а при обновлении?
27 Программисточка
 
02.08.11
18:02
у меня уже была мысль запоминать признак ошибки и в каком поле и при положительном признаке насильно это поле активизировать :) но это аццкий бред
28 Программисточка
 
02.08.11
18:05
я думала может вообще есть какая стандартная функция или другой какой механизм, о котором я не знаю. А то городить такой огород по этому поводу не хочется
29 Fragster
 
гуру
02.08.11
18:09
проверять все поля надо перед записью и скопом выдавать. запрещать выходить из поля при неправильном значении - феерический бред
30 Fragster
 
гуру
02.08.11
18:09
тем более, что в 8.2 можно привязывать сообщения к полям ввода
31 Alexandr Puzakov
 
03.08.11
05:52
Вот, еще один гордый одноэсник девушкой прикинулся, чтобы спросить :)
32 Erhov_egor
 
03.08.11
06:38
Где фотка?
33 John83
 
03.08.11
16:01
(32) наивный - они же все так говорят :)
Чтобы обнаруживать ошибки, программист должен иметь ум, которому доставляет удовольствие находить изъяны там, где, казалось, царят красота и совершенство. Фредерик Брукс-младший