Быстрый старт · 12 мин
Как делать отбор в 1С: практическое руководство
Как делать отбор в 1С: настройка отборов в списках документов и справочников, отчётах на СКД, динамических списках и запросах. Пошаговые инструкции и ошибки.
Отбор в 1С — это способ показать не все данные подряд, а только те записи, которые соответствуют заданным условиям: документы за период, контрагентов из конкретной группы, товары с остатком ниже нормы. Механизм отбора встроен практически в каждый экран программы, но работает по-разному в зависимости от того, где вы его применяете: в списке документов, в отчёте, в динамическом списке или в запросе.
Большинство пользователей ограничиваются быстрым поиском по подстроке и не подозревают, что штатный отбор позволяет строить сложные условия с группами «И/ИЛИ», сравнением дат, проверкой на заполненность и отбором по связанным полям. При этом ни одна из этих операций не требует прав администратора и не меняет данные — отбор влияет только на то, что вы видите на экране.
Материал охватывает четыре основных сценария: отбор в формах списков, отбор в отчётах на системе компоновки данных, отбор в динамических списках и отбор в запросах для тех, кто работает с консолью запросов или конфигуратором. Каждый сценарий разобран с конкретными действиями и проверкой результата.
Где в 1С применяется отбор и как он устроен
Любой отбор состоит из трёх элементов: поле (что сравниваем), вид сравнения (равно, содержит, больше, в списке и другие) и значение (с чем сравниваем). Например: поле «Организация», вид сравнения «Равно», значение «ООО Ромашка». Несколько условий по умолчанию объединяются логическим «И» — запись попадёт в результат, только если выполняются все условия одновременно.
Отборы работают на четырёх уровнях. Первый — формы списков документов, справочников и регистров, где отбор настраивает сам пользователь. Второй — отчёты, где условия задаются в настройках перед формированием. Третий — динамические списки, где разработчик может зашить отбор в запрос. Четвёртый — язык запросов 1С, где отбор задаётся предложением ГДЕ и выполняется на стороне сервера СУБД.
Важно понимать разницу между отбором и поиском. Поиск по строке (Ctrl+F или строка поиска в списке) ищет вхождение текста в отображаемых колонках и работает медленнее на больших объёмах. Отбор же накладывает условие на уровне данных — список физически получает с сервера только подходящие записи, поэтому на больших базах отбор всегда предпочтительнее.
Как сделать отбор в списке документов или справочника
Откройте нужный список — например, «Покупатели → Счета на оплату покупателям» или справочник «Номенклатура». Нажмите кнопку «Настроить список» на панели списка либо выберите «Ещё → Настроить список». Откроется окно настройки, где на закладке «Отбор» добавляются условия.
Нажмите «Добавить новый элемент» и выберите поле из списка доступных. Для документов доступны не только реквизиты шапки (дата, контрагент, организация, сумма), но и поля связанных объектов — например, «Контрагент.Группа» или «Договор.Валюта». Затем укажите вид сравнения и значение. Для отбора по нескольким значениям одного поля используйте вид сравнения «В списке» и добавьте нужные элементы в список значений.
Если условий несколько и среди них есть альтернативные, используйте группировку: кнопка «Сгруппировать условия» позволяет создать группу «ИЛИ» или «НЕ». Типичный пример — показать документы, где контрагент равен одному из двух значений И сумма больше заданной: сначала группа «ИЛИ» по контрагентам, затем отдельное условие по сумме.
- 1Откройте список и нажмите «Ещё → Настроить список»
- 2На закладке «Отбор» добавьте элемент и выберите поле
- 3Укажите вид сравнения: «Равно», «Содержит», «В списке» и т.д.
- 4Задайте значение или период
- 5Нажмите «Завершить редактирование» и проверьте, что список сократился
- 6Если записей нет вообще — вернитесь в настройку и ослабьте условия
Быстрый отбор без открытия настроек
Во многих списках над таблицей есть панель быстрых отборов — поля «Организация», «Контрагент», «Период». Заполнение такого поля сразу фильтрует список. Состав этой панели определяется разработчиком конфигурации, поэтому набор полей в разных списках отличается. Если нужного поля нет ни в панели, ни в настройке списка — значит, оно не включено в состав доступных полей динамического списка, и добавить его может только разработчик.
Как настроить отбор в отчёте
Отчёты в типовых конфигурациях построены на системе компоновки данных (СКД), и отбор в них настраивается через «Ещё → Изменить вариант» или кнопку «Настройки». На закладке «Отбор» добавьте условие так же, как в списке: поле, вид сравнения, значение. Отличие в том, что отбор отчёта применяется в момент формирования и влияет на итоговые цифры, а не только на отображение.
Обратите внимание на флажок слева от условия: снятый флажок означает, что условие сохранено в настройках, но временно не применяется. Это удобно, когда нужно быстро переключаться между вариантами — например, «все организации» и «конкретная организация» — не удаляя условие.
Готовый набор настроек сохраните как вариант отчёта: «Ещё → Сохранить вариант отчёта». Тогда в следующий раз сложный отбор из пяти условий не придётся собирать заново. Варианты можно делать личными или общедоступными — последнее требует соответствующих прав.
Отбор в динамических списках и его ограничения
Большинство списков в управляемых формах — это динамические списки, построенные на запросе. Для пользователя это означает: отбирать можно только по полям, которые запрос отдаёт наружу. Если разработчик не добавил поле в запрос или не разрешил по нему отбор, в настройке списка это поле не появится.
Разработчики могут задавать отбор программно — через коллекцию ЭлементыОтбора динамического списка. Типовой приём — установка отбора при открытии формы: например, список заказов конкретного покупателя открывается уже отфильтрованным. Такой отбор называется фиксированным, если пользователь не может его снять, или обычным, если снятие разрешено.
Ещё одно ограничение — отбор по полям через точку (например, «Контрагент.ИНН») на больших таблицах может заметно замедлять список, поскольку к запросу добавляется соединение таблиц. Если список после установки отбора открывается десятки секунд, имеет смысл перенести условие на поле основной таблицы или обсудить с разработчиком добавление индекса.
Отбор в запросе: предложение ГДЕ
Для тех, кто работает с консолью запросов или пишет код, отбор задаётся предложением ГДЕ (WHERE). Условия пишутся на языке запросов 1С и выполняются на сервере СУБД, что самый быстрый способ получить нужные данные из больших таблиц.
ВЫБРАТЬ
Док.Ссылка,
Док.Контрагент,
Док.СуммаДокумента
ИЗ
Документ.РеализацияТоваровУслуг КАК Док
ГДЕ
Док.Дата МЕЖДУ &НачалоПериода И &КонецПериода
И Док.Организация = &Организация
И Док.ПроведенКлючевые правила эффективного отбора в запросе: используйте параметры (&ИмяПараметра) вместо подстановки значений в текст, не применяйте функции к полю в левой части условия без необходимости (это отключает использование индекса), а для отбора по списку значений используйте конструкцию «В (&Список)». Для виртуальных таблиц регистров условия лучше передавать в параметры виртуальной таблицы, а не в ГДЕ — так СУБД сначала сократит выборку, а потом посчитает остатки или обороты.
Как проверить, что отбор сработал правильно
После установки отбора проверьте три вещи. Первое — количество записей: список должен заметно сократиться, а в отчёте — измениться итоги. Если после установки условия ничего не изменилось, условие либо не применено (снят флажок), либо поле отбора не то, которое вы видите в колонке списка.
Второе — пограничные записи. Найдите запись, которая должна попасть в отбор, и запись, которая должна быть исключена, и убедитесь, что первая есть, а второй нет. Третье — снимите отбор и сравните общее количество: это помогает понять, сколько данных скрыто условием, и не потерялись ли нужные записи из-за слишком строгого условия.
Контроль результата отбора
Показывает только записи, соответствующие условию
Список не изменился или стал пустым
Условие отображается и помечено как активное
Условия нет или флажок снят
Присутствует в отфильтрованном списке
Отсутствует — условие слишком строгое или поле неверное
Сходятся с контрольной цифрой по суженной выборке
Итоги совпадают с отчётом без отбора
Типичные ошибки при работе с отборами
Самая частая ошибка — путать «Содержит» и «Равно» для строковых полей. Условие «Наименование Равно Молоко» не найдёт «Молоко 3,2%», а условие «Содержит» найдёт и «Коктейль молочный». Для точного поиска по ссылочным полям (контрагент, номенклатура) всегда используйте «Равно» или «В списке» с выбором конкретных элементов.
Вторая ошибка — неявное «И» там, где нужно «ИЛИ». Два условия «Контрагент = А» и «Контрагент = Б», добавленные подряд, дадут пустой результат, потому что один документ не может иметь двух контрагентов одновременно. Для перечисления используйте «В списке» или группу «ИЛИ».
Третья группа ошибок связана с датами: условие «Дата = 15.03» отсекает документы, если у даты есть время и оно не 00:00:00. Для периодов используйте вид сравнения «В периоде» или диапазон «Больше или равно / Меньше», помня, что конец дня — 23:59:59.
Что важно запомнить
Отбор строится из поля, вида сравнения и значения; условия объединяются по «И», для альтернатив нужна группа «ИЛИ» или «В списке». В списках отбор настраивается через «Настроить список», в отчётах — через настройки варианта, в запросах — через ГДЕ с параметрами. Перед использованием результата проверяйте панель активных отборов и контрольные записи.
Частые вопросы
Как сбросить все отборы в списке одним действием?
Откройте «Ещё → Настроить список», на закладке «Отбор» снимите флажки со всех условий или удалите их кнопкой «Удалить», затем завершите редактирование. В отчётах для полного сброса используйте «Ещё → Изменить вариант → Установить стандартные настройки» — это вернёт вариант к состоянию по умолчанию.
Почему в настройке отбора нет нужного поля?
Список доступных полей определяет запрос динамического списка или настройки СКД отчёта. Если поле не выведено разработчиком в состав доступных, пользователь добавить его не сможет — потребуется доработка конфигурации или расширение формы. Обходной вариант для отчётов: поискать другой вариант отчёта, где поле доступно.
Можно ли отобрать записи, где поле не заполнено?
Да. Используйте вид сравнения «Не заполнено» (или «Заполнено» для обратной задачи) — он находит записи с пустым значением поля. Для ссылочных полей альтернатива — условие «Равно» с пустой ссылкой, но «Не заполнено» надёжнее, поскольку корректно обрабатывает и NULL, и пустые ссылки.
Как отобрать документы по нескольким контрагентам сразу?
Добавьте условие по полю «Контрагент» с видом сравнения «В списке» и внесите в список значений всех нужных контрагентов. Это эквивалентно группе условий «ИЛИ», но компактнее и быстрее в редактировании. Не добавляйте несколько условий «Равно» подряд — они объединятся по «И» и дадут пустой результат.
Отбор в списке и поиск по строке — что выбрать?
Для разового поиска одной записи по фрагменту наименования удобнее поиск по строке. Для регулярной работы с подмножеством данных — все документы по организации, товары одной группы — используйте отбор: он выполняется на сервере, работает быстрее на больших таблицах и сохраняется в настройках списка.
Опасен ли отбор для данных в базе?
Нет. Отбор — операция только чтения: он ограничивает отображаемые записи, но ничего не удаляет и не изменяет. Риск косвенный: пользователь может забыть об активном отборе и принять решение по неполным данным, например посчитать, что документа не существует, хотя он просто скрыт условием.