Обработка запускается на базе, куда нужно перенести данные, и подключается к базе, через внешнее соединение, откуда нужно перенести данные. Вызывает функцию из модуля внешнего соединения подключенной базы, которая возвращает данные (ТЗ с данными хозрасчетного) и в текущей базе замещает все данные регистра полученными из другой базы.
В общем, в базе, к которой подключается обработка, в модуле внешнего соединения должна быть процедура:
// Процедура в модуле внешнего соединения подключаемой базы:
Функция ПолучитьДанныеТаблицыОбъекта() Экспорт
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ
| *
|ИЗ
| РегистрБухгалтерии.Хозрасчетный.ДвиженияССубконто КАК ХозрасчетныйДвиженияССубконто
|ГДЕ
| ХозрасчетныйДвиженияССубконто.Регистратор = &Регистратор";
Запрос.УстановитьПараметр("Регистратор",Документы.ЗакрытиеМесяца.НайтиПоНомеру("ГД000000001",'20110731'));
ТЗ = Запрос.Выполнить().Выгрузить();
ТЗ.Сортировать("Регистратор");
ТЗ.Колонки.Добавить("СубконтоДт1Тип");
ТЗ.Колонки.Добавить("СубконтоДт2Тип");
ТЗ.Колонки.Добавить("СубконтоДт3Тип");
//ТЗ.Колонки.Добавить("СубконтоДт4Тип");
ТЗ.Колонки.Добавить("СубконтоКт1Тип");
ТЗ.Колонки.Добавить("СубконтоКт2Тип");
ТЗ.Колонки.Добавить("СубконтоКт3Тип");
//ТЗ.Колонки.Добавить("СубконтоКт4Тип");
ТЗ.Колонки.Добавить("РегистраторСсылка");
ТЗ.Колонки.Добавить("СчетДтСсылка");
ТЗ.Колонки.Добавить("СубконтоДт1Ссылка");
ТЗ.Колонки.Добавить("СубконтоДт2Ссылка");
ТЗ.Колонки.Добавить("СубконтоДт3Ссылка");
//ТЗ.Колонки.Добавить("СубконтоДт4Ссылка");
ТЗ.Колонки.Добавить("СчетКтСсылка");
ТЗ.Колонки.Добавить("СубконтоКт1Ссылка");
ТЗ.Колонки.Добавить("СубконтоКт2Ссылка");
ТЗ.Колонки.Добавить("СубконтоКт3Ссылка");
//ТЗ.Колонки.Добавить("СубконтоКт4Ссылка");
ТЗ.Колонки.Добавить("ОрганизацияСсылка");
ТЗ.Колонки.Добавить("ВалютаДтСсылка");
ТЗ.Колонки.Добавить("ВалютаКтСсылка");
ТЗ.Колонки.Добавить("НалоговоеНазначениеДтСсылка");
ТЗ.Колонки.Добавить("НалоговоеНазначениеКтСсылка");
ТЗ.Колонки.Добавить("СчетДополнительныйСсылка");
Для Каждого Строка Из ТЗ Цикл
Строка.СубконтоДт1Тип = ЗначениеВСтрокуВнутр(Строка.ВидСубконтоДт1);
Строка.СубконтоДт2Тип = ЗначениеВСтрокуВнутр(Строка.ВидСубконтоДт2);
Строка.СубконтоДт3Тип = ЗначениеВСтрокуВнутр(Строка.ВидСубконтоДт3);
//Строка.СубконтоДт4Тип = ЗначениеВСтрокуВнутр(Строка.ВидСубконтоДт4);
Строка.СубконтоКт1Тип = ЗначениеВСтрокуВнутр(Строка.ВидСубконтоКт1);
Строка.СубконтоКт2Тип = ЗначениеВСтрокуВнутр(Строка.ВидСубконтоКт2);
Строка.СубконтоКт3Тип = ЗначениеВСтрокуВнутр(Строка.ВидСубконтоКт3);
//Строка.СубконтоКт4Тип = ЗначениеВСтрокуВнутр(Строка.ВидСубконтоКт4);
Строка.РегистраторСсылка = ЗначениеВСтрокуВнутр(Строка.Регистратор);
Строка.СчетДтСсылка = ЗначениеВСтрокуВнутр(Строка.СчетДт);
Строка.СубконтоДт1Ссылка = ЗначениеВСтрокуВнутр(Строка.СубконтоДт1);
Строка.СубконтоДт2Ссылка = ЗначениеВСтрокуВнутр(Строка.СубконтоДт2);
Строка.СубконтоДт3Ссылка = ЗначениеВСтрокуВнутр(Строка.СубконтоДт3);
//Строка.СубконтоДт4Ссылка = ЗначениеВСтрокуВнутр(Строка.СубконтоДт4);
Строка.СчетКтСсылка = ЗначениеВСтрокуВнутр(Строка.СчетКт);
Строка.СубконтоКт1Ссылка = ЗначениеВСтрокуВнутр(Строка.СубконтоКт1);
Строка.СубконтоКт2Ссылка = ЗначениеВСтрокуВнутр(Строка.СубконтоКт2);
Строка.СубконтоКт3Ссылка = ЗначениеВСтрокуВнутр(Строка.СубконтоКт3);
//Строка.СубконтоКт4Ссылка = ЗначениеВСтрокуВнутр(Строка.СубконтоКт4);
Строка.ОрганизацияСсылка = ЗначениеВСтрокуВнутр(Строка.Организация);
Строка.ВалютаДтСсылка = ЗначениеВСтрокуВнутр(Строка.ВалютаДт);
Строка.ВалютаКтСсылка = ЗначениеВСтрокуВнутр(Строка.ВалютаКт);
Строка.НалоговоеНазначениеДтСсылка = ЗначениеВСтрокуВнутр(Строка.НалоговоеНазначениеДт);
Строка.НалоговоеНазначениеКтСсылка = ЗначениеВСтрокуВнутр(Строка.НалоговоеНазначениеКт);
Строка.СчетДополнительныйСсылка = ЗначениеВСтрокуВнутр(Строка.СчетДополнительный);
КонецЦикла;
Возврат(ТЗ);
КонецФункции
Как видим в запросе стоит отбор по регистратору. Таким образом перетянутся данные только одного документа. Если убрать отбор - перетянутся все данные.
А это модуль формы обработки, которая запускается в базе, куда нужно перенести данные:
Перем ТекПоказатьСостояние;
Процедура КнопкаВыполнитьНажатие(Кнопка)
ПоказатьСостояние("Попытка подключения...");
Соединение = Новый COMObject("V82.COMConnector");
База = Соединение.Connect("Srvr=""server1c"";Ref=""GOR_B"";Usr=""Логин"";Pwd=""36787463"""); // Для серверной базы
// База = Соединение.Connect("File=""D:\Bases\GOR_B"";Usr=""Логин"";Pwd=""36787463"""); // Для файловой базы
ПоказатьСостояние("Выполняется получение данных из удаленной базы...");
ТЗ = База.ПолучитьДанныеТаблицыОбъекта();
КолВсего = ТЗ.Количество();
ПоказатьСостояние("Выполняется заполнене данных на этой базе...");
Итератор = 1;
ПервыйРаз = Истина;
ТекРегистратор = Неопределено;
НаборЗаписей = Неопределено;
Для Каждого Выборка Из ТЗ Цикл
Если ЗначениеИзСтрокиВнутр(Выборка.РегистраторСсылка) <> ТекРегистратор Тогда
Если ПервыйРаз Тогда
ПервыйРаз = Ложь;
Иначе
Попытка
НаборЗаписей.Записать();
Исключение
Сообщить("Не удалось присвоить регистратора: "+ТекРегистратор);
Возврат;
КонецПопытки
КонецЕсли;
ТекРегистратор = ЗначениеИзСтрокиВнутр(Выборка.РегистраторСсылка);
НаборЗаписей = РегистрыБухгалтерии.Хозрасчетный.СоздатьНаборЗаписей();
НаборЗаписей.Отбор.Регистратор.Установить(ТекРегистратор);
//НаборЗаписей.Записать();
КонецЕсли;
ПоказатьСостояние("Выполняется заполнене данных "+Окр(Итератор*100 /КолВсего,6)+" %");
Итератор = Итератор + 1;
Запись = НаборЗаписей.Добавить();
ЗаполнитьЗначенияСвойств(Запись,Выборка);
Запись.Регистратор = ЗначениеИзСтрокиВнутр(Выборка.РегистраторСсылка);
Запись.СчетДт = ЗначениеИзСтрокиВнутр(Выборка.СчетДтСсылка);
Запись.СубконтоДт[ЗначениеИзСтрокиВнутр(Выборка.СубконтоДт1Тип)] = ЗначениеИзСтрокиВнутр(Выборка.СубконтоДт1Ссылка);
Запись.СубконтоДт[ЗначениеИзСтрокиВнутр(Выборка.СубконтоДт2Тип)] = ЗначениеИзСтрокиВнутр(Выборка.СубконтоДт2Ссылка);
Запись.СубконтоДт[ЗначениеИзСтрокиВнутр(Выборка.СубконтоДт3Тип)] = ЗначениеИзСтрокиВнутр(Выборка.СубконтоДт3Ссылка);
//Запись.СубконтоДт[ЗначениеИзСтрокиВнутр(Выборка.СубконтоДт4Тип)] = ЗначениеИзСтрокиВнутр(Выборка.СубконтоДт4Ссылка);
Запись.СчетКт = ЗначениеИзСтрокиВнутр(Выборка.СчетКтСсылка);
Запись.СубконтоКт[ЗначениеИзСтрокиВнутр(Выборка.СубконтоКт1Тип)] = ЗначениеИзСтрокиВнутр(Выборка.СубконтоКт1Ссылка);
Запись.СубконтоКт[ЗначениеИзСтрокиВнутр(Выборка.СубконтоКт2Тип)] = ЗначениеИзСтрокиВнутр(Выборка.СубконтоКт2Ссылка);
Запись.СубконтоКт[ЗначениеИзСтрокиВнутр(Выборка.СубконтоКт3Тип)] = ЗначениеИзСтрокиВнутр(Выборка.СубконтоКт3Ссылка);
//Запись.СубконтоКт[ЗначениеИзСтрокиВнутр(Выборка.СубконтоКт4Тип)] = ЗначениеИзСтрокиВнутр(Выборка.СубконтоКт4Ссылка);
Запись.Организация = ЗначениеИзСтрокиВнутр(Выборка.ОрганизацияСсылка);
Запись.ВалютаДт = ЗначениеИзСтрокиВнутр(Выборка.ВалютаДтСсылка);
Запись.ВалютаКт = ЗначениеИзСтрокиВнутр(Выборка.ВалютаКтСсылка);
Запись.НалоговоеНазначениеДт = ЗначениеИзСтрокиВнутр(Выборка.НалоговоеНазначениеДтСсылка);
Запись.НалоговоеНазначениеКт = ЗначениеИзСтрокиВнутр(Выборка.НалоговоеНазначениеКтСсылка);
Запись.СчетДополнительный = ЗначениеИзСтрокиВнутр(Выборка.СчетДополнительныйСсылка);
КонецЦикла;
НаборЗаписей.Записать();
КонецПроцедуры
Процедура ПоказатьСостояние(Текст)
ТекПоказатьСостояние = Текст;
Состояние(Текст);
КонецПроцедуры
Процедура ОбновлениеОтображения()
Состояние(ТекПоказатьСостояние);
КонецПроцедуры
Конечно при нажатии на кнопку "Выполнить" запускается процедура "КнопкаВыполнитьНажатие".
Обработка перетяжки добавлена.
Опубликовал по своей оригинальной статье здесь: http://pro1c.org.ua/index.php?showtopic=4883