Отбор строк табличной части (1Сv8)

Материал из КинтВики
Версия от 15:34, 7 июля 2016; Дмитрий Малюгин (обсуждение | вклад)

(разн.) ← Предыдущая | Текущая версия (разн.) | Следующая → (разн.)
Перейти к: навигация, поиск

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

Источник: http://www.forum.mista.ru/topic.php?id=10066

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

Использовать его очень просто: <source lang=1c> //установить отбор

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

//отключить отбор

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

</source>

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

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


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

<source lang=1c> //выбрать строки с ценой = 100

ЭлементыФормы.тпТовары.ОтборСтрок.Цена.Установить(100);

//выбрать строки с ценой 100 и опр. валютой

ЭлементыФормы.тпТовары.ОтборСтрок.Валюта.Установить(ВалютаУпр); ЭлементыФормы.тпТовары.ОтборСтрок.Цена.Установить(200);

//выбрать строки с ценой >= 100 (неравенство)

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

//выбрать строки с ценой от 100 до 200 (интервал)

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

//выбрать строки с определенными товарами по списку ЭлементыФормы.тпТовары.ОтборСтрок.Товар.Использование = Истина;

ЭлементыФормы.тпТовары.ОтборСтрок.Товар.ВидСравнения = ВидСравнения.ВСписке; ЭлементыФормы.тпТовары.ОтборСтрок.Товар.Значение.Добавить(Товар1); ЭлементыФормы.тпТовары.ОтборСтрок.Товар.Значение.Добавить(Товар2);

</source>

С помощью этого свойства можно реализовать подчиненные (связанные) табличные части. При смене текущей строки в первой табличной части вторая табличная часть показывает только связанную информаци. Например, таким образом можно реализовать работу с комплектами: 1-я таб. часть - комплекты, вторая - состав комплекта.

Во второй табличной части должна быть колонка - идентификационный признак, связывающий ее с первой табличной частью. Таких колонок может быть несколько (составной ключ);

В событии ПриАктивизацииСтроки для первого табличного поля пишем:

ЭлементыФормы.СоставКомплекта.ОтборСтрок.Комплект.Установить(Комплект);


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

Особенности

--Павел Лазарев 12:57, 22 октября 2009 (SAMST)

Для того чтобы этот отбор работал, колонка отбора должна быть включена в состав табличного поля.