Выбор значения из списка в 1С 8.3: от кнопки F4 до ПоказатьВыборЭлемента
Содержание
Выбрать значение из списка в 1С 8.3 проще всего тремя способами: начать печатать название прямо в поле, нажать F4 (или кнопку «…» справа от поля) и найти строку в форме выбора, либо раскрыть выпадающий список стрелкой. Первый способ быстрее, когда вы помните хотя бы часть названия. Форма выбора нужна, когда список большой и без поиска и отборов не обойтись.
Разработчику доступно больше: открыть форму выбора кодом через ОткрытьФорму, показать свой список через ПоказатьВыборЭлемента, ограничить выбор параметрами поля или собрать варианты запросом.
Как выбрать элемент из списка вручную: поле ввода и горячие клавиши
Почти любое поле со ссылкой на справочник, документ или перечисление в 1С работает одинаково. У него есть три «входа» в список.
Ввод по строке
Встаньте в поле и начните печатать. Уже после 2–3 символов платформа покажет выпадающий перечень подходящих значений.
- 🔤 Ищет по началу наименования и по коду — набор полей задаётся в свойствах справочника.
- ⬇️ Стрелками выбираете строку,
Enterподставляет её в поле. - 🧩 Если совпадение единственное, значение подставится сразу после выхода из поля.
Пример: в поле «Контрагент» наберите ромаш — в подсказке появится «Ромашка ООО», если такой контрагент есть в базе.
Форма выбора
Нажмите F4 или кнопку «…» в поле. Откроется форма выбора — тот же список справочника, но в режиме выбора.
- Найдите строку: поле поиска в правом верхнем углу формы, курсор в него ставит
Ctrl+F. - Двойной щелчок по строке или
Enter— значение уходит в поле, форма закрывается. - Если нужной строки нет, создайте её прямо отсюда кнопкой «Создать». После записи новый элемент можно сразу выбрать.
Выпадающий список
Если у поля есть стрелка «▾», нажмите её. Так обычно выбирают значения перечислений (вид операции, ставку НДС) и небольших справочников, у которых включён быстрый выбор.
Горячие клавиши в поле выбора
| Клавиша | Действие |
|---|---|
F4 | Открыть форму выбора |
Shift+F4 | Очистить поле |
Ctrl+F | Поиск в открытом списке |
Enter / двойной щелчок | Выбрать текущую строку |
Esc | Закрыть форму выбора без изменений |
В поле, где уже стоит значение, удобнее не стирать текст, а сразу начать печатать новое название: ввод по строке заменит старое значение.
Поиск, отборы и выбор нескольких строк в форме списка
Форма выбора — обычный список, поэтому в ней работают все инструменты поиска. Когда в справочнике тысячи строк, они экономят больше всего времени.
Поиск и расширенный поиск
- 🔍 Строка поиска ищет по всем видимым колонкам. Набрали
220— увидите и коды, и наименования, где есть эти цифры. - 🎯 Расширенный поиск (
Alt+F) ищет по одной выбранной колонке и с выбранным условием: «по началу строки», «по части строки», «точное совпадение». - 📌 Чтобы найти по колонке быстро, встаньте в ячейку с нужным значением и вызовите расширенный поиск — колонка и значение подставятся сами.
Отборы и сортировка
В меню «Ещё» формы списка есть настройка списка. На вкладке отбора задайте условие, например «Поставщик равно ООО Альфа», а на вкладке порядка — сортировку. Отбор сохраняется для формы и действует при следующем открытии.
Щелчок по заголовку колонки сортирует список по ней. Повторный щелчок меняет направление.
Иерархия и группы
У иерархических справочников (номенклатура, статьи затрат) список может показываться деревом или плоско. Переключатель режима есть в командной панели или в меню «Ещё».
Обычно в поле можно выбрать только элемент, а не группу. Если вы дважды щёлкнули по папке и она раскрылась вместо выбора — это не сбой, так задумано разработчиком конфигурации.
Выбор нескольких строк
Выделить несколько строк можно мышью с клавишами:
Ctrl+ щелчок — добавить строку к выделенным;Shift+ щелчок — выделить диапазон;Ctrl+A— выделить всё видимое.
Одно ограничение: в обычное поле попадёт только одно значение. Множественный выбор нужен там, где форма умеет его принять: при подборе в табличную часть документа, при заполнении отбора «в списке», при групповом изменении реквизитов.
Групповые действия над выделенными строками (пометка на удаление, изменение реквизитов) применяются ко всем строкам сразу. Перед массовой правкой проверьте выделение: отменить групповое изменение одной кнопкой нельзя.
Выбор через карточку элемента: когда список не нужен
Бывает, что подходящего значения в списке нет, или нужно выбрать похожее, но с правками. Тогда работают с карточкой элемента.
- ➕ Создать из поля. Наберите название, которого нет в базе. Платформа предложит создать новый элемент — откроется карточка с уже заполненным наименованием.
- 📄 Скопировать. В форме выбора встаньте на похожую строку и нажмите
F9. Откроется копия, поменяйте нужные поля и запишите. - 🔎 Открыть выбранное. В поле, где значение уже стоит, кнопка открытия или щелчок по ссылке в поле показывает карточку выбранного элемента. Так удобно убедиться, что выбрали нужного контрагента, а не тёзку с другим ИНН.
Через карточку удобно выбирать, когда у элементов одинаковые наименования. Два «ООО Альфа» в списке отличаются только ИНН или кодом — колонку с ИНН стоит вывести в форму выбора через настройку формы в меню «Ещё».
Программный выбор из списка: ОткрытьФорму, СписокВыбора и параметры поля
Дальше — для тех, кто дорабатывает конфигурацию. Все примеры для управляемых форм и асинхронного режима: модальные методы в современных конфигурациях отключены.
Ограничить выбор свойствами поля
Часто кода не нужно вовсе. У поля формы есть свойства:
- ПараметрыВыбора — фиксированный отбор формы выбора. Например,
Отбор.ЭтоГруппа = Ложьили отбор по виду номенклатуры. - СвязиПараметровВыбора — отбор по значению другого реквизита. Классика: договор выбирается только по контрагенту из шапки документа.
- СписокВыбора и РежимВыбораИзСписка — поле показывает фиксированный перечень значений вместо формы выбора.
Те же параметры выбора можно задать у реквизита в конфигураторе — тогда они действуют на всех формах.
Открыть форму выбора кодом
Если нужен выбор по кнопке, а не из поля, откройте форму выбора справочника и обработайте результат:
&НаКлиенте
Процедура ВыбратьНоменклатуру(Команда)
ПараметрыФормы = Новый Структура;
ПараметрыФормы.Вставить("РежимВыбора", Истина);
ПараметрыФормы.Вставить("ЗакрыватьПриВыборе", Истина);
ПараметрыФормы.Вставить("Отбор", Новый Структура("ЭтоГруппа", Ложь));
ОткрытьФорму("Справочник.Номенклатура.ФормаВыбора", ПараметрыФормы, Элементы.Товары);
КонецПроцедуры
&НаКлиенте
Процедура ОбработкаВыбора(ВыбранноеЗначение, ИсточникВыбора)
Если ИсточникВыбора.ИмяФормы = "Справочник.Номенклатура.Форма.ФормаВыбора" Тогда
Объект.Номенклатура = ВыбранноеЗначение;
КонецЕсли;
КонецПроцедуры
Третий параметр ОткрытьФорму — владелец. Выбранное значение вернётся в обработчик ОбработкаВыбора формы-владельца. Имя формы в условии сверьте с тем, как она называется в вашей конфигурации: у справочника может быть основная форма выбора с другим именем.
Другие полезные параметры формы выбора:
| Параметр | Что делает |
|---|---|
ТекущаяСтрока | Ставит курсор на переданное значение |
МножественныйВыбор | Разрешает вернуть массив выделенных ссылок |
ВыборГруппИЭлементов | Что можно выбрать: группы, элементы или то и другое |
Отбор | Структура отбора, поля должны быть в списке |
Подменить стандартный выбор в поле
Чтобы поле открывало не форму выбора, а ваш список, используйте событие НачалоВыбора:
&НаКлиенте
Процедура СкладНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
Список = ДоступныеСклады(Объект.Организация);
Оповещение = Новый ОписаниеОповещения("СкладВыборЗавершение", ЭтотОбъект);
Список.ПоказатьВыборЭлемента(Оповещение, "Выберите склад", Список.НайтиПоЗначению(Объект.Склад));
КонецПроцедуры
&НаКлиенте
Процедура СкладВыборЗавершение(ВыбранныйЭлемент, ДополнительныеПараметры) Экспорт
Если ВыбранныйЭлемент <> Неопределено Тогда
Объект.Склад = ВыбранныйЭлемент.Значение;
КонецЕсли;
КонецПроцедуры
ПоказатьВыборЭлемента — асинхронная замена устаревшего ВыбратьЭлемент. Если пользователь закрыл окно, в обработчик придёт Неопределено, поэтому проверка обязательна. Функция ДоступныеСклады собирает список запросом — она в следующем разделе.
Для отметки нескольких строк флажками есть ПоказатьОтметкуЭлементов, для короткого меню у кнопки — ПоказатьВыборИзМеню.
Выборка данных для списка выбора запросом
Когда варианты зависят от условий — остатки, организация, права — их собирают запросом на сервере и передают на клиент списком значений.
&НаСервереБезКонтекста
Функция ДоступныеСклады(Организация)
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| Склады.Ссылка КАК Ссылка
|ИЗ
| Справочник.Склады КАК Склады
|ГДЕ
| НЕ Склады.ПометкаУдаления
| И НЕ Склады.ЭтоГруппа
| И Склады.Организация = &Организация
|
|УПОРЯДОЧИТЬ ПО
| Склады.Наименование";
Запрос.УстановитьПараметр("Организация", Организация);
Список = Новый СписокЗначений;
Список.ЗагрузитьЗначения(Запрос.Выполнить().Выгрузить().ВыгрузитьКолонку("Ссылка"));
Возврат Список;
КонецФункции
Имена полей здесь условные: реквизита «Организация» у склада в вашей конфигурации может не быть, подставьте свой.
Что учесть при выборке:
- 🧹 Исключайте помеченные на удаление и группы сразу в запросе, а не циклом после.
- 🔤 Для поиска по части названия используйте
ПОДОБНОс параметром:Наименование ПОДОБНО &Строка, гдеСтрока = "%" + Текст + "%". - 📏 Ограничьте объём:
ВЫБРАТЬ ПЕРВЫЕ 50. Список выбора на 5 000 строк читать никто не будет. - 🏷️ Если нужна подпись, отличная от наименования, добавляйте строки через
Список.Добавить(Значение, Представление)в цикле по выборке.
Для больших справочников запрос со списком значений — плохая идея. Лучше оставить стандартную форму выбора и ограничить её параметрами выбора: она читает данные порциями.
Динамический список в форме выбора: отборы и скорость
Форма выбора справочника почти всегда построена на динамическом списке. Его не загружают целиком — платформа читает видимую порцию строк и подчитывает при прокрутке.
Отбор из кода
Отбор, который пользователь не должен снимать, ставят через компоновщик настроек. В типовых конфигурациях на БСП для этого есть готовая процедура:
ОбщегоНазначенияКлиентСервер.УстановитьЭлементОтбораДинамическогоСписка(
Список, "Владелец", Параметры.Контрагент, ВидСравненияКомпоновкиДанных.Равно, , Истина);
Если список построен на произвольном запросе с параметрами, значение задают так: Список.Параметры.УстановитьЗначениеПараметра("Дата", ТекущаяДатаСеанса()).
Что тормозит выбор
| Причина | Что сделать |
|---|---|
| Произвольный запрос без основной таблицы | Указать основную таблицу, включить динамическое считывание |
| Отбор по неиндексированному реквизиту | Включить индексирование реквизита в конфигураторе |
| Поиск по части строки на миллионах записей | Включить полнотекстовый поиск или искать по началу |
| Вложенные запросы и соединения в тексте списка | Вынести расчёт в регистр или реквизит |
| Колонки с вычисляемыми полями из других таблиц | Убрать лишние колонки из формы выбора |
Основная таблица и флаг динамического считывания задаются в свойствах реквизита формы с типом «ДинамическийСписок». Без основной таблицы список не умеет читать порциями и тянет больше данных, чем показывает.
Выбор из списка в веб-клиенте и мобильном приложении
Логика выбора в веб-клиенте та же, что в тонком клиенте: ввод по строке, форма выбора, отборы. Разница — в деталях.
Веб-клиент:
- 🌐 Форма выбора открывается внутри вкладки браузера, а не отдельным окном.
- ⌨️ Часть сочетаний клавиш может перехватить браузер. Если
F4илиCtrl+Fне срабатывает, пользуйтесь кнопкой «…» и полем поиска мышью. - ⏳ Каждый ввод по строке — запрос к серверу. При медленном канале подсказка появляется с задержкой, печатайте 3–4 символа и ждите.
Мобильный клиент и мобильное приложение:
- 📱 Форма выбора занимает весь экран , выбор — касанием строки.
- 🔍 Поиск — основной инструмент: прокручивать длинный список на телефоне неудобно.
- 🚫 Модальных окон нет совсем, поэтому
ВыбратьЭлемент,ОткрытьФормуМодальноиВопросне работают. Только асинхронныеПоказать…иОткрытьФормус описанием оповещения.
Если код писали под тонкий клиент с модальными вызовами, в веб-клиенте и на мобильном он упадёт с ошибкой Использование модальных окон в данном режиме запрещено. Лечится переводом на асинхронные методы, как в примерах выше.