helpf.pro
Регистрация
 +6 
Распечатать

1С 8.3 : Табличная часть ~ Как настроить отбор строк?

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

в обычном приложении параметр для ОтборСтрок - Отбор...

в управляемом приложении - ФиксированнаяСтруктура

ОтборСтрок, которое входит в расширение табличного поля, связанного с табличной частью.

Управляемые формы

Код 1C v 8.3
 СписокЗаказовНаФорме.ОтборСтрок = Новый ФиксированнаяСтруктура("Клиент", СписокЗаказовНаФорме.ТекущиеДанные.Клиент);    

пример:

Код 1C v 8.3
 СписокЗаказовНаФорме = ЭтаФорма.Элементы.СписокЗаказов; 
ТекНомер = Неопределено; 
Для НомерСтроки = 0 По СписокЗаказов.Количество()-1 Цикл 
Сообщение = Новый СообщениеПользователю; 
Если СписокЗаказовНаФорме.ПроверитьСтроку(НомерСтроки) Тогда 
СписокЗаказовНаФорме.ТекущаяСтрока = НомерСтроки; 
Если ТекНомер = Неопределено Тогда 
Если ЗначениеЗаполнено(СписокЗаказовНаФорме.ТекущиеДанные.Машина) Тогда 
ТекНомер = СписокЗаказовНаФорме.ТекущиеДанные.Машина; 
Иначе 
Сообщение = Новый СообщениеПользователю; 
Сообщение.Текст = "Установите нужный номер автомобиля в первой строке списка"; 
Сообщение.Поле = "СписокЗаказов[" + НомерСтроки + "].Машина"; 
Сообщение.Сообщить(); 
СписокЗаказовНаФорме.ОтборСтрок = Новый ФиксированнаяСтруктура("Клиент", СписокЗаказовНаФорме.ТекущиеДанные.Клиент); 
Возврат; 
КонецЕсли; 
Иначе 
СписокЗаказовНаФорме.ТекущиеДанные.Машина = ТекНомер; 
КонецЕсли; 
КонецЕсли; 
КонецЦикла; 

или такой динамический отбор

Код 1C v 8.3
 ЭлементОтбора = Список.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("ИмяПоляОтбора");
ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ЭлементОтбора.Использование = Истина;
ЭлементОтбора.РежимОтображения = РежимОтображенияЭлементаНастройкиКомпоновкиДанных.Недоступный;
ЭлементОтбора.ПравоеЗначение = ЗначениеПоляОтбора;


//очистка отбора (подставьте свои элементы) 
&НаКлиенте
Процедура ОчиститьОтбор(Команда)
    этаформа.Список.Отбор.Элементы.Очистить();
КонецПроцедуры

Обычные формы

Использовать его очень просто:

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

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

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

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

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

Код 1C v 8.х
 //выбрать строки с ценой = 100 
ЭлементыФормы.тпТовары.ОтборСтрок.Цена.Установить(100); 

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

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

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

-------- 
//выбрать строки с определенными товарами по списку 

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

Подчиненные табличные части в 8.х

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

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

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

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

При добавлении новой строки во вторую табличную часть, нужно следить за тем, чтобы идентификационная колонка была установлена.

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

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

Если понадобилось перебрать строки, вошедшие в отбор, то это можно сделать, только заново перебрав все строки и проверив условие отбора для каждой строки. Перебрать строки табличного поля, которые сейчас на экране - невозможно.

Разместил:   Версии: | 8.x | 8.2 УП | 8.3 |  Дата:   Прочитано: 192959
 +6 
Распечатать
Возможно, вас также заинтересует
17 правил для составления оптимального ЗАПРОСа к данным базы 1С 52
Для формирования и выполнения запросов к таблицам базы данных в платформе 1С используется специальный объект языка программирования Запрос . Создается этот объект вызовом конструкции Новый Запрос . Запрос удобно использовать, когда требуется получ
Google maps : вывод точек на карту и режим панорамы 9
В отличие от яндекс карт в GMaps можно использовать панорамы - за что им большой плюс! Надеюсь в яндексе прочитают этот пост и тоже когда-нибудь это сделают! Для клиента нужно было сделать вывод объектов на карту С возможностью просмотра панора
ВКС - Высококвалифицированные специалисты - какие настройки нужно сделать ЗУП? 0
В этой статье мы вкратце расскажем - какие настройки нужно сделать ЗУП для временно пребывающих высококвалифицированных иностранных специалистов. Гражданство Откройте сотрудника и перейдите в настройки данных о Гражданстве Если сотрудник ВКС то
Выгрузка картинок из базы 1С в XML 2
В нынешнее время для электронного каталога или интернет-магазина необходимо выгружать не только информацию о цене и характеристиках товара, но и сопутствующие изображения. Хранящиеся в базе или связанные с номенклатурой изображения порой приходилось
Дерево значений в таблицу значений или в табличную часть и обратно 10
Для одной организации надо было реализовать документы, где вместо табличной части надо использовать дерево и все это на управляемых формах. Но дерево нельзя сохранить в базе в текущем виде. Пришлось использовать табличную часть документа для хранени
Посмотреть все результаты поиска похожих
Комментарии
Исходный кот
02.10.2024 15:41Комментарий: 1
Исходный кот
ЭлементОтбора = Список.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));[/pre]

Что такое "Список"?

Вы не можете отправить комментарий анонимно, пожалуйста войдите или зарегистрируйтесь.