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

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

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

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

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

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

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

Код 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 |  Дата:   Прочитано: 181878
 +6 
Распечатать
Возможно, вас также заинтересует
17 правил для составления оптимального ЗАПРОСа к данным базы 1С 50
Для формирования и выполнения запросов к таблицам базы данных в платформе 1С используется специальный объект языка программирования Запрос . Создается этот объект вызовом конструкции Новый Запрос . Запрос удобно использовать, когда требуется получ
1С 7.x : Как получить курсы валют с сайта НБУ http://www.bank.gov.ua/ за любую дату ? 6
Функция ПолучитьТаблицуКурсовНБУ(ДатаКурса, Ежедневно = 1) // если в качестве второго параметра указать число отличное от 1 - получем валюты, которые котируются на ежемесячной основе Перем Reader, Url, Точки, HtmlTab, Строк, Р, НомСтроки, НомЯче
COM-подключение к базе 7.7 из 8.2 1С 7
Если код выполняется на стороне клиента, то необходимо наличие базы 7.7 на локальной машине. Пример (На форме объекта присутствует реквизит Таблица(ТаблицаЗначений)): НаКлиенте Процедура Загрузки() ПутьКБазе=" D:ВашаБаза1с77" ; Пользователь=
Excel файл как Внешний источник данных 16
Подключимся и загрузим из файла Excel данные в таблицу значений 1С. Сделать теперь это очень просто. 1. В конфигурации добавляет новый объект метаданных типа " Внешние источники данных" и назовем его просто " Excel" . https://helpf.pro/uploads/img
Google maps : вывод точек на карту и режим панорамы 9
В отличие от яндекс карт в GMaps можно использовать панорамы - за что им большой плюс! Надеюсь в яндексе прочитают этот пост и тоже когда-нибудь это сделают! Для клиента нужно было сделать вывод объектов на карту С возможностью просмотра панора
Посмотреть все результаты поиска похожих
Вы не можете отправить комментарий анонимно, пожалуйста войдите или зарегистрируйтесь.