Готовишься к экзамену?
Полнофункциональный тренажер @bot_1cnik_bot с полноценным обучением, режимом экзамена и подробной статистикой.
Для включения отборов в списках (управляемых форм) по содержимому табличных частей объектов и их свойств, неотображаемых в форме:
необходимо создать объект критерии отбора
Неправильно: Критерии отбора используются для отбора разнородных объектных данных по заданным реквизитам (как отдельный прикладной механизм), но это не обязательный инструмент для фильтра в динамическом списке. В обычных списках управляемых форм отбор по полям объекта и его табличных частей настраивается стандартными средствами списка без создания критериев.
реализуется произвольным запросом динамического списка
Неправильно: Произвольный запрос может понадобиться только в нестандартных случаях, но для типовой задачи он не требуется. Динамический список позволяет задавать отбор по доступным полям (включая поля табличных частей и скрытые реквизиты) через стандартные настройки без переписывания запроса.
осуществляется только с помощью дополнительной настройки форм
Неправильно: Отбор может настраиваться по полям, даже если они не выведены в таблицу списка и не отображаются пользователю в виде колонок. При необходимости достаточно включить поле в настройках списка как доступное для отбора, но специально добавлять его на форму как видимый реквизит обычно не нужно.
ничего дополнительно настраивать не надо, все реализовано на уровне платформы
Правильно: В управляемых формах отбор задается через настройки динамического списка, и там можно выбирать поля объекта, включая реквизиты табличных частей и свойства, не показанные в форме. Платформа сама формирует нужные условия и (при необходимости) соединения для такого отбора.
Пояснение
В управляемом приложении списки чаще всего строятся на реквизите формы типа «Динамический список». Его ключевая особенность - настройки компоновки (колонки, сортировки, отборы, условное оформление) задаются стандартным механизмом, а не «вручную в коде».
Как пользователь обычно включает такой отбор:
1) Открыть список (например, список документов).
2) Нажать «Еще» / «Настроить список» (или аналогичную команду настройки).
3) Перейти на вкладку «Отбор».
4) Добавить условие по нужному полю, даже если оно не отображается в колонках. Например: «Товары.Номенклатура = …» или «Товары.Характеристика = …».
Почему это работает без дополнительных объектов:
- Динамический список позволяет задавать правила отбора по полям источника данных, включая поля табличных частей объекта.
- Поле не обязано быть выведено в таблицу списка: его можно использовать как «поле отбора», не показывая пользователю в колонках.
Практический пример:
Нужно найти все «Поступления товаров», где в табличной части «Товары» встречается номенклатура «Кабель». В настройках списка добавляете отбор по полю «Товары.Номенклатура» - и список покажет только те документы, в которых в строках есть «Кабель».
Полезные нюансы (для практики и диагностики):
- Отбор по табличной части может быть тяжелее по производительности, чем отбор по реквизитам шапки: фактически системе нужно проверять строки табличной части. Поэтому такие фильтры лучше применять осознанно и по возможности уточнять период/организацию/тип документа.
- Если конфигурация работает в режиме совместимости со старой платформой или используется нестандартный источник данных списка, поведение отбора может отличаться - но для типовых динамических списков платформа поддерживает это штатно.
Итог: чтобы фильтровать список по табличным частям и скрытым реквизитам, достаточно пользоваться стандартными настройками динамического списка - никаких критериев отбора и обязательного переписывания запроса не требуется.