Имя: Пароль:
1C
1С v8
Динамический список на форме и элемент ввода
0 Dmitriy_76
 
25.12.13
14:04
Есть динамический список с произвольным запросом с условием.
что то типа
Выбрать
Спр.Ссылка
Из Справочник.Номенклатура КАК Спр
Где Спр.Наименование Подобно (&МойПараметр)

и реквизит формы с типом строка.

Подключил к форме ПодключитьОбработчикОжидания, который вызывает процедуру которая передает в запрос параметр (текст в реквизите формы).
Все работает НО.. текст в элементе формы очищается...и список снова выводится полный.

как победить данную проблему ?

или ЧЯДНТ
1 katc
 
25.12.13
14:10
отключи обработчик ожидания и передавай параметр при изменении поля, заодно при очистке поля или не заполненом значении может не передавать новый пустой параметр
2 WildSery
 
25.12.13
14:10
Где проблема-то?
Что должно произойти при очистке элемента, если не полный список?
3 Dmitriy_76
 
25.12.13
14:15
соори. не так выразился.
ПОЛЕ ввода очищается САМО!!!
не по просьбе пользователя
4 Dmitriy_76
 
25.12.13
14:16
сейчас попробовал через обработчик поля АвтоПодбор.
все равно само очищается
5 WildSery
 
25.12.13
14:18
Либо где-то очищаете реквизит формы, либо это чудо.
Наверное, в 17й строке.
6 Dmitriy_76
 
25.12.13
14:19
не очистки нет. значит ЧУДО :)
7 WildSery
 
25.12.13
14:21
(6) Думаю, самое время привести код. Поскольку у меня почему-то не очищается.
8 Dmitriy_76
 
25.12.13
14:27
&НаКлиенте
Процедура Реквизит2АвтоПодбор(Элемент, Текст, ДанныеВыбора, Ожидание, СтандартнаяОбработка)
    СтандартнаяОбработка = Ложь;
    Реквизит1.Параметры.УстановитьЗначениеПараметра("Наименование","%"+Текст+"%");
КонецПроцедуры

&НаКлиенте
Процедура ПриОткрытии(Отказ)
    Реквизит1.Параметры.УстановитьЗначениеПараметра("Наименование","%");
КонецПроцедуры




сам запрос
ВЫБРАТЬ
    Номенклатура.Наименование,
    Номенклатура.Артикул
ИЗ
    Справочник.Номенклатура КАК Номенклатура
ГДЕ
    Номенклатура.Наименование ПОДОБНО &Наименование



реквизит1 - динамический список
реквизит2 - строка
9 Dmitriy_76
 
25.12.13
14:35
(7) не очищается если использовать при изменении....
а мне надо чтоб фокус оставался в нем..и данные можно было дальше писать
10 Dmitriy_76
 
25.12.13
14:35
остается видимо крайняя мера.. через обычную таблицу значений...
или есть варианты как с ДС победить?
11 Dmitriy_76
 
25.12.13
14:52
(7) ну как отрабатывает данный код?
12 Fedor-1971
 
25.12.13
15:00
(9) Что мешает в обработке события ПриИзменении()установить фокус опять на данный реквизит формы?
Что-то типа: ЭтаФорма.ТекущийЭлемент=ЭлементыФормы.Реквизит2, с поля можно сойти через ТАВ, но при изменении оно будет активироваться снова
13 Dmitriy_76
 
25.12.13
15:03
(12) обработчик при изменении() отрабатывает только при окончании ввода текста (нажатие ентер, потеря фокуса.....)

а мне нужно чтоб пр и каждом изменении отображалось
14 Fedor-1971
 
25.12.13
15:15
попробуй заново создать чистую форму, поскольку форма только с полем и ДС работает.
15 Fedor-1971
 
25.12.13
15:16
(14)+ версия 8.2.18.61
16 WildSery
 
25.12.13
15:16
(8) "СтандартнаяОбработка = Ложь" не означает, что подбор не будет выполняться.
Я сейчас далеко от 1С, не проверю, но рекомендую попробовать заполнять ДанныеВыбора.Добавить(Текст)
17 Dmitriy_76
 
25.12.13
15:25
(16) не сработало..
в ДанныеВыбора сейчас неопределено ...
Написал
    ДанныеВыбора=Новый СписокЗначений;
    ДанныеВыбора.Добавить(Текст);

все равно очищает поле ввода
18 Dmitriy_76
 
25.12.13
15:26
(14) абсолютно новая чистая форма. нарисовал с нуля.
19 WildSery
 
25.12.13
15:48
(18) Повторил ваш код из (8). Поле не очищается.
Одно но - УФ запускается в обычном приложении в режиме совместимости.
Сейчас попробую в управляемом.
20 Dmitriy_76
 
25.12.13
15:52
(19) интерес именно в УФ. спасибо за проявленный интерес.

кстати сделал таблицу значений вместо ДС..
та же фигня
21 WildSery
 
25.12.13
15:55
(20) А в управляемом режиме очищается. Похоже, это какая-то "багофича" от 1С.
22 Dmitriy_76
 
25.12.13
16:10
мдя.....
есть какие варианты как сделать по другому ?
23 Dmitriy_76
 
25.12.13
16:35
сделал так. не коширно. но пока вариантов больше не вижу.

Добавил второе поле ввода, куда и складываю промежуточное / окончательное значение что пользователь наводил..некий буфер
на первое поле повешал кнопку очистки, в обработчик очистки прописал очистку второго поля...
24 WildSery
 
25.12.13
16:42
(22) В свойствах поля ввода для Реквизит2 установите ОбновлениеТекстаРедактирования = Не использовать
25 Dmitriy_76
 
25.12.13
16:58
(24) СУПЕР!!!! спасибо
Независимо от того, куда вы едете — это в гору и против ветра!