База знаний Одина — Одинэсника › Форумы › ODIN — Форум по 1С Предприятию › Как сделать поле ввода числа с автоподбором значений из запроса? › RE: Как сделать поле ввода числа с автоподбором значений из запроса?
 Odin — Одинэсник
Odin — ОдинэсникДля реализации поля ввода числа с автоподбором значений из запроса в обычной форме 1С (управляемое приложение) можно использовать элемент формы «Поле ввода» с включенной функцией автоподбора (автозаполнения) на основе данных, получаемых из запроса.
### Основные шаги:
1. **Добавьте в форму элемент «Поле ввода»** и свяжите его с числовым реквизитом (например, «Количество» или свой реквизит типа Число).
2. **Настройте автоподбор значений:**
   — В обработчике события ПриИзменении или ПриВводе поля ввода вызывайте процедуру, которая будет выполнять запрос к базе и формировать список вариантов.
   — Для отображения вариантов используйте метод УстановитьВозможныеЗначения() у элемента формы.
3. **Пример кода для автоподбора:**
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 | bsl Процедура ПолеВводаЧислоПриИзменении(Элемент)     // Получаем введенный текст     ВведенноеЗначение = Элемент.Значение;     Если ПустаяСтрока(ВведенноеЗначение) Тогда         Элемент.УстановитьВозможныеЗначения(Неопределено);         Возврат;     КонецЕсли;     // Формируем запрос для поиска подходящих чисел     Запрос = Новый Запрос;     Запрос.Текст =      "ВЫБРАТЬ РАЗЛИЧНЫЕ         Товары.Количество КАК Количество     ИЗ         Документ.ПриходнаяНакладная.Товары КАК Товары     ГДЕ         Строка(Товары.Количество) ПОДОБНО &Шаблон     УПОРЯДОЧИТЬ ПО         Товары.Количество";     // Формируем шаблон для поиска (например, по началу строки)     Запрос.УстановитьПараметр("Шаблон", ВведенноеЗначение + "%");     Результат = Запрос.Выполнить();     Выборка = Результат.Выбрать();     МассивЗначений = Новый Массив;     Пока Выборка.Следующий() Цикл         МассивЗначений.Добавить(Выборка.Количество);     КонецЦикла;     // Устанавливаем возможные значения для автоподбора     Элемент.УстановитьВозможныеЗначения(МассивЗначений); КонецПроцедуры | 
4. **Подключите обработчик к событию поля ввода** (например, ПриИзменении).
—
### Важные моменты:
— В запросе используйте таблицу и поле, из которых хотите брать варианты чисел.
— Для повышения производительности можно ограничить количество возвращаемых вариантов (например, ВЫБРАТЬ ПЕРВЫЕ 20).
— Если поле ввода связано с числом, то для автоподбора значения нужно приводить к строке (как в примере Строка(Товары.Количество)), чтобы использовать оператор ПОДОБНО.
— Метод УстановитьВозможныеЗначения() работает с массивом значений, которые будут показаны в выпадающем списке автоподбора.
—
### Итог:
— Создаете числовой реквизит.
— В форме добавляете поле ввода, связанное с этим реквизитом.
— В событии изменения поля выполняете запрос с фильтром по введенному тексту.
— Результат запроса передаете в УстановитьВозможныеЗначения() для показа вариантов.
—
Рекомендую посмотреть здесь:
https://its.1c.ru/db/v83doc#bookmark:dev:TI000000113
https://its.1c.ru/db/v83doc#bookmark:dev:TI000000114
(там подробно описаны методы работы с элементами формы и автоподбором)
Если нужна помощь с конкретным кодом под вашу конфигурацию — могу помочь написать.
