Отбор строк табличной части
08.06.2018
Теги: 1С:Предприятие • ТаблицаФормы • УправляемаяФорма • ЭлементФормы
Часто возникает задача показать только нужные строки в табличной части документа или справочника. Для этого можно использовать свойство ОтборСтрок
, которое входит в расширение табличного поля, связанного с табличной частью. Для обычных форм использовать его очень просто:
// установить отбор ЭлементыФормы.ИмяТабличногоПоля.ОтборСтрок.ИмяКолонки.Установить(ЗначениеОтбора);
// отключить отбор ЭлементыФормы.ИмяТабличногоПоля.ОтборСтрок.ИмяКолонки.Установить(,Ложь);
Или второй вариант:
ЭлементыФормы.ИмяТабличногоПоля.ОтборСтрок.ИмяКолонки.Использование = Истина; ЭлементыФормы.ИмяТабличногоПоля.ОтборСтрок.ИмяКолонки.ВидСравнения = ВидСравнения.Равно; ЭлементыФормы.ИмяТабличногоПоля.ОтборСтрок.ИмяКолонки.Значение = ЗначениеОтбора;
А теперь конкретные примеры:
// выбрать строки с ценой = 100 ЭлементыФормы.Товары.ОтборСтрок.Цена.Установить(100); // выбрать строки с ценой 100 и опр. валютой ЭлементыФормы.Товары.ОтборСтрок.Валюта.Установить(ВалютаУпр); ЭлементыФормы.Товары.ОтборСтрок.Цена.Установить(200); // выбрать строки с ценой >= 100 (неравенство) ЭлементыФормы.Товары.ОтборСтрок.Цена.Использование = Истина; ЭлементыФормы.Товары.ОтборСтрок.Цена.ВидСравнения = ВидСравнения.БольшеИлиРавно; ЭлементыФормы.Товары.ОтборСтрок.Цена.Значение = 100; // выбрать строки с ценой от 100 до 200 (интервал) ЭлементыФормы.Товары.ОтборСтрок.Цена.Использование = Истина; ЭлементыФормы.Товары.ОтборСтрок.Цена.ВидСравнения = ВидСравнения.Интервал; ЭлементыФормы.Товары.ОтборСтрок.Цена.ЗначениеС = 100; ЭлементыФормы.Товары.ОтборСтрок.Цена.ЗначениеПо = 200; // выбрать строки с определенными товарами по списку ЭлементыФормы.Товары.ОтборСтрок.Товар.Использование = Истина; ЭлементыФормы.Товары.ОтборСтрок.Товар.ВидСравнения = ВидСравнения.ВСписке; ЭлементыФормы.Товары.ОтборСтрок.Товар.Значение.Добавить(ПервыйТовар); ЭлементыФормы.Товары.ОтборСтрок.Товар.Значение.Добавить(ВторойТовар);
ОтборСтрок
входит в расширение табличного поля табличной части, т.е. табличное поле должно быть связано с табличной частью. Если же оно связано с динамическим списком, то здесь нужно использовать свойство Отбор
для объекта типа СправочникСписок
.
С помощью этого свойства можно реализовать подчиненные (связанные) табличные части. При смене текущей строки в первой табличной части, вторая табличная часть показывает только связанную информацию. Например, таким образом можно реализовать работу с комплектами: первая табличная часть — комплекты, вторая — состав комплекта.
Во второй табличной части должна быть колонка — идентификационный признак, связывающий ее с первой табличной частью. Таких колонок может быть несколько (составной ключ). В событии ПриАктивизацииСтроки
для первого табличного поля пишем:
ЭлементыФормы.СоставКомплекта.ОтборСтрок.Комплект.Установить(Комплект);
Для управляемых форм используется ФиксированнаяСтруктура
:
ЭлементыФормы.ИмяТабличногоПоля.ОтборСтрок = Новый ФиксированнаяСтруктура("Поставщик", Поставщик);
Отбор по двум колонкам:
ЭлементыФормы.ИмяТабличногоПоля.ОтборСтрок = Новый ФиксированнаяСтруктура( "Номенклатура,Поставщик", Номенклатура, Поставщик );
Или второй вариант:
ПараметрыОтбора = Новый Структура(); ПараметрыОтбора.Вставить("Номенклатура", Номенклатура); ПараметрыОтбора.Вставить("Поставщик", Поставщик); ЭлементыФормы.ИмяТабличногоПоля.ОтборСтрок = Новый ФиксированнаяСтруктура(ПараметрыОтбора);
Поиск: 1С:Предприятие • Обычная форма • Отбор строк • Таблица формы • Табличная часть • Управляемая форма • Элемент формы