Последовательность событий установки флажка и активизации строки. УФ
В процессе работы с проектом, разбираясь в чужом коде, обнаружил странную проблему — если поставить галочку, то отрабатывает логика не текущей строки, а предыдущей, которая была активна до установки галочки.
Например, при работе в списке групп при пометке группы показываются все товары из этой группы. А получалось, что я ставлю пометку на новую группу, а показываются товары той группы, в которой была строка списка групп до установки пометки.
Проверка отладчиком показала, что сначала вызывается событие активизации строки, а потом только событие изменения поля — так и должно быть.
В чем же дело?
Оказалось, что активизация строки обрабатывается не сразу, а через подключение обработчика ожидания. Я сталкивался с таким подходом и сам его применял в управляемых формах. Правда, зачем, не помню — но что-то там не все хорошо с работой непосредственно в событии активизации строки.
Тогда я сделал аналогично — в событии при изменения поля тоже подключил обработчик. Если время срабатывания одинаковое, то обработчики вызываются в том порядке, в каком были подключены.
После этого глюк исчез. Код такой:
Потом ОбработатьАктивизациюСтроки, ОбработатьГруппыПометка
&НаКлиенте Процедура ГруппыПриАктивизацииСтроки(Элемент) ПодключитьОбработчикОжидания("ОбработатьАктивизациюСтроки", 0.3, Истина); КонецПроцедуры &НаКлиенте Процедура ГруппыПометкаПриИзменении(Элемент) ЭтаФорма.ПодключитьОбработчикОжидания("ОбработатьГруппыПометка", 0.3, Истина); КонецПроцедуры //-------------------------------------------------------------------------------- &НаКлиенте Процедура ОбработатьАктивизациюСтроки() //Действия по активизации строки КонецПроцедуры &НаКлиенте Процедура ОбработатьГруппыПометка() //Действия при установке пометки КонецПроцедуры
Думаю 0.3 можно заменить на 0.1, но изначально стояло 0.3, решил не трогать то, что работает.
Свежие комментарии