====== Таблица значений ======
===== Описание =====
Таблица значений это один из самых частых используемых коллекций и одна из самых удобных. Используется для хранения данных разных объемов, как больших так и маленьких.
Внимание.Таблица значений доступна только на сервере.
Таблицу значений можно характеризовать следующими свойствами:
* Таблица значений имеет коллекцию строк и коллекцию колонок.
* Колонки таблицы значений могут быть строго типизированы, хотя это необязательно.
* Таблица значений может быть выведена на форму и обработана пользователем.
Таблица значений представляет широкий выбор возможностей для обработки ее значений:
* Построение индексов для более быстрой обработки.
* Выгрузка загрузка, как всей таблицы, так и отдельных строк\столбцов, копирование и заполнение значений.
* Использование отборов.
* Сортировка по столбцам.
* Свертывание.
* Выгрузка полностью или частично.
===== Создание и использование =====
Создание таблицы значений происходит с помощью метода Новый:
НоваяТаблица = Новый ТаблицаЗначений;
//После создания таблицы значений необходимо определить колонки таблицы значений:
НоваяТаблица.Колонки.Добавить(«Колонка1»);
Так как колонки таблицы значений это коллекция, для нее доступен не только метод добавить но и остальные методы характерные для коллекций(Найти, Вставить, Удалить).
При определении колонки кроме имени можно указать ее тип, заголовок и ширину колонки. Последние два параметра необходимы для уточнения как будет выглядеть таблица на форме. Тип колонки задается совершенно не очевидно, для этого в качестве параметра, нужно передать значение с типом ''ОписаниеТипов''. Более детальный синтаксис можно посмотреть здесь: [[1c:общие:описание_типов_значений|Общие объекты->Описание типов значений]], но к примеру если просто нужен тип справочник номенклатура то проще его будет указать так:
ТипНоменклатура = Новый ОписаниеТипов(«СправочникСсылка.Номенклатура»);
МояТаблица.Колонки.Добавить("Номенклатура", ТипНоменклатура);
Добавление строк в Таблицу значений происходит с помощью метода Добавить() или Вставить(), чем они отличаются вы наверняка знаете, добавление происходит следующим образом:
НоваяСтрокаТаблицы = НоваяТаблица.Добавить();
//Далее следует заполнение колонок таблицы
НоваяСтрокаТаблицы.Колонка1 = ЗначениеДляЗаполнения
===== Другие часто используемые операторы при работе с таблицей значений =====
* ''Очистить'' – очищает таблицу от данных, сохраняя структуру, параметров не имеет
* ''НайтиСтроки(Отбор)'' – ищет строки по указанному отбору, который должен быть [[1c:коллекции:структура|структурой]]. Возвращает массив строк, следует учесть что метод возвращает массив с ссылками на строки таблицы, следовательно изменяя строки в массиве мы изменяем их в таблице.
* ''Скопировать'' – позволяет скопировать всю таблицу или определенные строки и колонки, возвращает таблицу значений. Параметры указывать необязательно, если вы хотите скопировать всю таблицу значений. Например: МассивСтрок = НайтиСтроки(Новый Структура("КолонкаРаз",ЗначениеДляПоиска));
КопияТаблицы = НоваяТаблица.Скопировать(МассивСтрок, "КолонкаРаз,КолонкаДва,КолонкаТри");
* ''Заполнить'' - заполняет колонку\колонки определенным значением. НоваяТаблица.Заполнить(Значение, "КолонкаРаз");
* ''Найти()'' – ищет значение в одной колонке или во всех, возвращает строку таблицы значений или ''Неопределенно''. Пример НайденнаяСтрока = НоваяТаблица.Найти(Значение, "КолонкаРаз");
* Итог("НазваниеКолонки") – Выводит итог по числовым данным в указанной колонке. Возвращает итог или ''Неопределенно'', если среди значений в колонке, число не было обнаружено.
* Свернуть – группирует строки таблицы, суммируя числовые колонки, оставляя только уникальные значения в суммированных колонках то есть при наличии вот такой таблицы.
^ № пп ^ Номенклатура ^ Количество ^
| 1 | Лопата | 5 |
| 2 | Вилы | 6 |
| 3 | Грабли | 9 |
| 4 | Лопата | 4 |
| 5 | Грабли | 2 |
^ Итого 26 штук^^^
После метода ''Свернуть''
Таблица.Свернуть("Номенклатура", "Количество");
мы получим вот такую таблицу:
^ № пп ^ Номенклатура ^ Количество ^
| 1 | Лопата | 9 |
| 2 | Вилы | 6 |
| 3 | Грабли | 11 |
^ Итого 26 штук^^^
Так как таблица значений недоступна на клиенте, для отображения таблицы на форме необходимо использовать метод ''ЗначениеВДанныеФормы(ТаблицаСДанными, ТаблицаНаФорме)''