Как ускорить перенос данных из одной ТабличнойЧасти в другую?

Версия для печатиPDF-версия
Как ускорить перенос данных из одной ТабличнойЧасти в другую?
 
На форме имеется 2 Аналогичные Табличные части, в которых, несколько колонок.
 
Есть необходимость, из одной таблицы переносить данные реквизита в другую, с соответствием контрагенту.
Контрагенты в таблицах могут быть разные. Поэтому при переносе данные необходимо добавлять не построчно, а по соответствию контрагенту.
 
Написал процедуру:

Процедура ОсновныеДействияФормыДобавить()

Записать();
ЭтаФорма.Обновить();

		
Для каждого СтрокаТаблицыПриемник Из ТаблицаРаспределенияКонтрагентов Цикл
				
					
	Для каждого СтрокаТаблицыИсточник Из ТаблицаРаспределенияКонтрагентов2 Цикл
					
XYZКлассИсточник = СтрокаТаблицыИсточник.XYZКлассификация;	
	КонтрагентИсточник = СтрокаТаблицыИсточник.Контрагент;
	СтадияВзаимоотношенийИсточник = СтрокаТаблицыИсточник.СтадияВзаимоотношений;

Если  КонтрагентПриемник = КонтрагентИсточник Тогда
							 
СтрокаТаблицыПриемник.XYZКлассификация = XYZКлассИсточник;

СтрокаТаблицыПриемник.СтадияВзаимоотношений = СтадияВзаимоотношенийИсточник;							
Иначе 

Сообщить(ОписаниеОшибки());

КонецЕсли;
			
КонецЦикла;
КонецЦикла;
			
КонецПроцедуры 
Все прекрасно работает.
 
Вот только учитывая, что в Табличных частях по несколько тысяч контрагентов (включая потенциальных), выполнение процедуры занимает приличное время.
Пробовал поиграться с Массивами, но видима ума, знаний и опыта не хватило…
 
Подскажите, пожалуйста метод (методы), который подошел бы для подобной задачи, который был бы побыстрее данного.

Однозначно надо убрать обход в цикле второй таблицы. Зачем Вам все строки перебирать, если нужна информация по конкретному контрагенту? Воспользуйтесь методом табличной части Найти.

КонтрагентПриемник = СтрокаТаблицыПриемник.Контрагент;
СтрокаТаблицыИсточник = ТаблицаРаспределенияКонтрагентов2.Найти(КонтрагентПриемник, "Контрагент");
Если СтрокаТаблицыИсточник = Неопределено Тогда 
	Сообщить("В таблице-источнике не найдены записи по контрагенту " + КонтрагентПриемник);
Иначе 
	ЗаполнитьЗначенияСвойств(СтрокаТаблицыПриемник, СтрокаТаблицыИсточник, "XYZКлассИсточник, СтадияВзаимоотношений");
КонецЕсли;

ПС. Зачем в начале процедуры запись и обновление отображения?

Огромное спасибо!
 
Скорость увеличилась в десятки раз.
 
 
 
Чтобы отделить мух от котлет, отвечая на Ваш вопрос о записи документа, создал новую тему: