1с таблица формы в таблицу значений

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

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

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

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

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

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

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

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

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

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

при разработке на обычных формах было удобно выводить результат запроса используя метод СоздатьКолоки():

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

Код вывода результата запроса на управляемую форму:

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

Создаем реквизит формы ДанныеТаблицы , тип ТаблицаЗначений , на форму его не выносим. И саму таблицу формы и ее колонки будем создавать программно. Для удобства тестирования добавим еще команду формы СоздатьТаблицу .

Реквизит НомерТаблицы поочередно принимает значение нуля или единицы и нужен лишь для того, чтобы каждый раз получать другую таблицу значений.

Справка

УправляемаяФорма.ИзменитьРеквизиты()

  • ДобавляемыеРеквизиты (необязательный, тип Массив ). Массив, содержащий объекты типа РеквизитФормы . Добавлять можно реквизиты верхнего уровня и вложенные реквизиты, являющиеся колонками. К добавленным реквизитам верхнего уровня из модуля можно обращаться только с помощью конструкции ЭтотОбъект .
  • УдаляемыеРеквизиты (необязательный, тип Массив ). Массив, содержащий строки, описывающие пути к удаляемым реквизитам. Удалять можно только ранее программно добавленные реквизиты.
  • Изменяет структуру реквизитов формы. Сначала выполняется удаление реквизитов. Таким образом массивы добавляемых и удаляемых реквизитов могут содержать реквизиты с одинаковым путём.
  • Внимание! Действия добавления и удаления выполняются за один вызов. Следует учитывать, что операция изменения состава реквизитов является ресуркоемкой, поэтому операции изменения состава реквизитов формы выполняются пакетным образом.
  • Сервер, мобильное приложение (сервер).

ВсеЭлементыФормы.Добавить()

  • Имя (обязательный, тип Строка ). Уникальное имя добавляемого элемента.
  • ТипЭлемента (обязательный, тип Тип ). Тип добавляемого элемента.
  • Родитель (необязательный, тип: ГруппаФормы ; ТаблицаФормы ; УправляемаяФорма ). Родитель для добавляемого элемента. Если не указан, то добавляется на верхний уровень.
  • Тип: ДекорацияФормы ; ГруппаФормы ; КнопкаФормы ; ТаблицаФормы ; ПолеФормы .
  • Добавляет элемент в коллекцию.
  • Сервер, мобильное приложение (сервер).
Понравилась статья? Поделиться с друзьями:
Vkontakte.INFO
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: