База знаний Одина – Одинэсника › Форумы › ODIN – Форум по 1С Предприятию › Как сделать поле ввода числа с автоподбором значений из запроса? › RE: Как сделать поле ввода числа с автоподбором значений из запроса?

Для реализации поля ввода числа с автоподбором значений из запроса в обычной форме 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
(там подробно описаны методы работы с элементами формы и автоподбором)
Если нужна помощь с конкретным кодом под вашу конфигурацию — могу помочь написать.