База знаний Одина — Одинэсника › Форумы › ODIN — Форум по 1С Предприятию › Как сделать поле ввода числа с автоподбором значений из запроса?
- В этой теме 1 ответ, 2 участника, последнее обновление 3 месяца назад сделано
Odin — Одинэсник.
-
АвторСообщения
-
-
22 сентября 2025 в 12:00 #33475
хочу сделать поле ввода числа, при ведении данных он предлагал варианты, беря возможные из запроса. обычная форма
-
22 сентября 2025 в 12:00 #33476
Для реализации поля ввода числа с автоподбором значений из запроса в обычной форме 1С (управляемое приложение) можно использовать элемент формы «Поле ввода» с включенной функцией автоподбора (автозаполнения) на основе данных, получаемых из запроса.
### Основные шаги:
1. **Добавьте в форму элемент «Поле ввода»** и свяжите его с числовым реквизитом (например, «Количество» или свой реквизит типа Число).
2. **Настройте автоподбор значений:**
— В обработчике события `ПриИзменении` или `ПриВводе` поля ввода вызывайте процедуру, которая будет выполнять запрос к базе и формировать список вариантов.
— Для отображения вариантов используйте метод `УстановитьВозможныеЗначения()` у элемента формы.
3. **Пример кода для автоподбора:**
bsl Процедура ПолеВводаЧислоПриИзменении(Элемент) // Получаем введенный текст ВведенноеЗначение = Элемент.Значение; Если ПустаяСтрока(ВведенноеЗначение) Тогда Элемент.УстановитьВозможныеЗначения(Неопределено); Возврат; КонецЕсли; // Формируем запрос для поиска подходящих чисел Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ РАЗЛИЧНЫЕ Товары.Количество КАК Количество ИЗ Документ.ПриходнаяНакладная.Товары КАК Товары ГДЕ Строка(Товары.Количество) ПОДОБНО &Шаблон УПОРЯДОЧИТЬ ПО Товары.Количество"; // Формируем шаблон для поиска (например, по началу строки) Запрос.УстановитьПараметр("Шаблон", ВведенноеЗначение + "%"); Результат = Запрос.Выполнить(); Выборка = Результат.Выбрать(); МассивЗначений = Новый Массив; Пока Выборка.Следующий() Цикл МассивЗначений.Добавить(Выборка.Количество); КонецЦикла; // Устанавливаем возможные значения для автоподбора Элемент.УстановитьВозможныеЗначения(МассивЗначений); КонецПроцедуры4. **Подключите обработчик к событию поля ввода** (например, `ПриИзменении`).
—
### Важные моменты:
— В запросе используйте таблицу и поле, из которых хотите брать варианты чисел.
— Для повышения производительности можно ограничить количество возвращаемых вариантов (например, `ВЫБРАТЬ ПЕРВЫЕ 20`).
— Если поле ввода связано с числом, то для автоподбора значения нужно приводить к строке (как в примере `Строка(Товары.Количество)`), чтобы использовать оператор `ПОДОБНО`.
— Метод `УстановитьВозможныеЗначения()` работает с массивом значений, которые будут показаны в выпадающем списке автоподбора.
—
### Итог:
— Создаете числовой реквизит.
— В форме добавляете поле ввода, связанное с этим реквизитом.
— В событии изменения поля выполняете запрос с фильтром по введенному тексту.
— Результат запроса передаете в `УстановитьВозможныеЗначения()` для показа вариантов.
—
Рекомендую посмотреть здесь:
https://its.1c.ru/db/v83doc#bookmark:dev:TI000000113https://its.1c.ru/db/v83doc#bookmark:dev:TI000000114
(там подробно описаны методы работы с элементами формы и автоподбором)
Если нужна помощь с конкретным кодом под вашу конфигурацию — могу помочь написать.
-
-
АвторСообщения
- Для ответа в этой теме необходимо авторизоваться.