|
Запрет перевода фокуса в табличной части |
☑ |
0
dizpers
21.05.12
✎
10:18
|
Здравствуйте! Есть форма документа. На форме есть табличное поле для редактирования табличной части документа. В табличном поле есть два поля ввода.Мне нужно сделать проверку вводимых в первое поле данных, и если поле не прошло проверку, то вывести сообщение и установить фокус на этом же поле (чтобыпользователь продолжил редактирование данных в этом поле).
Делаю следующим образом.
Процедура ТабличнаяЧасть1ВремяНачалаПриИзменении(Элемент)
СтрокаТабличнойЧасти = ЭлементыФормы.ТабличнаяЧасть1.ТекущаяСтрока;
тзВремяСеансов = ПолучитьВремяСеансов(СтрокаТабличнойЧасти.Зал, СтрокаТабличнойчасти.Дата);
Для Каждого ВремяСеанса Из тзВремяСеансов Цикл
Если Элемент.Значение >= ВремяСеанса.ВремяНачала И Элемент.Значение <= ВремяСеанса.ВремяОкончания Тогда
Режим = РежимДиалогаВопрос.ОК;
Вопрос("Неверная дата начала!", Режим, 0);
Возврат;
КонецЕсли;
КонецЦикла;
КонецПроцедуры
Но после возврата из процедуры фокус падает на следующий элемент. В чем проблема?
|
|
1
Wobland
21.05.12
✎
10:20
|
(0) ПриОкончанииРедактирования не думал?
|
|
2
dizpers
21.05.12
✎
10:31
|
В свойствах поля табличной части в редакторе форм не вижу такого события. Или его надо как-то программно назанчить?
|
|
3
Wobland
21.05.12
✎
10:31
|
(2) это у ТП
|
|
4
Wobland
21.05.12
✎
10:31
|
(3) просто там есть такие штуки как Элемент, НоваяСтрока, ОтменаРедактирования
|
|
5
dizpers
21.05.12
✎
10:36
|
Я так понимаю это событие срабатывает после ввода всей строки ТЧ. А мне бы хотелось обработать окончание редактирования конкретного поля, поэтому использую ПриИзменении()
|
|
6
dizpers
21.05.12
✎
18:05
|
ап
Так что - нет что ли способа вернуть фокус на отредактированный элемент после вывода сообщения об ошибке?
|
|
7
dizpers
21.05.12
✎
18:55
|
Поэкспериментировав я понял, что проблема не конкретно в фокусе, а в том, что после использования процедуры "Возврат" мы попадаем в основной поток программы и события обрабатываются в обычном порядке. То есть
1. ввели данные в поле1
2. нажали таб
3. сработало событие ПриИзменении()
4. проверяем условие - корректны ли введенные данные
5. проверили их, они некорректные
6. выдаем сообщение об ошибке
7. делаем "Возврат"
8. обрабатывается нажатый в пункте 2 таб (или другое событие)
а мне надо, чтобы на шаге 8 фокус вернулся на поле1 и пока пользователь не введет корректные данные - мучать его
|
|
8
dizpers
21.05.12
✎
19:00
|
Хотя наверное мучать так пользователя не очень хорошая практика, как думаете? Будет он тыкать в это поле какие-то значения, получая неинформативные сообщения об ошибке. В конце концов ему это надоест. Если мыслить так, то лучше проверять при вводе все строке табличной части. Учитывая то, что у меня два поля ввода в строке табличной части будут таким образом проверяться - интервал времени - начало и конец.
|
|