Переход с обычных форм на управляемые часто вызывает вопросы у пользователей и разработчиков, привыкших к определенному поведению интерфейса. Одной из таких классических задач является необходимость снять отбор или поиск только по одной конкретной колонке, не сбрасывая при этом все остальные настройки списка. В обычных формах для этого существовала отдельная кнопка, а в управляемом приложении (УФ) логика работы несколько иная. Разберем подробно, как добиться нужного результата современными средствами платформы 1С:Предприятие 8.3.
Прежде всего, проанализируем ситуацию и разделим два принципиально разных механизма, которые визуально могут выглядеть похоже, но работают по-разному. В управляемых формах важно различать:
ДинамическийСписок. Отборы более стабильны, их можно комбинировать в группы «И», «ИЛИ» и выводить на форму для быстрого доступа.Для решения задачи пользователя «снимать отбор по одной колонке» мы можем использовать несколько стратегий. Рассмотрим их по шагам.
Начиная с современных релизов платформы 8.3 (в частности, в интерфейсе «Такси»), проблема выборочной очистки поиска была решена на уровне ядра. Если пользователь выполняет поиск последовательно по нескольким колонкам, в верхней части таблицы появляется специальная панель. Рассмотрим, как убедиться, что она включена и работает корректно:
Таблица (ваш список документов или справочника).Авто или Верх.Как это работает для пользователя: При вводе значений через «Найти» над списком появляются визуальные теги (облака) с названиями колонок и значениями. Чтобы отменить поиск только по «Организации», достаточно нажать на «крестик» рядом с соответствующим тегом. Остальные фильтры (по складу, контрагенту и т.д.) останутся активными. Это самый простой и правильный путь, не требующий написания кода.
Если пользователям неудобно постоянно нажимать Ctrl+F, мы можем вынести наиболее важные поля (Организация, Касса, Ответственный) непосредственно на форму. Это позволит управлять ими точечно. Проанализируем процесс настройки:
Организация).После этого над списком появятся полноценные поля ввода. Если пользователь выберет значение в одном поле, список отфильтруется. Чтобы отменить отбор именно по этой колонке, пользователю достаточно нажать на кнопку очистки (крестик) в самом поле или просто удалить текст. При этом другие поля «быстрого доступа» сохранят свои значения.
В некоторых случаях требуется реализовать специфическую логику, например, кнопку в контекстном меню «Сбросить текущий фильтр». Для этого нам понадобится программно обратиться к компоновщику настроек. Выясним причину, почему это эффективно: мы можем напрямую управлять коллекцией Элементы в пользовательских настройках.
Рассмотрим пример кода, который отключает отбор по конкретному полю, не затрагивая остальные:
&НаКлиенте
Процедура СнятьОтборПоПолю(ИмяПоля)
// Получаем элементы пользовательских настроек динамического списка
СписокОтборов = Список.КомпоновщикНастроек.ПользовательскиеНастройки.Элементы;
Для Каждого Элемент Из СписокОтборов Цикл
// Проверяем, является ли элемент отбором и совпадает ли левое значение с нашим полем
Если ТипЗнч(Элемент) = Тип("ЭлементОтбораКомпоновкиДанных") Тогда
СтрокаПоля = Строка(Элемент.ЛевоеЗначение);
Если СтрокаПоля = ИмяПоля Тогда
// Выключаем использование этого отбора
Элемент.Использование = Ложь;
КонецЕсли;
КонецЕсли;
КонецЦикла;
КонецПроцедуры
Этот метод позволяет гибко управлять состоянием списка. Мы можем передать в эту процедуру строку "Организация" или "Подразделение", и платформа мгновенно обновит динамический список, сохранив все прочие условия, заданные пользователем.
Стоит напомнить пользователям о существовании диалога «Расширенный поиск» (вызывается сочетанием клавиш Ctrl+Alt+F). В отличие от простого поиска, это окно содержит список всех полей, по которым в данный момент установлены фильтры. Рассмотрим ситуацию: если пользователь хочет изменить или удалить один из критериев, он может вызвать это окно, очистить нужное значение и нажать «ОК». Это стандартный механизм платформы 1С 8.3, который позволяет видеть всю картину фильтрации в одном месте.
Мы проанализировали ситуацию и пришли к выводу, что в управляемых формах нет нужды «рисовать свои кнопки» для каждого действия, если знать возможности платформы. Основная рекомендация — использовать Строку поиска в верхней части списка с отображением тегов условий или выносить поля в Быстрый доступ.
Основные выводы:
ПоложениеСтрокиПоиска у таблицы формы.ПользовательскиеНастройки для реализации быстрого управления фильтрами.Отменить поиск (или Ctrl+Q) в УФ всегда работает глобально, поэтому для точечных правок лучше использовать визуальные элементы управления в шапке списка.Таким образом, комбинируя стандартные настройки динамического списка и небольшие доработки в визуальной части формы, можно создать интерфейс, который будет даже удобнее и функциональнее, чем старые «обычные» формы.