|
Фильтрация динамического списка | ☑ | ||
---|---|---|---|---|
0
mns123
20.02.15
✎
14:33
|
На форме есть текстовое поле. Хочу чтобы при вводе текста в поле список динамический список фильтровался по полю значению которого начинается с введенного текста. Текст наименование серии.
В событии ИзменениеТекстаРедактирования пытаюсь установить отбор Если НЕ Текст = "" Тогда Остатки.Отбор.Элементы.Очистить(); НовыйОтбор = Остатки.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных")); НовыйОтбор.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("СерияНоменклатуры.Наименование"); НовыйОтбор.ВидСравнения = ВидСравненияКомпоновкиДанных.НачинаетсяС; НовыйОтбор.ПравоеЗначение = Текст; НовыйОтбор.Использование = Истина; Иначе Остатки.Отбор.Элементы.Очистить(); КонецЕсли; Почему-то после обработки события текст из поля очищается. Что я делаю не так? |
|||
1
ejikbeznojek
20.02.15
✎
14:49
|
Ну если другого кода нет. То логично предположить что текст очищается строчками где есть "" или очистить
Посмотри просто в отладке в какой момент текст становится равным "". |
|||
2
IamAlexy
20.02.15
✎
14:50
|
в базе на основе бухни делают так:
&НаКлиенте Процедура СтрокаПоискаПриИзменении(Элемент) Если СтрДлина(СтрокаПоиска)>0 Тогда ОбщегоНазначенияКлиентСервер.УстановитьЭлементОтбораДинамическогоСписка(Список,"Информационнаястрока",СтрокаПоиска,ВидСравненияКомпоновкиДанных.Содержит,,Истина); Иначе ОбщегоНазначенияКлиентСервер.УдалитьЭлементыГруппыОтбораДинамическогоСписка(Список,"Информационнаястрока"); КонецЕсли; КонецПроцедуры и соответственно // Добавить или заменить существующий элемент отбора динамического списка. // // Параметры: // ДинамическийСписок - ДинамическийСписок - реквизит формы, для которого требуется установить отбор. // ИмяПоля - Строка - имя поля компоновки данных (заполняется всегда). // ПравоеЗначение - произвольный - сравниваемое значение. // ВидСравнения - ВидСравненияКомпоновкиДанных - вид сравнения. // Представление - Строка - представление элемента компоновки данных. // Использование - Булево - использование элемента. // РежимОтображения - РежимОтображенияЭлементаНастройкиКомпоновкиДанных - режим отображения. // ИдентификаторПользовательскойНастройки - Строка - см. ОтборКомпоновкиДанных.ИдентификаторПользовательскойНастройки // в синтакс-помощнике. // Процедура УстановитьЭлементОтбораДинамическогоСписка(ДинамическийСписок, ИмяПоля, ПравоеЗначение = Неопределено, ВидСравнения = Неопределено, Представление = Неопределено, Использование = Неопределено, РежимОтображения = Неопределено, ИдентификаторПользовательскойНастройки = Неопределено) Экспорт Если РежимОтображения = Неопределено Тогда РежимОтображения = РежимОтображенияЭлементаНастройкиКомпоновкиДанных.Недоступный; КонецЕсли; Если РежимОтображения = РежимОтображенияЭлементаНастройкиКомпоновкиДанных.Недоступный Тогда ОтборДинамическогоСписка = ДинамическийСписок.КомпоновщикНастроек.ФиксированныеНастройки.Отбор; Иначе ОтборДинамическогоСписка = ДинамическийСписок.КомпоновщикНастроек.Настройки.Отбор; КонецЕсли; УстановитьЭлементОтбора( ОтборДинамическогоСписка, ИмяПоля, ПравоеЗначение, ВидСравнения, Представление, Использование, РежимОтображения, ИдентификаторПользовательскойНастройки); КонецПроцедуры |
|||
3
IamAlexy
20.02.15
✎
14:52
|
ну и далее - можно все в типовой бп3 подсмотреть
|
|||
4
mns123
20.02.15
✎
15:07
|
Вот весь текст, Поле с текстом очищается в момент срабатывания отбора
&НаКлиенте Процедура ОтборСерийИзменениеТекстаРедактирования(Элемент, Текст, СтандартнаяОбработка) Если НЕ Текст = "" Тогда Остатки.Отбор.Элементы.Очистить(); НовыйОтбор = Остатки.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных")); НовыйОтбор.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("СерияНоменклатуры.Наименование"); НовыйОтбор.ВидСравнения = ВидСравненияКомпоновкиДанных.НачинаетсяС; НовыйОтбор.ПравоеЗначение = Текст; НовыйОтбор.Использование = Истина; Иначе Остатки.Отбор.Элементы.Очистить(); КонецЕсли; КонецПроцедуры |
|||
5
kochurovg
20.02.15
✎
15:14
|
Попробуй использовать событие ПриИзменении
|
|||
6
mns123
20.02.15
✎
15:15
|
2 А что в процедуре УстановитьЭлементОтбора()
|
|||
7
borodin
27.02.15
✎
04:55
|
В свойствах элемента формы, связанного с строкой поиска, есть свойство ОбновлениеТекстаРедактирования - установи значение в
"При изменении значения" и всё у тебя получиться. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |