Примеры работы с таблицей значений

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

Создание таблицы значений

// Создание пустой таблицы
ТЗ = Новый ТаблицаЗначений;

// Создание с указанием колонок
ТЗ = Новый ТаблицаЗначений;
ТЗ.Колонки.Добавить("Наименование");
ТЗ.Колонки.Добавить("Количество", Новый ОписаниеТипов("Число"));

Добавление колонок

// Добавление колонки без типа
ТЗ.Колонки.Добавить("Наименование");

// Добавление колонки с типом
ТЗ.Колонки.Добавить("Сумма", Новый ОписаниеТипов("Число"));
ТЗ.Колонки.Добавить("Дата", Новый ОписаниеТипов("Дата"));

// Добавление колонки с составным типом
Типы = Новый Массив;
Типы.Добавить(Новый ОписаниеТипов("Строка"));
Типы.Добавить(Новый ОписаниеТипов("Число"));
ТЗ.Колонки.Добавить("Комбинация", Новый ОписаниеТипов(Типы));

Добавление строк

// Добавление пустой строки
НоваяСтрока = ТЗ.Добавить();

// Добавление строки с значениями
НоваяСтрока = ТЗ.Добавить();
НоваяСтрока.Наименование = "Товар 1";
НоваяСтрока.Количество = 10;
НоваяСтрока.Дата = ТекущаяДата();

// Добавление нескольких строк
Для i = 1 По 5 Цикл
    НСтр = ТЗ.Добавить();
    НСтр.Наименование = "Товар " + i;
    НСтр.Количество = i * 10;
КонецЦикла;

Получение и изменение значений

// Получение значения
Значение = ТЗ[0].Наименование;

// Изменение значения
ТЗ[0].Наименование = "Новое наименование";

// Перебор всех строк
Для Каждого СтрокаТЗ Из ТЗ Цикл
    Сообщить(СтрокаТЗ.Наименование + " - " + СтрокаТЗ.Количество);
КонецЦикла;

Поиск и фильтрация

// Поиск по значению
НайденныеСтроки = ТЗ.НайтиСтроки(Новый Структура("Наименование", "Товар 1"));

// Фильтрация
ОтфильтрованнаяТЗ = ТЗ.Скопировать();
ОтфильтрованнаяТЗ.Отбор.Наименование.Установить("Товар 1");
ОтфильтрованнаяТЗ.ПрименитьОтбор();

// Более сложный фильтр
ОтфильтрованнаяТЗ = ТЗ.Скопировать();
ОтфильтрованнаяТЗ.Отбор.Количество.Установить(10, РежимОтбора.Больше);
ОтфильтрованнаяТЗ.ПрименитьОтбор();

Сортировка

// Сортировка по одной колонке
ТЗ.Сортировать("Наименование");

// Сортировка по нескольким колонкам
ТЗ.Сортировать("Наименование, Количество Убыв");

// Сортировка с указанием направления
ТЗ.Сортировать("Наименование Возр, Количество Убыв");

Группировка и итоги

// Добавление итогов
ТЗ.Итоги.Добавить("Количество", "Сумма");

// Вычисление итогов
ТЗ.ВычислитьИтоги();
Сообщить("Общее количество: " + ТЗ.Итоги.Количество.Сумма);

// Группировка строк
Группировка = ТЗ.Скопировать();
Группировка.Свернуть("Наименование", "Количество");

Копирование и объединение

// Полное копирование
НоваяТЗ = ТЗ.Скопировать();

// Копирование структуры (без данных)
НоваяТЗ = ТЗ.СкопироватьКолонки();

// Объединение таблиц
ТЗ1.Загрузить(ТЗ2);

Работа с колонками

// Удаление колонки
ТЗ.Колонки.Удалить("Наименование");

// Изменение порядка колонок
ТЗ.Колонки.ПоменятьПорядок("Количество", 0);

// Получение списка колонок
Для Каждого Колонка Из ТЗ.Колонки Цикл
    Сообщить(Колонка.Имя);
КонецЦикла;

Преобразование в другие типы

// В массив структур
МассивСтруктур = ТЗ.ВыгрузитьКакМассивСтруктур();

// В дерево значений
ДеревоЗначений = Новый ДеревоЗначений(ТЗ);

// В JSON
ЗаписьJSON = Новый ЗаписьJSON;
ТЗ.ЗаписатьJSON(ЗаписьJSON);
СтрокаJSON = ЗаписьJSON.Закрыть();
11. Пример комплексного использования

// Создание и заполнение
ТЗ = Новый ТаблицаЗначений;
ТЗ.Колонки.Добавить("Товар");
ТЗ.Колонки.Добавить("Количество", Новый ОписаниеТипов("Число"));
ТЗ.Колонки.Добавить("Цена", Новый ОписаниеТипов("Число"));

Для i = 1 По 10 Цикл
    Стр = ТЗ.Добавить();
    Стр.Товар = "Товар " + i;
    Стр.Количество = i;
    Стр.Цена = i * 100;
КонецЦикла;

// Добавление вычисляемой колонки
ТЗ.Колонки.Добавить("Сумма", Новый ОписаниеТипов("Число"));
Для Каждого Стр Из ТЗ Цикл
    Стр.Сумма = Стр.Количество * Стр.Цена;
КонецЦикла;

// Сортировка и итоги
ТЗ.Сортировать("Сумма Убыв");
ТЗ.Итоги.Добавить("Сумма", "Сумма");
ТЗ.ВычислитьИтоги();

// Вывод результатов
Для Каждого Стр Из ТЗ Цикл
    Сообщить(Стр.Товар + ": " + Стр.Количество + " x " + Стр.Цена + " = " + Стр.Сумма);
КонецЦикла;
Сообщить("Итого: " + ТЗ.Итоги.Сумма.Сумма);

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

Поделиться с друзьями
Smirnov code
Добавить комментарий