Помощь - Поиск - Пользователи - Календарь
Полная версия: Как отловить окончание редактирования ЯЧЕЙКИ Табличного поля
1C-PRO - Форум по 1С > Форумы по платформе "1С:Предприятие 8.x" > (8.х) Конфигурирование на платформе "1С:Предприятие 8.x"
Князь Игорь
Необходимо обработать данные после ввода их в ячейку. Я рассмотрел события Табличного поля:
Выбор - не подходит, так как происходит в момент начала редактирования и ячейка содержит еще старые данные.
ПередОкончаниемРедактирования - не подходит, так как происходит при окончании редактирования строки, а не ячейки.

ПриПолученииДанных - почти подходит, если бы не одно НО: при обходе ячеек Табличного поля с заполнением по нажатию ENTER, при входе в новую получаем начальные данные ячейки, в зависимости от типа данных (для числа получаем значение ноль). А пользователь то еще ничего не ввел!!! А событие произошло, т.е. система подставила число ноль и сгенерировала событие ПриПолученииДанных. При остальных обходах (ТАБ) или непосредственно редактирование ячейки (кликом мыши) все замечательно! Как это можно обойти?

ВыборЗначения - событие не происходит при вводе.
ПриОкончанииРедактирования - не подходит, так как происходит при окончании редактирования строки, а не ячейки.
ОбработкаВыбора - событие не происходит при вводе.

Вопрос: Как отловить окончание редактирования ЯЧЕЙКИ Табличного поля?
BabySG
Вобще-то событие так и называется - ОкончаниеВводаТекста
Князь Игорь
ОкончаниеВводаТекста - такого события у меня на панели свойств Табличного поля нет! Может его надо создать програмно? Тогда как?

BabySG
Так надо смотреть события ЯЧЕЙКИ поля
Князь Игорь
Доброго времени суток! Несколько дней не было интернета. За это время я решил проблему, способом описанным ниже. Сразу хочу сказать, что событие ОкончаниеВводаТекста у ячейки мне не удалось использовать по причине формирования Табличного поля программно. А когда Табличное поле формируется программно ячейки на этапе редактирования формы отсутствуют, таким образом до свойств ячейки не добраться. Вероятно эту проблему можно было бы решить еще и созданием обработчиков событий, но я в них не разобрался, пока.

Итак: стояла задача отловить окончание редактирования ЯЧЕЙКИ Табличного поля
Еще оговорюсь Табличное поле формируется нажатием кнопок. Т.е. при нажатии одной Табличное поле получает в качестве данных одну Таблицу значений, а при нажатии другой кнопки - другую Таблицу значений.

Решение:

Код
// Начало редактирования строки в нижней таблице
Процедура табНижняяПриНачалеРедактирования(Элемент, НоваяСтрока, Копирование)
// Глобальная переменная, отражающая редактируется ли строка нашей таблицы сейчас.
РежимРедактированияНижнейСтроки = Истина;
КонецПроцедуры

// Завершение редактирования строки в нижней таблице
Процедура табНижняяПередОкончаниемРедактирования()
// Без этого Платформа самостоятельно не обновляет, почему-то...
ЭлементыФормы.табНижняя.ОбновитьСтроки();

РежимРедактированияНижнейСтроки = Ложь;
КонецПроцедуры

Процедура табНижняяПриПолученииДанных(Элемент, ОформленияСтрок)
ТаблицаНижняя = ЭлементыФормы.табНижняя;

// Проверяем, данные таблицы те ли, что нам нужны?
Если ТаблицаНижняя.Данные = ТоЧтоНамНадо И РежимРедактированияНижнейСтроки = Истина Тогда
//Обрабатываем значение нужной ячейки
Значение = ТаблицаНижняя.ТекущаяСтрока["НужнаяКолонка"];
КонецЕсли;
КонецПроцедуры



Если что не понятно, спрашивайте. cowboy.gif

BabySG
Точно также можно программно назначить обработчик события - изучите функционал и жить будет легче :)
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.
Русская версия Invision Power Board © 2001-2009 Invision Power Services, Inc.