|
|
|
v8: Как обработать набор текста в поле ввода | ☑ | ||
|---|---|---|---|---|
|
0
Siberia
05.08.10
✎
08:49
|
Есть поле ввода в табличном поле. В нем находится ссылка на справочник. Набираем первые буквы названия элемента справочника, нажимаем ентер. Если в справочнике несколько элементов с названием, которое начинается на эти первые буквы, то выпадает список выбора с этими элементами.
Подскажите, где, в какой процедуре можно найти этот список и обработать его? |
|||
|
1
Cheater
05.08.10
✎
08:53
|
(0)АвтоПодборТекста (AutoCompleteText)
Синтаксис: АвтоПодборТекста(<Текст>, <Текст авто-подбора>, <Стандартная обработка>) Параметры: <Текст> Тип: Строка. Строка текста, введенная в поле ввода. <Текст авто-подбора> Тип: Строка. После завершения обработки события содержит текст для размещения в поле ввода. <Стандартная обработка> Тип: Булево. В данный параметр передается признак выполнения стандартной (системной) обработки события. Если в теле процедуры-обработчика установить данному параметру значение Ложь, стандартная обработка события производиться не будет. Значение по умолчанию: Истина Описание: Возникает во время начала ожидания ввода текста (в процессе набора текста сделана пауза). При стандартной отработке события происходит поиск в порядке полей, определенном при конфигурировании в свойстве объекта метаданных "Ввод по строке". Если найдено единственное значение, то производится автоподстановка полного текста. Если введенному тексту соответствует несколько значений, то автоподстановки не происходит. Если в этот момент перейти на другой элемент управления, то возникает событие ОкончаниеВводаТекста. |
|||
|
2
Siberia
05.08.10
✎
08:54
|
Как оперативно! Спасибо!
|
|||
|
3
Siberia
05.08.10
✎
09:19
|
Немного не получается. То есть обработка срабатывает при ожидании, но не срабатывает при нажатии ентер.
|
|||
|
4
Cheater
05.08.10
✎
09:31
|
(3) ОкончаниеВводаТекста() смотрела?
|
|||
|
5
Cube
05.08.10
✎
09:41
|
(3) Тебе нужно фотку в профиль добавить :)
|
|||
|
6
Siberia
05.08.10
✎
09:45
|
(5) Доделаю вот эту штуку и добавлю ))))
(4) Да, похоже то, что надо (торможу сегодня). Только еще такой момент. Как после нажатия на ентер вывести свой список? Что то типа ТекущиеДанные = СписокЗначений()?? |
|||
|
7
Cheater
05.08.10
✎
09:48
|
(6) ОкончаниеВводаТекста(<Текст>, <Значение>, <Стандартная обработка>)
СтандартнаяОбработка = Ложь и делай всё что хочешь |
|||
|
8
Cheater
05.08.10
✎
10:00
|
+(7) только если меняешь, то и в АвтоПодборТекста() не забудь поменять
|
|||
|
9
Siberia
05.08.10
✎
10:15
|
(8) Это понятно. Не понятно как список значений вывести.
|
|||
|
10
Siberia
05.08.10
✎
10:20
|
То есть, после этой процедуры в поле выбора должен вываливаться мой список значений.
Нашла Элемент.СписокВыбора = МойСписокЗначений. А как вывести его на экран? |
|||
|
11
Cube
05.08.10
✎
10:22
|
Синтаксис помощник читать нужно :)
Процедура НоменклатураОкончаниеВводаТекста(Элемент, Текст, Значение, СтандартнаяОбработка) СтандартнаяОбработка = Ложь; Значение = Новый СписокЗначений; Значение.Добавить(Справочники.Номенклатура.НайтиПоКоду("0000007210")); Значение.Добавить(Справочники.Номенклатура.НайтиПоКоду("0000009837")); КонецПроцедуры |
|||
|
12
Siberia
05.08.10
✎
10:35
|
(11) Чукча не читатель ))))...
Тут другая проблема при подробном рассмотрении. В процедуре АвтоПодборТекста при наборе букв и ожидании срабатывает правильно. То есть управление переходит перед выводом списка. А процедура ОкончаниеВводаТекста сначала выводит список, а потом передает управление. То есть, она мне не подходит получается. Если подробнее: Меня не устраивает список, который выпадает при выборе. Мне надо туда добавить колонки или значения в скобках. Вот, например, справочник улиц. Название может быть "Строителей", а тип улицы - "улица", "проезд" и пр. При стандатном выборе видно только название. А хотелось бы добавить тип. |
|||
|
13
Siberia
05.08.10
✎
10:38
|
Может это можно другим способом сделать, а не мучить процедуры АвтоПодборТекста и ОкончаниеВводаТекста
|
|||
|
14
Grusswelle
05.08.10
✎
10:38
|
(0) Почему до сих пор нет фоты в личной карточке?! Немедленно исправить!
|
|||
|
15
Siberia
05.08.10
✎
10:39
|
(14)См (6)
Сначала надо сделать )))) |
|||
|
16
Grusswelle
05.08.10
✎
10:41
|
(15) Ок. :-)
|
|||
|
17
Siberia
05.08.10
✎
10:48
|
(12)-(13) Способ неважен - лишь бы работало.
|
|||
|
18
Cube
05.08.10
✎
10:50
|
(12) Не правильно. Если пишешь
СтандартнаяОбработка = Ложь; То список уже не выводится. Что мешает сделать так: Процедура НоменклатураОкончаниеВводаТекста(Элемент, Текст, Значение, СтандартнаяОбработка) СтандартнаяОбработка = Ложь; Значение = Новый СписокЗначений; Номенклатура = Справочники.Номенклатура.НайтиПоКоду("0000007210"); Значение.Добавить(Номенклатура, Номенклатура.Наименование + " (" + Номенклатура.Код + ")"); Номенклатура = Справочники.Номенклатура.НайтиПоКоду("0000009837"); Значение.Добавить(Номенклатура, Номенклатура.Наименование + " (" + Номенклатура.Код + ")"); КонецПроцедуры |
|||
|
19
stangen
05.08.10
✎
11:08
|
или если не устраивает ОкончаниеВводаТекста, используй АвтоподборТекста, например, так
Процедура НоменклатураАвтоПодборТекста(Элемент, Текст, ТекстАвтоПодбора, СтандартнаяОбработка) СтандартнаяОбработка = Ложь; СЗ = Новый СписокЗначений; Номенклатура = Справочники.Номенклатура.НайтиПоКоду("0000007210"); СЗ.Добавить(Номенклатура, Номенклатура.Наименование + " (" + Номенклатура.Код + ")"); Номенклатура = Справочники.Номенклатура.НайтиПоКоду("0000009837"); СЗ.Добавить(Номенклатура, Номенклатура.Наименование + " (" + Номенклатура.Код + ")"); ЭлементСЗ=ВыбратьИзСписка(СЗ,Элемент); Если ЭлементСЗ<>Неопределено Тогда Элемент.Значение =ЭлементСЗ.Значение; КонецЕсли; КонецПроцедуры |
|||
|
20
Siberia
05.08.10
✎
11:21
|
Спасибо! Все получилось. Фото прилагаю )))
|
|||
|
21
Cube
05.08.10
✎
11:33
|
(20) Кто там кто не понятно :)
|
|||
|
22
Siberia
05.08.10
✎
13:12
|
(21) Да все понятно. Я и дети. Правда, не все мои )))
|
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |