Как создать таблицу значений и добавить в неё колонки?
В 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С, применимый во многих сценариях: от алгоритмов распределения и расчетов до визуализации и обмена данными.