1C-CodeКак сделать → Как превратить массив в таблицу значений

Как загрузить массив в таблицу значений в 1С

Прямого метода нет: таблицу создают, объявляют колонку и заполняют циклом. Для массива структур колонки берут из первой структуры.

Код

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

// массив структур: колонки по ключам первой
Для Каждого Ключ Из Массив[0] Цикл
	ТЗ.Колонки.Добавить(Ключ.Ключ);
КонецЦикла;
Для Каждого Стр Из Массив Цикл
	ЗаполнитьЗначенияСвойств(ТЗ.Добавить(), Стр);
КонецЦикла;

Что здесь важно

1. ЗаполнитьЗначенияСвойств экономит цикл по полям

Она копирует одноимённые свойства: ключи структуры ложатся в колонки с теми же именами. Вручную это десяток строк присваивания, которые придётся править при каждом изменении состава.

2. Колонки по первой структуре — допущение

Если структуры в массиве разного состава, часть значений потеряется. Когда состав может отличаться, собирайте объединение ключей по всему массиву.

3. В БСП это уже написано

Если библиотека подключена, есть готовые методы для преобразования массива структур в таблицу значений и обратно. Своё писать стоит только там, где БСП нет.

Где обычно спотыкаются

Если массив пришёл из запроса, не делайте крюк: результат запроса выгружается в таблицу значений сразу — Запрос.Выполнить().Выгрузить(). Сначала выгрузить в массив, а потом собирать таблицу обратно — работа впустую.

Проверить на практике. В тренажёре такой код запускается на настоящем интерпретаторе языка 1С с демонстрационной базой: справочники, документы, регистры. Без установки платформы и без риска для рабочей базы.

Открыть тренажёр

Разобраться глубже

Другие вопросы

Как получить остатки на дату запросом в 1С Как программно провести документ в 1С Как избавиться от запроса в цикле в 1С Как добавить колонку в таблицу значений программно Как свернуть таблицу значений Как найти строку в таблице значений Как выгрузить колонку таблицы значений в массив Как передать таблицу значений с сервера на клиент Как отобрать строки в таблице значений Как отсортировать таблицу значений Как записать движения регистра накопления программно Чем регистр остатков отличается от регистра оборотов Как контролировать остатки при проведении документа Как добавить реквизит расширением конфигурации Как сравнить две таблицы значений Какие бывают соединения в запросе 1С и чем отличаются Как выгрузить таблицу значений в Excel Чем дерево значений отличается от таблицы значений Как задать условное оформление таблицы на форме