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