Имя: Пароль:
1C
1С v8
Отловить событие потери фокуса полем ввода
0 dizpers
 
22.05.12
21:00
Есть поле ввода с датой. После ввода этой даты мне надо ее проверить - если дата меньше текущей, то вывести сообщение об ошибке, поставить фокус на поле ввода и ждать пока пользователь снова введет данные, как только ввел новые данные - снова проверить и тд

Пробую делать вот так

на событие ПриИзменении поля вешаю процедуру с таким кодом (ДатаСеанса - реквизит документа, связанный с этим полем ввода)


   Если ДатаСеанса < НачалоДня(ТекущаяДата()) Тогда
       Режим = РежимДиалогаВопрос.ДаНет;
       Если Вопрос("Нельзя купить билет на старую дату. Установить сегодняшнюю дату?", Режим, 0) = КодВозвратаДиалога.Да Тогда
           ДатаСеанса = НачалоДня(ТекущаяДата());
       Иначе
           Возврат
       КонецЕсли
   КонецЕсли;

При этом что получаю - неправильно ввел дату, выпало сообщение об ошибке, нажал ДА - все ок, дата текущая. Но в другом кейсе - когда нажал нет, дата осталась введенная неправильно и при нажатии к примеру кнопки таб фокус переключается на след. элемент и в итоге - кривая дата в поле ввода.

Первая идея, которая пришла в голову по поводу решения этой проблемы - как то отловить перевод фокуса на другой элемент. Но не знаю как сделать такое. Подскажите, пожалуйста, как такую проблему решить?
1 vicof
 
22.05.12
21:20
Проверяй в событии ПередЗаписью
2 МихаилМ
 
22.05.12
21:23
"поставить снова фокус" - а если пользователь не хочет вводить данный а хочет закрыть окно
3 dizpers
 
22.05.12
21:26
(2) после установки фокуса нажмет esc
4 dizpers
 
22.05.12
21:27
(1) в зависимости от выбранной даты подгружаются различные массивы данных в списки выбора (фильмы по данной дате например)

а событие перед записью сработает когда по идее нажали ОК в форме документа
5 aleks-id
 
22.05.12
21:28
Иначе
           Сообщить("А вот хрен тебе, умник!");
           ДатаСеанса = НачалоДня(ТекущаяДата());
       КонецЕсли
6 dizpers
 
22.05.12
21:32
(5) кстати, как вариант - не спрашивать пользователя вообще, если указал кривую дату, сообщить об этом и установить сегодняшнюю
7 vicof
 
22.05.12
21:55
(4) Так это проблемы пользователя уже. Захотел на одну дату, захотел - на другую.
8 dizpers
 
22.05.12
22:17
(7) Ну просто не логично продавать билеты на 1 января, если сейчас 23 мая. Я считаю, что такие проверки нужны.