![]() |
![]() |
|
Сохранение значения при отмене редактирования строки ТЧ | ☑ | ||
---|---|---|---|---|
0
IdoL2k
21.06.10
✎
11:21
|
Есть процедура в модуле формы, висящая на событии "ПередОкончаниемРедактирования" табличного поля.
Процедура ТабличноеПолеПередОкончаниемРедактирования(Элемент, НоваяСтрока, ОтменаРедактирования, Отказ) Если НЕ ОтменаРедактирования И Элемент.ТекущаяСтрока.Реквизит_А>Элемент.ТекущаяСтрока.Реквизит_Б Тогда Сообщить("Ошибка заполнения: Реквизит А не может быть больше реквизита Б!", СтатусСообщения.Важное); Отказ=Истина; КонецЕсли; КонецПроцедуры Процедура проверяет условие и не дает пользователю ввести всякую чушь. Все замечательно, но если после попытки неправильного ввода пользователь нажмет клавишу Esc (ОтменаРедактирования=Истина), то введенное значение сохраняется. Какая то неважнецкая отмена редактирования получается... Что делать и как быть? Может какой друго обработчик использовать? |
|||
1
butterbean
21.06.10
✎
11:26
|
а пользователь меняет оба реквизита?
|
|||
2
IdoL2k
21.06.10
✎
11:32
|
1: Может оба, может ни один.. Это имеет значение?
|
|||
3
butterbean
21.06.10
✎
11:35
|
(2) ну по хорошему надо проверять сразу после изменения реквизита пользователем, и отменять изменение этого реквизита
|
|||
4
73
21.06.10
✎
11:38
|
(0) Было такое. Щас уже не помню, почему, но добавил в код после отказ=истина:
ЭтаФорма.ТекущийЭлемент = Элемент; |
|||
5
73
21.06.10
✎
11:39
|
(4)+ Но все равно, как-то неудобно...
|
|||
6
IdoL2k
21.06.10
✎
11:40
|
(3) по-хорошему то надо... Но только поле ввода строки табличного поля не имеет обработчиков, в которых можно было бы отменить изменение :(
|
|||
7
ptiz
21.06.10
✎
11:43
|
Надо ПриНачалеРедактирования запоминать, что было, и при отмене - восстанавливать. Только так.
|
|||
8
IdoL2k
21.06.10
✎
11:50
|
(7) Ну эт понятно, что можно все ручками дописать. Но какая ж логика работу у этого обработчика? Что ж это за отмена редактирования такая, которая не отменяет произведенное редактирование?
|
|||
9
IdoL2k
21.06.10
✎
11:56
|
(4) Не понял зачем это.. Но все равно не спасло
|
|||
10
IdoL2k
21.06.10
✎
12:10
|
Вобщем вся дрянь в том, что значение записывается в ДанныеСтроки еще до вызова обработчика ПередОкончаниемРедактирования. И откатываться стандартными средствами ему некуда.
Решил так: Убрал проверку проверку на ОкончаниеРедактирования. Таким образом, пользователю нужно в любом случае ввести корректные данные, даже в случае если он уже паникует и лупит по "эскейпу". Пусть теперь тыщу раз подумает прежде чем в этот аццкый справочник заходить :) |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |