Как заполнить таблицу значений
Заполнение таблицы значений из других источников
Чтобы заполнить таблицу значений существует несколько вариантов
- Скопировать данные из другой таблицы значений используя метод
НоваяТЗ = СтараяТЗ.Скопировать();
Также используя метод "Скопировать" можно указать строки и колонки которые нужно скопировать в новую таблицу значений, причем колонки задаются строкой, а строки внутри массива.
МассивСтрок = Новый Массив;
МассивСтрок.Добавить(СтараяТЗ[0]);//строка 1
МассивСтрок.Добавить(СтараяТЗ[2]);//строка 3
МассивСтрок.Добавить(СтараяТЗ[7]);//строка 8
СтрокаКолонки = "Номенклатура, Количество";
НоваяТЗ = СтараяТЗ.Скопировать(МассивСтрок, СтрокаКолонок);
//В параметрах можно указывать не массив, а структуру отбора, этот метод более универсальный
СтруктураОтбора = Новый Структура;
СтруктураОтбора.Вставить("Номенклатура", ВыбраннаяНоменклатура);
СтруктураОтбора.Вставить("Количество", 10);//единственный недостаток это сравнение только на равно :)
НоваяТЗ = СтараяТЗ.Скопировать(СтруктураОтбора, "Номенклатура");//получим ТЗ с номенклатурами в одной колонке, у которой количество было 10
- Создать перебирая "Старую" таблицу
//например у нас есть СтараяТЗ с колонками Номенклатура, Количество, ЕдиницаИзмерения
НоваяТЗ = СтараяТЗ.СкопироватьКолонки("Номенклатура, Количество");
Для Каждого СтараяСтрока Из СтараяТЗ Цикл
НоваяСтрока = НоваяТЗ.Добавить();
ЗаполнитьЗначенияСвойств(НоваяСтрока, СтараяСтрока);
КонецЦикла;
В данном примере метод "ЗаполнитьЗначенияСвойств" брал каждое свойство "СтаройСтроки" и искал их в "НовойСтроке", если находил, то записывал. Т.к. мы копировали колонки из "СтаройТЗ", то у нас такие совпадения точно были. Раньше такого метода не было и приходилось самим искать одинаковые имена колонок и записывать. Например, внутри предыдущего кода мог располагаться ещё один цикл по колонкам. Конечно не оптимально, но зато наглядно.
Для Каждого СтараяКолонка Из СтараяТЗ Цикл
Если НоваяТЗ.Колонки.Найти(СтараяКолонка.Имя) <> Неопределено Тогда
НоваяСтрока[СтараяКолонка.Имя] = СтараяСтрока[СтараяКолонка.Имя];
КонецЕсли;
КонецЦикла;
- Также в таблице для поиска можно использовать
- .