Таблица значений в языке 1С применяется для работы с различными объектами. Тип таблица значений относиться к универсальным коллекциям значений.
Таблица значений — это не сохраняемый в базе данных объект. Он позволяет
строить динамически изменяемые наборы значений и манипулировать ими (добавлять, редактировать, сортировать и удалять элементы). Ограничений на типы хранимых значений нет, т. е. в одном списке значений могут храниться данные разных типов. В отличие от списка значений, в каждой строке которого записано одно значение (по сути, таблица из одного столбца), таблица значений имеет большое количество строк и столбцов.
Создание таблицы значений в языке 1С
Создание таблицы значений можно разделить на три этапа:

Во-первых инициализация таблицы значений:
Табабб=новый ТаблицаЗначений;
Во-вторых создание колонок для данной таблицы значений:
Табабб.Колонки.Добавить("Адресат");
Табабб.Колонки.Добавить("Адрес");
Табабб.Колонки.Добавить("Сообщение");
В третьих заполняем таблицу значений данными:
//заполняет строку таблицы значений
Стр = Табабб.Добавить();
Стр.Адресат=док.ФизЛицо;
Стр.Адрес=док.ФизЛицо.КонтактнаяИнформация[3].АдресЭП;
Стр.Сообщение="";
Cтрока таблицы значений 1c
Строка заполняется следующим образом:
Во-первых добавляем строку в таблицу значений
Стр = Табабб.Добавить();
Во-вторых заполняем строку таблицы значений данными
Стр.Адресат=док.ФизЛицо;
Стр.Адрес=док.ФизЛицо.КонтактнаяИнформация[3].АдресЭП;
Стр.Сообщение="";
Пример создания и заполнения таблицы значений:

Методы объекта Таблица значений в языке 1с

Метод Добавить. Добавляет строку а конец таблицы значений.
ТЗ=новый ТаблицаЗначений;
НоваяСтрока=ТЗ.Добавить();
НоваяСтрока.Адресат="Петров Петр Иванович";
НоваяСтрока.Адрес="doc@ithelpyou.ru";
НовасСтрока.Сообщение="Добавлено значение программно";
Метод Вставить. Вставляет новый элемент в таблицу значений на позицию с указанным индексом.
ТЗ=новый ТаблицаЗначений;
НоваяСтрока=ТЗ.Вставить(2);
НоваяСтрока.Адресат="Иванов Иван Иванович";
НоваяСтрока.Адрес="doc@ithelpyou.ru";
НовасСтрока.Сообщение="Вставлено значение программно";
Метод Количество. Возвращает количество строк таблицы значений.
Синтаксис:
Количество();
Сообщить(ТЗ.Количество());
Метод Итог. Суммирует значения всех строк в указанной колонке. Суммирование производится по числовым типам данных.
Синтаксис:
Итог(Колонка);
Сообщить(ТЗ.Итог("Сумма"));
Метод Сортировать. Сортирует таблицу значений в соответствии с указанными правилами сортировки.
Синтаксис:
Сортировать(Колонки);
ТЗ.Сортировать("Адресат");
Метод Удалить. Удаляет строку таблицы значений. Номер-это номер строки таблицы значений, которую необходимо удалить.
Синтаксис:
Удалить(Номер);
Метод ВыбратьСтроку. Вызывает модальное диалоговое окно для интерактивного выбора строки из таблицы значений.
Синтаксис:
ВыбратьСтроку([Заголовок][, НачальнаяСтрока]);
Где: Заголовок — заголовок окна выбора; НачальнаяСтрока указывает строку
таблицы значений, на которой будет установлен курсор при открытии окна выбора.
Метод Очистить. Удаляет все строки таблицы значений.
Синтаксис:
Очистить();
1с таблица значений найти
Метод Найти. Осуществляет поиск значения в указанных колонках таблицы значений.
Синтаксис:
Найти(Значение[, Колонки]);
Значение-искомое значение; Колонки-колонки, в которых производиться поиск. Если Параметр Колонки не задан, поиск выполняется по всей таблице значений ТЗ.
1с таблица значений свернуть
Метод Свернуть. Осуществляет сворачивание таблицы значений по указанным колонкам группировки. Строки, у которых совпадают значения в колонках, указанных в первом параметре, сворачиваются в одну строку. Значения этих строк, хранящиеся в колонках, указанных во втором параметре, суммируются. Списки колонок не должны пересекаться. Колонки, не вошедшие ни в один из списков колонок, после выполнения метода удаляются из таблицы значений.
Синтаксис:
Свернуть(КолонкиГруппировки[, КолонкиСуммирования]);
Как записать результат запроса в таблицу значений?
Таблица=новый ТаблицаЗначений;
Таблица=Запрос.Выполнить().Выгрузить();
Как проверить наличие колонки в Таблице значений?
Если ТаблицаДанных.Колонки.Найти("Всего")<>Неопределено Тогда
КонецЕсли;
Проверка заполнения строки таблицы значений
Если Строка.Всего<>"" Тогда
СтрокаРуп.МаксимальнаяНагрузка=Число(Строка.Всего);
КонецЕсли;
Нахождение максимума в таблице значений 1с
МаксЗначение = 0;
Для Каждого СтрокаТЧ Из ТЧ Цикл
МаксЗначение = Макс(МаксЗначение, СтрокаТЧ.НашаКолонка);
КонецЦикла;
На примере таблицы в 10 млн. строк:
1. Сортировка — 96 сек.
2. Прямой цикл — 55 секунд.
На маленьких таблицах (менее 10 тыс. строк) разница практически незаметна.
Как найти строки в таблице значений 1с
Синтаксис команды НайтиСтроки.
НайтиСтроки (FindRows)
Синтаксис:
НайтиСтроки(<ПараметрыОтбора>)
Параметры:
<ПараметрыОтбора> (обязательный)
Тип: Структура.
Задает условия поиска: ключ структуры определяет имя колонки, по которой будет осуществляться поиск, а значение структуры - искомое значение.
Возвращаемое значение:
Тип: Массив.
Массив строк таблицы значений, соответствующих условиям поиска.
Замечание! Массив хранит ссылки на строки таблицы значений, то есть при изменении строки в таблице, значение в массиве тоже будет измененным.
Описание:
Осуществляет поиск строк таблицы значений, отвечающих заданным условиям поиска.
Скрыть
Пример нахождения строки со значением «Иванов» из таблицы значений содержащие поле Студент. НайденныеСтроки это массив к его элементам можно обращаться по индексу.
Студент=Справочники.Студенты.НайтиПоНаименованию("Иванов");
ПараметрыОтбора = Новый Структура;
ПараметрыОтбора.Вставить("Студент", Студент);
НайденныеСтроки = ТЗ.НайтиСтроки(ПараметрыОтбора);
1с заполнение строки таблицы значений.
В приведенном ниже примере показано, как можно добавить содержимое одной таблицы значений в другую.
Для Каждого СтрокаТЗ2 из ТЗОткуда Цикл;
ЗаполнитьЗначенияСвойств(ТЗКуда.Добавить(), СтрокаТЗ2);
КонецЦикла;
