1С:Предприятие 8.2 /
Разработчикам /
Прикладные объекты
Назначение и устройство критериев отбора
В составе метаданных 1С:Предприятия 8 существует объект Критерий отбора. Этот объект, в отличие от большинства прикладных объектов конфигурации, не описывает каких-либо самостоятельных данных, которые будут храниться в информационной базе 1С:Предприятия. Он предназначен исключительно для описания некоторого правила выборки информации из объектных данных различных типов.
Суть решаемой задачи очень проста – нужно найти ссылки на все объекты заданных типов, которые хранят некоторое искомое значение в указанных реквизитах. Например, нужно найти все документы, связанные с определенным контрагентом, то есть имеющие в своих реквизитах (или реквизитах табличной части) ссылку на конкретный элемент справочника Контрагенты.
При описании в конфигурации критерия отбора нужно задать список реквизитов различных объектных данных, по которым будет формироваться отбор.
Например, если, мы будем искать по контрагенту документы " ПриходнаяНакладная ", " РасходнаяНакладная " и "Взаимозачет", то нужно выбрать реквизиты:
- Документ.ПриходнаяНакладная .Реквизит.Поставщик;
- Документ.РасходнаяНакладная.Реквизит.Покупатель;
- Документ. Взаимозачет.ТабличнаяЧасть.Состав.Реквизит.Кто;
- Документ. Взаимозачет.ТабличнаяЧасть.Состав.Реквизит.Кому.
На примере документа "Взаимозачет" заметим, что можно выбирать реквизиты из табличных частей и можно выбирать несколько реквизитов в одном объекте. Данный критерий отбора позволит найти все документы указанных трех типов, содержащие ссылку на искомого контрагента в указанных реквизитах. Фактически, критерий отбора описывает некоторую область поиска.
При описании критерия отбора в конфигурации можно задать тип критерия отбора, тогда при настройке состава критерия отбора будут предлагаться реквизиты только подходящих типов.
При включении в конфигурацию критерия отбора система не создает никаких таблиц, однако для оптимизации поиска создается индекс по каждому реквизиту, который указан в составе критериев отбора. Индексы будут использоваться СУБД для оптимизации получения выборки при использовании критерия отбора. Таким образом, при описании критерия отбора нужно учитывать, что система будет тратить дополнительные ресурсы на поддержание необходимых индексов.
Критерий отбора может использоваться несколькими способами.
- может быть получена выборка с помощью метода Найти() менеджера критерия отбора;
- может быть выполнено обращение к виртуальной таблице критерия отбора в запросе (КритерийОтбора.<имя>);
- можно сделать форму критерия отбора или вставить в любую форму табличное поле, связанное с объектом КритерийОтбораСписок.<имя>, для отображения выборки в табличном поле;
- можно использовать критерий отбора в отборе списка документов.
Во всех случаях выборка выполняется одним и тем же способом. Система формирует запрос к СУБД для поиска объектов, которые включают искомое значение, и формирует выборку, состоящую из найденных ссылок на объекты. Формируемый запрос представляет собой объединение запросов по каждой таблице, в которой нужно осуществить поиск.
Запросы формируются только к тем данным (таблицам), из числа описанных в критерии отбора, у которых в реквизите может быть значение того типа, значение которого в данный момент ищется. Например, критерий отбора включает ссылки на справочник физических лиц и справочник организаций, а в конкретном реквизите конкретного документа может быть ссылка только на справочник физических лиц. Тогда запрос по этому документу будет выполняться, только если в данный момент поиск выполняется по физическому лицу.
Важно учитывать, что критерий отбора всегда выбирает все искомые данные. Ни в списке, ни в других режимах не поддерживается динамическая выборка, так как информация выбирается путем объединения данных из разных таблиц. Формируемый для критерия отбора индекс позволяет сделать это достаточно быстро, но если данных в выборке окажется очень много, то выборка не будет формироваться эффективно. Поэтому целесообразно создавать критерии отбора по данным, имеющим большой разброс значений, чтобы выборки получались не очень большие. В противном случае теряется смысл такого отбора и снижается его эффективность.
Таким образом, критерий отбора является сервисной возможностью, предлагаемой разработчику конфигурации. Фактически, он позволяет интерактивно описать условие выборки, автоматически создать необходимые индексы, автоматически сформировать сложный запрос, включающий обращение к большому количеству данных и автоматически задействовать выборку по данному критерию в интерфейсе прикладного решения.
Рекомендуем также ознакомиться с разделами:
- Существует ли в 1С:Предприятии 8 понятие "Подчиненные документы"?
- Индексы таблиц базы данных
Другие материалы по теме:
документ.приходнаянакладная, расходнаянакладная, приходнаянакладная, взаимозачет, приход., ссылки, поиск, система, тип..., реквизиты, опис, автоматически, состав, отбор, например, конфигурирование, реквизит, пример, документы, значение, справочник, конфигурации, документа, документ
Материалы из раздела: 1С:Предприятие 8.2 / Разработчикам / Прикладные объекты
Другие материалы по теме:
Общесистемные механизмы и принципы
Источники данных для расчетов бюджетирования
Ограничения на использование реквизитов составного типа
Нас находят: отбор в списке документов не по реквизиту, выборка контрагентов по критерию 1с, 1с8 для чего критерии отбора связанные документы, КритерийОтбора СвязанныеДокументы, назначение и способы использования отбора в списке 1с, можно ли в запросе в виртуальной таблице критерия отбора использовать список значений, курсы порограмирования 1с критерии, критерийотбора связанныедокументы в запросе, критерий отбора 1с, критерии отбора связанных документов
Мы на Facebook