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