Имя: Пароль:
1C
 
УФ. Как правильно пользоваться обработчиком "ИзменениеТекстаРедактирования"?
0 DTX 4th
 
08.02.17
16:51
В общем, есть список контрагентов. Хочу, чтобы при вводе строке в поле ввода, в списке оставались только те строки, где хотя бы в одной и колонок есть введённая строка.
Думал сделать две таблицы, одну со всеми строками, а вторую для отображения на форме с отбором, а в автоподборе текста каждый раз формировать.
Пробую:
&НаКлиенте
Процедура УстановитьОтбор(Текст = "")
    Искать = ВРег(Текст);
    
    Контрагенты.Очистить();
    Если ПустаяСтрока(Текст) Тогда
        Строки = КонтрагентыВсе;
    Иначе
        Строки = Новый Массив;
        Для каждого Стр Из КонтрагентыВсе Цикл
            Если Найти(ВРег(Стр.Код), Искать) > 0
                ИЛИ Найти(ВРег(Стр.Наименование), Искать) > 0
                ИЛИ Найти(ВРег(Стр.Код), Искать) > 0 Тогда
                
                Строки.Добавить(Стр);    
            КонецЕсли;             
        КонецЦикла;
    КонецЕсли;     
    
    Для каждого Стр Из Строки Цикл
        ЗаполнитьЗначенияСвойств(Контрагенты.Добавить(), Стр);        
    КонецЦикла;
КонецПроцедуры


&НаКлиенте
Процедура ПоискИзменениеТекстаРедактирования(Элемент, Текст, СтандартнаяОбработка)
    //СтандартнаяОбработка = Ложь;
    УстановитьОтбор(Текст);
КонецПроцедуры

В итоге отбор работает, но очень криво. Как только срабатывает ИзменениеТекстаРедактирования, введенное значение стирается. ЧЯДНТ?

Если в УстановитьОтбор() оставить только строку "Контрагенты.Очистить();", то значение всё равно будет стираться. А вот если не трогать таблицы формы, то всё ок.
Вот то, что получилось:
http://i.imgur.com/Ou17EmK.gif
1 Aleksandr N
 
08.02.17
16:55
(0) Процедура УстановитьОтбор(Знач Текст = "")
2 DTX 4th
 
08.02.17
17:04
(1) Первым делом подумал. Но Текст не меняет же нигде. В общем, попробовал, не помогло.
3 DTX 4th
 
08.02.17
19:38
Ап
4 DTX 4th
 
09.02.17
10:23
Вверх