8.х Как отловить окончание редактирования ЯЧЕЙКИ Табличного поля

Тема в разделе "Конфигурирование на платформе "1С:Предприятие 8"", создана пользователем KILogin, 5 июл 2008.

  1. TopicStarter Overlay
    KILogin
    Offline

    KILogin

    Регистрация:
    4 июл 2008
    Сообщения:
    7
    Симпатии:
    0
    Баллы:
    1
    Необходимо обработать данные после ввода их в ячейку. Я рассмотрел события Табличного поля:
    Выбор - не подходит, так как происходит в момент начала редактирования и ячейка содержит еще старые данные.
    ПередОкончаниемРедактирования - не подходит, так как происходит при окончании редактирования строки, а не ячейки.

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

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

    Вопрос: Как отловить окончание редактирования ЯЧЕЙКИ Табличного поля?
  2. BabySG
    Offline

    BabySG Администраторы Команда форума Администратор

    Регистрация:
    10 июн 2007
    Сообщения:
    11.853
    Симпатии:
    12
    Баллы:
    29
    Вобще-то событие так и называется - ОкончаниеВводаТекста
  3. TopicStarter Overlay
    KILogin
    Offline

    KILogin

    Регистрация:
    4 июл 2008
    Сообщения:
    7
    Симпатии:
    0
    Баллы:
    1
    ОкончаниеВводаТекста - такого события у меня на панели свойств Табличного поля нет! Может его надо создать програмно? Тогда как?
  4. BabySG
    Offline

    BabySG Администраторы Команда форума Администратор

    Регистрация:
    10 июн 2007
    Сообщения:
    11.853
    Симпатии:
    12
    Баллы:
    29
    Так надо смотреть события ЯЧЕЙКИ поля
  5. TopicStarter Overlay
    KILogin
    Offline

    KILogin

    Регистрация:
    4 июл 2008
    Сообщения:
    7
    Симпатии:
    0
    Баллы:
    1
    Доброго времени суток! Несколько дней не было интернета. За это время я решил проблему, способом описанным ниже. Сразу хочу сказать, что событие ОкончаниеВводаТекста у ячейки мне не удалось использовать по причине формирования Табличного поля программно. А когда Табличное поле формируется программно ячейки на этапе редактирования формы отсутствуют, таким образом до свойств ячейки не добраться. Вероятно эту проблему можно было бы решить еще и созданием обработчиков событий, но я в них не разобрался, пока.

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

    Решение:

    Код:
    // Начало редактирования строки в нижней таблице
    Процедура табНижняяПриНачалеРедактирования(Элемент, НоваяСтрока, Копирование)
    // Глобальная переменная, отражающая редактируется ли строка нашей таблицы сейчас.
    РежимРедактированияНижнейСтроки = Истина; 
    КонецПроцедуры
    
    // Завершение редактирования строки в нижней таблице
    Процедура табНижняяПередОкончаниемРедактирования()
    // Без этого Платформа самостоятельно не обновляет, почему-то...    
    ЭлементыФормы.табНижняя.ОбновитьСтроки(); 
    
    РежимРедактированияНижнейСтроки = Ложь;
    КонецПроцедуры
    
    Процедура табНижняяПриПолученииДанных(Элемент, ОформленияСтрок)
    ТаблицаНижняя = ЭлементыФормы.табНижняя;
    
    // Проверяем, данные таблицы те ли, что нам нужны?
    Если ТаблицаНижняя.Данные = ТоЧтоНамНадо И РежимРедактированияНижнейСтроки = Истина Тогда
    //Обрабатываем значение нужной ячейки
    Значение = ТаблицаНижняя.ТекущаяСтрока["НужнаяКолонка"];
    КонецЕсли;
    КонецПроцедуры
    
    
    Если что не понятно, спрашивайте. :unsure:
  6. BabySG
    Offline

    BabySG Администраторы Команда форума Администратор

    Регистрация:
    10 июн 2007
    Сообщения:
    11.853
    Симпатии:
    12
    Баллы:
    29
    Точно также можно программно назначить обработчик события - изучите функционал и жить будет легче :)

Поделиться этой страницей