Поделитесь в соцсетях

Как заполнить таблицу значений

Содержание[Убрать]

Как заполнить таблицу значений

Заполнение таблицы значений из других источников

 

 

Чтобы заполнить таблицу значений существует несколько вариантов

    1. Скопировать данные из другой таблицы значений используя метод

 

НоваяТЗ = СтараяТЗ.Скопировать();

 

Также используя метод "Скопировать" можно указать строки и колонки которые нужно скопировать в новую таблицу значений, причем колонки задаются строкой, а строки внутри массива.



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


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

В данном примере метод "ЗаполнитьЗначенияСвойств" брал каждое свойство "СтаройСтроки" и искал их в "НовойСтроке", если находил, то записывал. Т.к. мы копировали колонки из "СтаройТЗ", то у нас такие совпадения точно были. Раньше такого метода не было и приходилось самим искать одинаковые имена колонок и записывать. Например, внутри предыдущего кода мог располагаться ещё один цикл по колонкам. Конечно не оптимально, но зато наглядно.



Для Каждого  СтараяКолонка Из СтараяТЗ Цикл
Если НоваяТЗ.Колонки.Найти(СтараяКолонка.Имя) <> Неопределено Тогда
НоваяСтрока[СтараяКолонка.Имя] = СтараяСтрока[СтараяКолонка.Имя];
КонецЕсли;
КонецЦикла;

 

      Также в таблице для поиска можно использовать

индексы

      .

 

Недостаточно прав для комментирования