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