При разработке интерфейсов на управляемых формах 1С часто возникает задача предоставить пользователю возможность самостоятельно фильтровать данные в таблице. Если вы используете ТаблицаЗначений в качестве реквизита формы, существует несколько подходов к решению этой задачи, различающихся по производительности и удобству использования.
Наиболее правильным и эффективным способом для визуальной фильтрации данных в таблице, которая уже выведена на форму, является использование свойства элемента управления ОтборСтрок. Этот метод позволяет скрыть ненужные строки, не удаляя их из коллекции данных таблицы. Это экономит ресурсы и сохраняет целостность объекта.
Давайте разберем, как это реализовать на практике. Предположим, у нас есть таблица с именем ТЗД, и мы хотим отфильтровать её по значению в колонке СостояниеERP.
Для реализации «живого» фильтра мы можем использовать обработчик события ПриИзменении поля ввода, в котором пользователь указывает критерий фильтрации:
&НаКлиенте
Процедура СостояниеERPПриИзменении(Элемент)
Отбор = Новый Структура;
Отбор.Вставить("СостояниеERP", СостояниеERP);
Элементы.ТЗД.ОтборСтрок = Отбор;
КонецПроцедуры
Важные моменты при использовании ОтборСтрок:
ОтборСтрок доступно только для элементов управления формы.ОтборСтрок значение Неопределено или пустую структуру.В ходе обсуждения часто упоминается метод НайтиСтроки(). Важно понимать принципиальную разницу между ним и свойством ОтборСтрок. Метод НайтиСтроки() работает с объектом данных (ТаблицаЗначений), а не с визуальным элементом формы.
// Пример использования НайтиСтроки
Отбор = Новый Структура;
Отбор.Вставить("СостояниеERP", СостояниеERP);
МассивНайденныхСтрок = ТЗД.НайтиСтроки(Отбор);
Данный метод возвращает Массив строк, соответствующих заданному фильтру. Он отлично подходит для программной обработки данных, поиска или проведения расчетов, но не меняет отображение таблицы на форме. Если вы хотите, чтобы пользователь увидел результат фильтрации, используйте ОтборСтрок.
При разработке интерфейсов в управляемых формах 1С крайне не рекомендуется использовать Условное оформление для скрытия строк целиком (например, путем установки цвета текста в тон фона). Это негативно сказывается на производительности, особенно при работе в веб-клиенте, и затрудняет работу пользователя с данными (скрытые строки остаются активными для выделения и копирования).
Если ваша задача требует частого фильтрования больших объемов данных, мы рекомендуем рассмотреть переход с ТаблицыЗначений на ДинамическийСписок. ДинамическийСписок обладает встроенными механизмами настройки отборов, которые не требуют написания дополнительного кода, и перекладывает задачу фильтрации на сторону сервера базы данных, что значительно повышает скорость отклика системы.
Подводя итоги, для простой и быстрой фильтрации ТаблицыЗначений на форме всегда отдавайте предпочтение свойству ОтборСтрок. Это чистый, производительный и рекомендуемый вендором способ управления видимостью данных в табличном поле.