Как создать таблицу значений и добавить в неё колонки?


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

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

Объект ТаблицаЗначений создается с помощью конструктора Новая ТаблицаЗначений():

Таблица = Новая ТаблицаЗначений;

После этого Таблица становится пустой таблицей без колонок и строк. Работа с ней возможна только после явного создания структуры колонок.

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

Для добавления колонок используется метод Колонки.Добавить():

Таблица.Колонки.Добавить("Наименование");
Таблица.Колонки.Добавить("Количество", Новый ОписаниеТипов("Число"));
Таблица.Колонки.Добавить("Цена", Новый ОписаниеТипов("Число", Новый КвалификаторыЧисла(10, 2)));
Таблица.Колонки.Добавить("Дата", Новый ОписаниеТипов("Дата"));

Подробности:

  • Первый параметр — имя колонки (строка).

  • Второй параметр (необязательный) — тип значения:

    • Можно указать ОписаниеТипов("Строка"), ОписаниеТипов("Число"), ОписаниеТипов("Булево") и т.п.

    • Для чисел можно задать точность через КвалификаторыЧисла.

Пример с более явным описанием типов:

ТипЧисло = Новый ОписаниеТипов("Число", Новый КвалификаторыЧисла(10, 2));
ТипДата = Новый ОписаниеТипов("Дата");
Таблица.Колонки.Добавить("Товар", Новый ОписаниеТипов("Строка"));
Таблица.Колонки.Добавить("Количество", ТипЧисло);
Таблица.Колонки.Добавить("Сумма", ТипЧисло);
Таблица.Колонки.Добавить("Поставлено", Новый ОписаниеТипов("Булево"));
Таблица.Колонки.Добавить("ДатаПоставки", ТипДата);

3. Добавление строк в таблицу

После создания колонок можно добавлять строки:

НоваяСтрока = Таблица.Добавить();
НоваяСтрока.Товар = "Молоко";
НоваяСтрока.Количество = 5;
НоваяСтрока.Сумма = 250;
НоваяСтрока.Поставлено = Истина;
НоваяСтрока.ДатаПоставки = '2025-07-01';

Можно добавить несколько строк в цикле:

Для Сч = 1 По 3 Цикл
Строка = Таблица.Добавить();
Строка.Товар = "Товар " + Строка(Сч);
Строка.Количество = Сч \* 10;
Строка.Сумма = Сч \* 100;
Строка.Поставлено = Ложь;
Строка.ДатаПоставки = ТекущаяДата() + Сч;
КонецЦикла;

4. Использование таблицы значений

Созданную таблицу можно:

Вывести в сообщение:

<br/>Для Каждого Стр Из Таблица Цикл
Сообщить(Стр.Товар + " — " + Стр.Количество + " шт. на сумму " + Стр.Сумма);
КонецЦикла;
  • Привязать к табличному полю на форме:

    • В форме обработки добавьте элемент ТабличноеПоле.

    • Свяжите его с реквизитом формы, содержащим таблицу.

  • Использовать как источник данных для отчёта или компоновки данных.

  • Преобразовать в XML, JSON, текст при необходимости.

5. Проверка структуры таблицы значений

Можно вывести список колонок для отладки:

Для Каждого Кол Из Таблица.Колонки Цикл
Сообщить("Колонка: " + Кол.Имя + ", Тип: " + Кол.Тип.ИмяТипа);
КонецЦикла;

Также можно использовать Таблица.Количество() и Таблица.Колонки.Количество() для получения числа строк и колонок.

6. Особенности типов

  • Если не указать тип колонки, система будет определять его по первым присвоенным значениям (динамически), что может привести к ошибкам.

  • Лучше всегда явно задавать типы колонок, особенно если предполагается дальнейшая обработка (сортировка, фильтрация, экспорт и т.п.).

Колонки могут иметь составные типы:

<br/>Таблица.Колонки.Добавить("Объект", Новый ОписаниеТипов("ДокументСсылка.РеализацияТоваровУслуг, СправочникСсылка.Контрагенты"));

7. Дополнительные методы таблицы

  • Найти(), НайтиСтроки(), Удалить(), Очистить() — для поиска и управления данными.

  • Скопировать() — полное клонирование таблицы значений.

  • ЗагрузитьКоллекцию(), Выгрузить() — для работы с коллекциями и другими источниками.

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