|  | Отловить событие потери фокуса полем ввода | ☑ | 
    
        | 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 мая. Я считаю, что такие проверки нужны.     |  |