1С фильтр таблицы значений

Как настроить отбор строк?

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Читайте также:  Холодильник открывающийся с двух сторон

Похожие FAQ

Еще в этой же категории

отбор в динамическом списке программно 2
Для установки отбора в динамическом списке используется свойство Отбор. Добавление нового элемента отбора осуществляется следующим образом: ЭлементОтбора = Список.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных")); Для того чтобы новый Посмотреть все в категории Работа с Формой (Диалог) и её элементами

Существует несколько способов сделать отбор в таблице значений.

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

Второй — использовать метод таблицы значений «НайтиСтроки». Методу передается структура в которой ключ — это название колонки, а значение — это нужное нам значение отбора. Этот метод неплох, но у него есть два серьезных недостатка. Во-первых, функция вернет массив строк таблицы значений (т.е. возможно потребуются дополнительные действия). А во-вторых, единственный допустимый вид сравнения — это равенство.

И, наконец, третий способ — использование объекта «ПостроительЗапроса».

Таблица значений — это универсальная коллекция, которая может содержать неограниченное количество строк. Тут же встает дилемма: у таблицы значений в обычных формах нет инструментов интерактивного отбора. Они есть только у табличной части. Но у табличной части есть другое ограничение: количество строк ограничено и не может превышать 99 999 строк. Как быть?

Не отчаивайтесь, выход есть, но придется немного поработать руками.

Допустим, у нас есть таблица со следующей структурой:

  • Дата (Дата) — день наблюдений
  • Время дня (Строка) — время дня (утро, день, вечер и ночь)
  • Температура (Число) — средняя температура

Планируется, что записи таблицы будут отбираться по значению поля Дата.

Сначала создадим таблицу значений на форме. Обязательно укажем структуру колонок, чтобы не приходилось создавать их каждый раз заново:

Читайте также:  Схема подключения потенциометра к ардуино

Среди реквизитов формы также создадим реквизит типа «ТаблицаЗначений», который будет хранить исходную таблицу значений:

Для поля «Отбор по дате» назначим два обработчика событий: первый — ПриИзменении()

и второй — Очистка() :

Проверить, как это работает, предлагаю Вам в качестве домашнего задания.

Оцените статью
Добавить комментарий

Adblock detector