Справочники и Данные · 10 мин
Как открыть список справочника с отбором в 1С
Как открыть список справочника в 1С с отбором: настройка отбора в интерфейсе, программное открытие формы с параметрами, типичные ошибки и ответы на вопросы.
Отбор в списке справочника — один из самых частых приёмов работы в 1С: он позволяет показать не все элементы, а только те, что соответствуют заданным условиям. Например, вывести контрагентов из конкретного региона, номенклатуру одной группы или сотрудников определённого подразделения.
Есть два принципиально разных способа решить эту задачу. Первый — пользовательский: отбор настраивается прямо в открытой форме списка через стандартные команды интерфейса, без программирования. Второй — программный: разработчик открывает форму списка с заранее заданными параметрами отбора из кода на встроенном языке 1С.
Выбор способа зависит от задачи. Разовая фильтрация данных выполняется руками за несколько секунд. Если же отбор должен применяться автоматически — например, при нажатии кнопки в документе или по команде из другой формы — потребуется программный вызов с передачей структуры отбора.
Как открыть список справочника и настроить отбор вручную
Откройте нужный справочник через главное меню или панель разделов — например, «Номенклатура», «Контрагенты» или «Сотрудники». Форма списка отобразит все элементы, доступные текущему пользователю с учётом его прав.
Для настройки отбора нажмите кнопку «Ещё» в командной панели списка и выберите пункт «Настроить список». В открывшемся окне на закладке «Отбор» добавьте условие: выберите поле, вид сравнения (равно, содержит, в группе и т.д.) и значение. После нажатия «Завершить редактирование» список покажет только подходящие элементы.
Во многих типовых конфигурациях над списком уже есть панель быстрых отборов — поля «Организация», «Подразделение», «Группа». Их достаточно заполнить, и отбор применится автоматически без входа в настройки.
- 1Откройте форму списка нужного справочника
- 2Нажмите «Ещё» → «Настроить список»
- 3На закладке «Отбор» добавьте условие: поле, вид сравнения, значение
- 4Нажмите «Завершить редактирование»
- 5Проверьте, что в списке остались только нужные элементы
Какие виды сравнения доступны и когда их применять
Стандартный механизм отбора поддерживает несколько видов сравнения, и правильный выбор напрямую влияет на результат. «Равно» подходит для точного совпадения по ссылочному или числовому полю. «Содержит» ищет подстроку в строковых реквизитах — удобно для поиска по части наименования, но работает медленнее на больших списках.
Для иерархических справочников особенно полезны виды «В группе» и «В группе из списка»: они выводят элементы, находящиеся внутри указанной папки с учётом вложенных подгрупп. Вид «В списке» позволяет отобрать сразу по нескольким значениям одного поля.
Несколько условий можно объединять. По умолчанию они соединяются логическим «И» — элемент должен удовлетворять всем условиям одновременно. Для логики «ИЛИ» в окне настройки списка используется группировка условий через кнопку «Сгруппировать условия».
Как открыть форму списка с отбором программно
Для открытия формы списка из кода используется метод ОткрытьФорму(), которому передаётся имя формы и структура параметров. Отбор задаётся параметром "Отбор" — структурой, где ключ — имя реквизита справочника, а значение — условие фильтрации.
&НаКлиенте
Процедура ПоказатьАктивныхКонтрагентов(Команда)
ПараметрыФормы = Новый Структура;
ПараметрыФормы.Вставить("Отбор",
Новый Структура("ПометкаУдаления, Организация",
Ложь, ТекущаяОрганизация));
ОткрытьФорму("Справочник.Контрагенты.ФормаСписка",
ПараметрыФормы);
КонецПроцедуры
Такой вызов откроет стандартную форму списка, уже отфильтрованную по указанным реквизитам. Пользователь увидит применённый отбор и сможет его изменить или снять — если нужно запретить снятие, это реализуется отдельно через настройку динамического списка формы.
Ключи структуры отбора должны точно совпадать с именами реквизитов справочника, включённых в доступные поля динамического списка. Ошибка в имени приведёт либо к исключению, либо к молча неработающему отбору — зависит от версии платформы и настроек формы.
ПараметрыФормы = Новый Структура("Отбор", Новый Структура("Родитель", ВыбраннаяГруппа));
ОткрытьФорму("Справочник.Номенклатура.ФормаСписка", ПараметрыФормы);Отбор в форме выбора при подборе значения
Отдельный частый сценарий — ограничить список при выборе значения в поле ввода. Например, в документе «Реализация» пользователь должен выбирать только склад из списка складов конкретной организации, а не из всего справочника.
Для этого в обработчике НачалоВыбора поля ввода формируются параметры формы выбора с отбором, после чего форма открывается вручную. Стандартная обработка при этом отключается установкой СтандартнаяОбработка = Ложь.
&НаКлиенте
Процедура СкладНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
ПараметрыФормы = Новый Структура;
ПараметрыФормы.Вставить("Отбор",
Новый Структура("Организация", Объект.Организация));
ПараметрыФормы.Вставить("РежимВыбора", Истина);
ОткрытьФорму("Справочник.Склады.ФормаВыбора",
ПараметрыФормы, Элемент);
КонецПроцедуры
В управляемых формах аналогичный результат часто достигается без кода — через свойства «Параметры выбора» и «Связи параметров выбора» поля ввода в конфигураторе. Это предпочтительный вариант: он работает и при быстром вводе, и при подборе, и не требует обработчиков.
Способы задать отбор при выборе
Подходит для статичных условий; не требует кода, работает везде, но не меняется динамически
Отбор зависит от другого поля формы (например, склада от организации); настраивается без кода
Максимальная гибкость и сложные условия, но требует обработчика и отключения стандартной обработки
Как проверить, что отбор применился правильно
После применения отбора убедитесь, что количество строк в списке уменьшилось и соответствует ожиданиям. В типовых формах над списком отображается строка с описанием установленного отбора — сверьте перечисленные там условия с задуманными.
Проверьте граничные случаи: элемент, который точно должен попасть в выборку, и элемент, который должен быть исключён. Если список пуст, хотя данные существуют, чаще всего причина в лишнем условии, несовпадении типа значения или в том, что отбор применён к полю, не заполненному у элементов.
При программном открытии формы дополнительно проверьте, что имена ключей структуры совпадают с именами реквизитов, а значения имеют правильный тип — передача строки вместо ссылки на справочник даст пустой результат без сообщения об ошибке.
Как проверить результат
Перечислены именно заданные условия
Условий нет или присутствуют лишние
Заведомо подходящий элемент виден в списке
Элемент отсутствует при корректных данных
Ссылка на справочник передаётся как ссылка
Передаётся строка с наименованием вместо ссылки
Типичные ошибки и ограничения
Самая распространённая ошибка пользователей — забытый отбор. Настроенный фильтр сохраняется в настройках формы, и при следующем открытии список снова показывает не все элементы. Признак — строка отбора над списком; сброс выполняется через «Ещё» → «Настроить список» → удаление условий или «Установить стандартные настройки».
В программной части часто встречается передача в отбор реквизита, которого нет в запросе динамического списка или который недоступен для отбора. В этом случае платформа либо выдаёт ошибку, либо игнорирует условие. Перед использованием убедитесь, что реквизит существует и не отключён в настройках списка.
Ещё одно ограничение: структура отбора поддерживает только сравнение на равенство (и «в группе» для иерархии при соответствующей настройке). Сложные условия — «больше», «содержит», «ИЛИ» — через параметр «Отбор» не передаются; для них придётся дорабатывать форму и работать с настройками компоновки данных динамического списка.
Частые вопросы
Как снять отбор, который применился сам при открытии списка?
Откройте «Ещё» → «Настроить список», удалите условия на закладке «Отбор» или нажмите «Установить стандартные настройки». Если отбор задан программно при открытии формы, снять его из интерфейса можно только если разработчик не запретил изменение настроек.
Можно ли сохранить настройку отбора, чтобы не задавать её каждый раз?
Да. В окне «Настроить список» есть возможность сохранить текущие настройки под именем и затем выбирать их из списка. В ряде конфигураций сохранённые варианты доступны всем пользователям, если у вас есть соответствующие права.
Почему программный отбор по реквизиту не работает, хотя реквизит есть?
Проверьте три вещи: точное имя реквизита в структуре, тип передаваемого значения (ссылка, а не строка) и доступность поля для отбора в динамическом списке формы. Также убедитесь, что форма не переопределяет отбор в обработчике ПриСозданииНаСервере.
Как открыть список с отбором «элемент входит в группу» программно?
Для иерархических справочников отбор по реквизиту «Родитель» через стандартный параметр «Отбор» обычно работает с видом сравнения «в иерархии», если это предусмотрено формой. Если нужен строго контролируемый результат, надёжнее доработать форму и установить отбор динамического списка через СКД.
Можно ли задать отбор по нескольким значениям одного поля из кода?
Через параметр «Отбор» напрямую — нет, структура принимает одно значение на ключ. Обходной путь: передать в параметрах массив или список значений и в обработчике ПриСозданииНаСервере формы добавить условие «В списке» в настройки динамического списка.
Что важно запомнить
Вручную отбор настраивается через «Ещё» → «Настроить список», программно — через ОткрытьФорму() с параметром «Отбор» в виде структуры. Следите за точными именами реквизитов и типами значений, а сложные условия реализуйте через настройки динамического списка формы.