Имя: Пароль:
1C
1С v8
Тайны платформы 8.3.7 в плане отбора
0 strange2007
 
05.02.16
15:19
Доброго времени суток. Уже создал микро конфу, в которой пытаюсь побороть глюк, но пока даже не знаю куда рыть. Может кто сходу решил проблему глюка:
Есть форма выбора справочника. Над списком есть обычное текстовое поле, которое при набирании символов вызывает обработчик "ИзменениеТекстаРедактирования(Элемент, Текст, СтандартнаяОбработка)".

Там есть код отбора для списка
    ЭлементОтбора = Список.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
    ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Наименование");
    ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.НачинаетсяС;
    ЭлементОтбора.Использование = Истина;
    ЭлементОтбора.ПравоеЗначение = Текст;

Так вот при введении любого символа всё стирается. Если код установки отбора коментирую и ставлю что угодно (например, сообщить), то всё нормально, текст не стирается. Стоит отбор перенести на кнопку. Т.е. текст вводишь, нажимаешь на кнопку и тоже всё нормально. Но если делать посимвольный отбор, то всё стирается хоть тресни.

Уважаемые специалисты по ЦФ, подскажите куда глянуть по этой волшебной фиче от платформы 8.3.7.

Спасибо.
1 Cyberhawk
 
05.02.16
15:22
Попробуй добавлять не в отбор списка, а в пользовательский отбор компоновщика настроек этого списка
2 Cyberhawk
 
05.02.16
15:24
Обработчик события "АвтоПодбор" у поля есть?
3 strange2007
 
05.02.16
15:25
Пока нашёл решение. В общем после изменения отбора, я закидываю текст обратно в реквизит. Но тогда курсор в текстовом поле становится в начало строки. Что ещё можно попробовать? Но отбор нужен сильно и сделать надо что-то.
4 strange2007
 
05.02.16
15:25
(2) Да, есть. Но я ещё не понял зачем он нужен(((
5 Cyberhawk
 
05.02.16
15:26
Ну стандартную обработку в ложь тогда выставляй, а то у тебя АвтоПодбор зовется следом
Либо свой код перенеси в обработчик события АвтоПодбор
6 strange2007
 
05.02.16
15:27
(5) Выставлял и в Ложь и в Истина. Исчезает текст и всё тут. Если успеваю 2 символа ввести, то хорошо
7 strange2007
 
05.02.16
15:27
(1) А это как? Как к нему добраться?
8 strange2007
 
05.02.16
15:28
Нет, я всё понимаю, но как это связано с отбором списка? Почему именно отбор и именно список?
9 strange2007
 
05.02.16
15:32
Уже в отбор просто текст подсовываю, даже не из текстового поля. Стирает и всё тут. Как такое возможно??????
10 Fragster
 
гуру
05.02.16
15:34
ТекстРедактирования
11 Fragster
 
гуру
05.02.16
15:35
отставить. Надо не делать серверный вызов в этом событии. Например сделать установку отбора через обработчик ожидания.
12 strange2007
 
05.02.16
15:36
(11) Я через Оповещение попробовал. Всё тоже самое
13 Fragster
 
гуру
05.02.16
15:37
кстати, в (10) тоже правда. нужно поставить свойство Обновление текста редактирования.
14 Fragster
 
гуру
05.02.16
15:37
(12) оповещение <> обработка ожидания...
15 Fragster
 
гуру
05.02.16
15:37
в (13) - у поля ввода
16 Fragster
 
гуру
05.02.16
15:39
или присваивай своему реквизиту значение = Текст в обработчике события
17 strange2007
 
05.02.16
15:40
(13) ЗАРАБОТАЛО!!!!!!!!!
Спасибо всем неравнодушным. Вот никогда бы не догадался до такой связи - "отбор в другом списке" и "отображение текста"
18 Fragster
 
гуру
05.02.16
15:41
(17) не "отбор", а серверный вызов причина.
19 strange2007
 
05.02.16
15:45
(18) т.е. как? на клиенте отбор сервер вызывает? А как это с текстом связано?
20 Fragster
 
гуру
05.02.16
16:12
(19) при установке отбора вызывается сервер. на сервер уходят значения реквизитов. а пока ты из поля не вышел - значение реквизита не изменилось, т.е. на сервер уходит не то, что ты видишь. потом с сервера оно возвращается и записывается в поле, соответственно, стирая то, что ты туда навводил.

Подобный костыль можно увидеть в типовых и в БСП в Контактной информации, например - там, как раз, отправляется текст редактирования, потому что в реквизите значение еще не изменилось, а на сервер надо отправить то, что в поле ввода.
21 strange2007
 
05.02.16
16:17
(20) "Не стыдно не уметь, стыдно не учиться" (с)
Спасибо, не знал этой тонкости.