Имя: Пароль:
1C
1С v8
Как отследить событие выхода из режима редактирования ячейки на таблице в УФ?
,
0 ssalikoff
 
23.07.21
09:30
Здравствуйте
Имеется управляемая форма, на ней таблица.
Для ячейки установлен РежимРедактирования "Вход".
Задача: при завершении редактирования "прыгать" вниз, на следующую строку, для редактирования нижележащей ячейки в следующей строке.
Как отследить событие выхода из режима редактирования этой ячейки? Например, пользователь нажал Enter, Tab или щелкнул мышкой на другую ячейку. ПриИзменении, ОкончаниеВводаТекста и ИзменениеТекстаРедактирования не подходят, поскольку ни одно событие не сработает, если пользователь фактически не менял содержимое ячейки. То есть сделал двойной щелчок — попал в ячейку. Это отлавливается всегда. Ничего не изменил, нажал на Enter. Это не ловится.
Однако есть событие ПриОкончанииРедактирования таблицы формы. Можно использовать его, и оно действительно срабатывает, если хоть в какой-нибудь ячейке таблицы завершено редактирование.
Попробовал его использовать и столкнулся с такой проблемой:
в обработчике события ПриОкончанииРедактирования "Элементы.Таблица.ТекущаяСтрока = НовоеЗначение" не срабатывает, новое значение не присваивается. И на новую строку прыжок не происходит. Та же строчка кода, внутри обработчика события ячейки ПриИзменении отрабатывает корректно.
Может, кто-то знает, как это можно победить?
1 ssalikoff
 
23.07.21
10:17
Проблема в том, что ПередОкончаниемРедактирования курсор находится в строке и сменить ее не может.
Тогда можно попробовать использовать обработчик ожидания. Он отработает только когда завершится обработка события ПередОкончаниемРедактирования. Но это слишком уж "костыльный" метод, кроме того, он вызывает неприятную задержку.
2 Kassern
 
23.07.21
10:24
возможно оповещения тебе помогут
3 ssalikoff
 
23.07.21
12:10
(2) Нет, не поможет. Если Метод Оповестить() вызвать внутри обработчика события ПриОкончанииРедактирования, то обработка оповещения будет выполнена до окончания редактирования таблицы и проблема сохранится