ТаблицаЗначений (ValueTable)
Объект представляет собой саму таблицу значений. Все основные операции с таблицей производятся именно через этот объект. Он позволяет манипулировать строками таблицы значений и предоставляет доступ к коллекции колонок.
Данный объект является коллекцией значений. В качестве элемента коллекции выступает значение типа СтрокаТаблицыЗначений. Для объекта доступен обход коллекции посредством оператора Для каждого ... из ... Цикл. При обходе выбираются элементы коллекции. Возможно обращение к элементу коллекции посредством оператора [...]. В качестве аргумента передается индекс строки.
Пример:
// Пример работы с таблицей значения,
// связь с элементом управления ТабличноеПоле
// Создание описателя типов для таблицы значений
КЧ = Новый КвалификаторыЧисла(12,2);
КС = Новый КвалификаторыСтроки(20);
М = Новый Массив;
М.Добавить(Тип("Строка"));
ОписаниеТиповС = Новый ОписаниеТипов(М, , КС);
М.Очистить();
М.Добавить(Тип("Число"));
ОписаниеТиповЧ = Новый ОписаниеТипов{М, , , КЧ);
// Создание таблицы значений
Табл = Новый ТаблицаЗначений;
Сообщить("Число колонок таблицы значений: " + Табл.Колонки.Количество());
// добавим в таблицу значений три колонки
Табл.Колонки.Добавить("Отдел",ОписаниеТиповС, "Отдел");
Табл.Колонки.Добавить("Сотрудник",ОписаниеТиповС,"Фамилия сотрудника");
Табл.Колонки.Добавить("Оклад",ОписаниеТиповЧ,"Оклад");
Сообщить("Число колонок таблицы значений после добавления (1): "+Табл.Колонки.Количество());
// добавим строку
Стр=Табл.Добавить();
Стр.Отдел="Отдел 1";
Стр.Сотрудник="Иванов";
Стр.Оклад=5600;
// Добавление в форму табличного поля
ЭлементыФормы.Добавить(Тип("ТабличноеПоле"),"ТПоле",Истина);
// указание размеров и положения в форме
ЭлементыФормы.ТПоле.Верх=150; ЭлементыФормы.ТПоле.Лево=150;
ЭлементыФормы.ТПоле.Ширина=350; ЭлементыФормы.ТПоле.Высота=130;
// связь табличного поля с таблицей значений
ЭлементыФормы.ТПоле.Значение = Табл;
Сообщить("Число колонок табличного поля: " + ЭлементыФормы.ТПоле.Колонки, Количество());
// укажем ширину колонок
ЭлементыФормы.ТПоле.Колонки[0].Ширина = 20;
ЭлементиФормы.ТПоле.Колонки[1].Ширина = 20;
ЭлементыФормы.ТПоле.Колонки[2].Ширина = 10;
ЭлементыФормы.ТПоле.Колонки[2].ТекстПодвала = 10;
ЭлементыФормы.ТПоле.ЧередованиеЦветовСтрок = Истина;
ЭлементыФормы.ТПоле.Колонки[2].ОтображатьВПодвале = Истина;
// добавим новую колонку в таблицу значений
Табл.Колонки.Добавить("Стаж",ОписаниеТиповЧ,"Стаж работы");
ЭлементыФормы.ТПоле.Колонки[3].Ширина = 10;
Сообщить(" Число колонок таблицы значений после добавления (2): "+Табл.Колонки.Количество());
//в табличном поле колонка также добавляется
Сообщить("Число колонок табличного поля: "+ЭлементыФормы.ТПоле.Колонки.Количество());
// добавим новую колонку в табличное поле
ЭлементыФормы.ТПоле.Колонки.Добавить("Примечание") ;
ЭлементыФормы.ТПоле.Колонки[4].Ширина = 20;
// просмотр числа колонок таблицы значений и табличного поля
Сообщить("Число колонок таблицы значений не изменилось: "+Табл.Колонки.Количество());
Сообщить("Число колонок табличного поля увеличилось: " +Элементыформы.ТПоле.Колонки.Количество());
//показ имен и установка шрифта колонок
ШрифтШапки = Новый Шрифт ("Arial", 9, истина);
Для каждого Колонка Из Табл.Колонки Цикл
Сообщить("Имя колонки " + ": "+Колонка.Имя);
КонецЦикла;
Для каждого Колонка Из ЭлементыФормы.ТПоле.Колонки Цикл
Колонка.ШрифтШапки = ШрифтШапки;
КонецЦикла;
// ввод новой строки и данных по строке
ЭлементыФормы.ТПоле.ДобавитьСтроку();
ТекСтр = ЭлементыФормы.ТПоле.ТекущаяСтрока;
ТекСтр.Отдел = "Отдел 2"; ТекСтр.Сотрудник = "Петров";
ТекСтр.Оклад = 6700; ТекСтр.Стаж = 22;
Сообшить("Итог: Фонд = "+Табл.Итог(Табл.Колонки(2).Имя) +
" Среднее = "+Табл.Итог(Табл.Колонки[2].Имя)/Табл.Количество());
Результат выполнения:
Число колонок таблицы значений: 0
Число колонок таблицы значений после добавления (1) : 3
Число колонок табличного поля: 3
Число колонок таблицы значений после добавления (2) : 4
Число колонок табличного поля: 4
Число колонок таблицы значений не изменилось: 4
Число колонок табличного поля увеличилось: 5
Имя колонки : Отдел
Имя колонки : Сотрудник
Имя колонки : Оклад
Имя колонки : Стаж
Итог: Фонд = 12 300; Среднее = 6 150