Объект 1С "Критерий отбора"

критерий отбора 1с

Объект "Критерии отбора" предназначен для отбора различной информации, хранящейся в информационной базе, по некоторым критериям (для описания некоторого правила выборки информации из объектных данных различных типов).

В прикладном решении может быть создано любое необходимое количество критериев отбора.

Критерии отбора применяются для отбора элементов справочников, документов и других объектов путем поиска ссылок на все объекты заданных типов, которые хранят некоторое искомое значение в указанных реквизитах.

Фактически, критерий отбора описывает некоторую область поиска.

В отличие от большинства прикладных объектов конфигурации, не описывает каких-либо самостоятельных данных, которые будут храниться в информационной базе 1С:Предприятия.

Критерий отбора позволяет:

  1. интерактивно описать условие выборки,
  2. автоматически создать необходимые индексы,
  3. автоматически сформировать сложный запрос, включающий обращение к большому количеству данных,
  4. автоматически задействовать выборку по данному критерию в интерфейсе прикладного решения.

При описании в конфигурации критерия отбора нужно задать список реквизитов различных объектных данных, по которым будет формироваться отбор.

Например, с помощью объекта "Критерии отбора" можно выбрать все документы, относящиеся к заданному контрагенту, то есть имеющие в своих реквизитах (или реквизитах табличной части) ссылку на конкретный элемент справочника Контрагенты.

Если мы будем искать по контрагенту документы "ПриходнаяНакладная", "РасходнаяНакладная" и "Взаимозачет", то нужно выбрать реквизиты:

Данный критерий отбора позволит найти все документы указанных трех типов, содержащие ссылку на искомого контрагента в указанных реквизитах.

Заметим, что можно выбирать:

  • реквизиты из табличных частей;
  • несколько реквизитов в одном объекте.

При описании критерия отбора в конфигурации можно задать тип критерия отбора, тогда при настройке состава критерия отбора будут предлагаться реквизиты только подходящих типов.

При включении в конфигурацию критерия отбора система не создает никаких таблиц, однако для оптимизации поиска создается индекс по каждому реквизиту, который указан в составе критериев отбора. Индексы будут использоваться СУБД для оптимизации получения выборки при использовании критерия отбора.

ВАЖНО! Таким образом, при описании критерия отбора нужно учитывать, что система будет тратить дополнительные ресурсы на поддержание необходимых индексов.

Способы использования критерия отбора:

  1. с помощью метода Найти() менеджера критерия отбора;
  2. обращение к виртуальной таблице критерия отбора в запросе (КритерийОтбора.<имя>);
  3. через создание формы критерия отбора или вставку в любую форму табличного поля, связанного с объектом КритерийОтбораСписок.<имя> (для отображения выборки в табличном поле);
  4. в отборе списка документов.

Во всех случаях выборка выполняется системой одним и тем же способом:

  • формируется запрос к СУБД (объединение запросов по каждой таблице, в которой нужно осуществить поиск) для поиска объектов, которые включают искомое значение;
  • формируется выборка, состоящая из найденных ссылок на объекты.

Запросы формируются только к тем данным (таблицам), из числа описанных в критерии отбора, у которых в реквизите может быть значение того типа, значение которого в данный момент ищется.

Например, критерий отбора включает ссылки на справочник физических лиц и справочник организаций, а в конкретном реквизите конкретного документа может быть ссылка только на справочник физических лиц. Тогда запрос по этому документу будет выполняться, только если в данный момент поиск выполняется по физическому лицу.

Важно учитывать, что критерий отбора всегда выбирает все искомые данные. Ни в списке, ни в других режимах не поддерживается динамическая выборка, так как информация выбирается путем объединения данных из разных таблиц. Формируемый для критерия отбора индекс позволяет сделать это достаточно быстро, но если данных в выборке окажется очень много, то выборка не будет формироваться эффективно. Поэтому целесообразно создавать критерии отбора по данным, имеющим большой разброс значений, чтобы выборки получались не очень большие. В противном случае теряется смысл такого отбора и снижается его эффективность.

См. также https://its.1c.ru/db/metod8dev/content/2861/hdoc

Добавить комментарий

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.