|
Запрет перевода фокуса в табличной части | ☑ | ||
---|---|---|---|---|
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
|
Хотя наверное мучать так пользователя не очень хорошая практика, как думаете? Будет он тыкать в это поле какие-то значения, получая неинформативные сообщения об ошибке. В конце концов ему это надоест. Если мыслить так, то лучше проверять при вводе все строке табличной части. Учитывая то, что у меня два поля ввода в строке табличной части будут таким образом проверяться - интервал времени - начало и конец.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |