0

Как объединить таблицы значений?

У объекта встроенного языка ТаблицаЗначений не предусмотрено специальных методов загрузки данных из других таблиц, либо объединения данных нескольких таблиц.

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

Допустим, у нас есть две таблицы вида:

Таблица 1
Товар Количество
1 Стул деревянный 4
2 Стол деревянный 1
Таблица 2
Товар Количество
1 Шкаф для одежды 1
2 Тумба прикроватная 2

и стоит задача их объединить. Самый элементарный способ реализации, который напрашивается: построчно скопировать строки второй таблицы в конец первой:

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

В результате мы получим таблицу вида:

Результат
Товар Количество
1 Стул деревянный 4
2 Стол деревянный 1
3 Шкаф для одежды 1
4 Тумба прикроватная 2

Но у приведенного выше алгоритма есть один недостаток: он привязан к именам колонок таблиц значений. Чтобы сделать этот код по настоящему универсальным, следует использовать функцию встроенного языка ЗаполнитьЗначенияСвойств(), тогда не понадобится прописывать имена колонок в коде каждый раз при объединении таблиц:

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

Почему я перенес инициализацию номера строки ниже, думаю, Вы догадаетесь сами. Если нет, рекомендую прорешать данную задачу на практике самостоятельно.

Читайте также:

  1. Таблица значений 1с. Описание и примеры использования

Поделиться страницей в соц.сетях

Метки: Метки

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *