Как перенести таблицу в другую таблицу?
Пишу обработку, заполняю таблицу данными из эксель. после загрузки у меня имеется таблица значений. мне необходимо перенести эту таблицу в другой док, записать его програмно. метод с индексом и счётчиком использовать не хотелось бы, но помогите уже хоть как-нибудь это реализовать. таб1-искочительно строковый тип. таб2-всё ссылочные типы. Задача перенести таб1 в таб2
&НаСервере
Процедура ЗаписьНаСервере()
ДокКор = Документы.КорректировкаРегистров.СоздатьДокумент();
ДокКор.Дата = ТекущаяДата();
ЖПТаб = ДокКор.Движения.ЖурналПроводокЕПСБУ;
Для Каждого ТекСтрока Из Объект.Таблица1 Цикл
Таб = объект.Таблица1;
НовСтрТЧДокумента = ЖПТаб.Добавить();
СЧ = ПланыСчетов.ЕПСБУ.НайтиПоНаименованию(Таб.Счёт, Истина);
НовСтрТЧДокумента.СчетКт = СЧ;
//НовСтрТЧДокумента.КФО = объект.Таблица1.КФО;
СКПС = Справочники.КлассификационныеПризнакиСчетов.НайтиПоНаименованию(Таб.КПС, Истина);
НовСтрТЧДокумента.КПСКт = СКПС;
НовСтрТЧДокумента.КоличествоКт = Таб.Количество;
СНОМ = Справочники.Номенклатура.НайтиПоНаименованию(Таб.Номенклатура, Истина);
НовСтрТЧДокумента.СубконтоКт1 = Таб.СНОМ;
СКЭК = Справочники.КОСГУ.НайтиПоНаименованию(Таб.КЭК, Истина);
НовСтрТЧДокумента.КЭККт = СКЭК;
СЦМО = Справочники.ЦМО.НайтиПоНаименованию(Таб.ЦМО, Истина);
НовСтрТЧДокумента.ЦМОКт = СЦМО;
КонецЦикла;
ДокКор.Записать();
КонецПроцедуры
Вариант по совету:
Процедура ЗаписьНаСервере()
ДокКор = Документы.КорректировкаРегистров.СоздатьДокумент();
Для Каждого стр из Объект.Таблица1 цикл
НовСтрока = ДокКор.Движения.ЖурналПроводокЕПСБУ.Добавить();
Для Каждого Реквизита из Объект.Таблица1 цикл
Таб = объект.Таблица1;
НовСтрока.СчетКт = ПланыСчетов.ЕПСБУ.НайтиПоНаименованию(Таб.Счёт, Истина);
НовСтрока.КПСКт = Справочники.КлассификационныеПризнакиСчетов.НайтиПоНаименованию(Таб.КПС, Истина);
НовСтрока.КоличествоКт = Таб.Количество;
НовСтрока.СубконтоКт1 = Справочники.Номенклатура.НайтиПоНаименованию(Таб.Номенклатура, Истина);
НовСтрока.КЭККт = Справочники.КОСГУ.НайтиПоНаименованию(Таб.КЭК, Истина);
НовСтрока.ЦМОКт = Справочники.ЦМО.НайтиПоНаименованию(Таб.ЦМО, Истина);
КонецЦикла;
КонецЦикла;
ДокКор.Записать();
КонецПроцедуры
Ответы (1 шт):
В целом для решения любой задачи необходимо сделать две вещи:
- Описать алгоритм решения (крупными блоками)
- Запрограммировать каждый блок алгоритма
Общий алгоритм может выглядеть так:
// Создать новый документ
// Для каждой строки ИсходнойТаблицыДанных
// Добавить строку в РезультирующуюТаблицуЗначений документа
// Для каждого Реквизита строки ИсходнойТаблицыДанных // <- этот блок можно сделать без использования цикла (как в примере)
// Преобразовать Реквизит к ссылочному типу
// Записать реквизит в РезультирующуюТаблицуЗначений
Попробуйте самостоятельно реализовать шаг 2 по описанному алгоритму (тем более что большая часть кода уже есть в примере); Просто сделайте код более аккуратным (у Вас полно повторных присвоений, строка в новом документе не создается, Движения вообще не понятно зачем ...)