Back to top

Отбор строк табличной части

Опубликовано e-1c@mail.ru - ср, 08/24/2016 - 05:08

Часто возникает задача показать только нужные строки в табличной части документа или справочника (или другого объекта). Для этого можно использовать замечательное свойство ОтборСтрок, которое входит в расширение табличного поля, связанного с табличной частью.
Использовать его очень просто:

//установить отбор
ЭлементыФормы.ИмяТабПоля.ОтборСтрок.Колонка1.Установить(ЗначениеОтбора);
 
//отключить отбор
ЭлементыФормы.ИмяТабПоля.ОтборСтрок.Колонка1.Установить(,Ложь);

или 2-й вариант:

ЭлементыФормы.ИмяТабПоля.ОтборСтрок.Колонка1.Использование = Истина;
ЭлементыФормы.ИмяТабПоля.ОтборСтрок.Колонка1.ВидСравнения = ВидСравнения.Равно;
ЭлементыФормы.ИмяТабПоля.ОтборСтрок.Колонка1.Значение = ЗначениеОтбора;

А теперь конкретные примеры:

//выбрать строки с ценой = 100
ЭлементыФормы.тпТовары.ОтборСтрок.Цена.Установить(100);
 
//выбрать строки с ценой 100 и опр. валютой
ЭлементыФормы.тпТовары.ОтборСтрок.Валюта.Установить(ВалютаУпр);
ЭлементыФормы.тпТовары.ОтборСтрок.Цена.Установить(200);
 
//выбрать строки с ценой >= 100 (неравенство)
ЭлементыФормы.тпТовары.ОтборСтрок.Цена.Использование = Истина;
ЭлементыФормы.тпТовары.ОтборСтрок.Цена.ВидСравнения = ВидСравнения.БольшеИлиРавно;
ЭлементыФормы.тпТовары.ОтборСтрок.Цена.Значение = 100;
 
//выбрать строки с ценой от 100 до 200 (интервал)
ЭлементыФормы.тпТовары.ОтборСтрок.Цена.Использование = Истина;
ЭлементыФормы.тпТовары.ОтборСтрок.Цена.ВидСравнения = ВидСравнения.Интервал;
ЭлементыФормы.тпТовары.ОтборСтрок.Цена.ЗначениеС = 100;
ЭлементыФормы.тпТовары.ОтборСтрок.Цена.ЗначениеПо = 200;
 
//выбрать строки с определенными товарами по списку ЭлементыФормы.тпТовары.ОтборСтрок.Товар.Использование = Истина;
 
ЭлементыФормы.тпТовары.ОтборСтрок.Товар.ВидСравнения = ВидСравнения.ВСписке;
ЭлементыФормы.тпТовары.ОтборСтрок.Товар.Значение.Добавить(Товар1);
ЭлементыФормы.тпТовары.ОтборСтрок.Товар.Значение.Добавить(Товар2);

С помощью этого свойства можно реализовать подчиненные (связанные) табличные части. При смене текущей строки в первой табличной части вторая табличная часть показывает только связанную информаци. Например, таким образом можно реализовать работу с комплектами: 1-я таб. часть - комплекты, вторая - состав комплекта.
Во второй табличной части должна быть колонка - идентификационный признак, связывающий ее с первой табличной частью. Таких колонок может быть несколько (составной ключ);
В событии ПриАктивизацииСтроки для первого табличного поля пишем:
ЭлементыФормы.СоставКомплекта.ОтборСтрок.Комплект.Установить(Комплект);

Обращаю ваше внимание, что при таком отборе не используются индексы и для больших табличных частей возможно замедление работы.