0

Отбор в таблице значений (обычные формы)

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

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

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

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

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

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

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

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

Процедура ОтборПоДатеПриИзменении(Элемент)
	
	//зададим параметры поиска по дате
	ПараметрыОтбора = Новый Структура("Дата", ОтборПоДате);
	//найдем нужные строки
	найдСтроки = тзИсходная.НайтиСтроки(ПараметрыОтбора);
	//скопируем выбранные строки таблицы в текущую
	тз = тзИсходная.Скопировать(найдСтроки);
	
КонецПроцедуры

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

Процедура ОтборПоДатеОчистка(Элемент, СтандартнаяОбработка)
	
	//отключим обработчик ПриИзменении
	СтандартнаяОбработка = Ложь;
	//просто присвоим исходную таблицу текущей
	тз = тзИсходная;
	
КонецПроцедуры

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

Выводы:

  1. Если в вашей таблице количество строк гарантированно не превысит 99 999 строк, используйте табличную часть;
  2. В случае, если доступно использование управляемых форм — реализуйте на них;
  3. В остальных случаях пользуйтесь способом, описанным выше;

Читайте также:

  1. Отбор в табличной части (обычные формы)

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *