Таблица значений — это универсальная коллекция, которая может содержать неограниченное количество строк. Тут же встает дилемма: у таблицы значений в обычных формах нет инструментов интерактивного отбора. Они есть только у табличной части. Но у табличной части есть другое ограничение: количество строк ограничено и не может превышать 99 999 строк. Как быть?
Не отчаивайтесь, выход есть, но придется немного поработать руками.
Допустим, у нас есть таблица со следующей структурой:
- Дата (Дата) — день наблюдений
- Время дня (Строка) — время дня (утро, день, вечер и ночь)
- Температура (Число) — средняя температура
Планируется, что записи таблицы будут отбираться по значению поля Дата.
Сначала создадим таблицу значений на форме. Обязательно укажем структуру колонок, чтобы не приходилось создавать их каждый раз заново:
Среди реквизитов формы также создадим реквизит типа ТаблицаЗначений, который будет хранить исходную таблицу значений:
Для поля «Отбор по дате» назначим два обработчика событий: первый — ПриИзменении()
Процедура ОтборПоДатеПриИзменении(Элемент) //зададим параметры поиска по дате ПараметрыОтбора = Новый Структура("Дата", ОтборПоДате); //найдем нужные строки найдСтроки = тзИсходная.НайтиСтроки(ПараметрыОтбора); //скопируем выбранные строки таблицы в текущую тз = тзИсходная.Скопировать(найдСтроки); КонецПроцедуры
и второй — Очистка()
:
Процедура ОтборПоДатеОчистка(Элемент, СтандартнаяОбработка) //отключим обработчик ПриИзменении СтандартнаяОбработка = Ложь; //просто присвоим исходную таблицу текущей тз = тзИсходная; КонецПроцедуры
Проверить, как это работает, предлагаю Вам в качестве домашнего задания.
Выводы:
- Если в вашей таблице количество строк гарантированно не превысит 99 999 строк, используйте табличную часть;
- В случае, если доступно использование управляемых форм — реализуйте на них;
- В остальных случаях пользуйтесь способом, описанным выше;
Читайте также:
Поделиться страницей в соц.сетях