Задача: необходимо загрузить в свернутую копию базы все изменения из рабочей базы, сделанные за время свертки.
Для этого перед сверткой создали новый узел обмена в полном плане обмена, чтобы на нем регистрировались все изменения.
В штатной обработке «Выгрузка и загрузка данных XML» есть практически готовый блок, который позволяет сделать отбор данных по регистрации на узле обмена.
Команда «Недопустимые символы в плане обмена» фактически формирует нужный нам файл, но не записывает его.
Вот листинг новой процедуры по выгрузке, а во вложении уже изменная типовая обработка.
Процедура ВыполнитьВыгрузкуОбъектовИзПланаОбмена(СсылкаНаУзел, ИмяФайла) Экспорт
ОбъектыВыгруженныеСОшибками = Новый Соответствие;
ВсегоОбработаноОбъектов = 0;
КоличествоОшибок = 0;
Если СтрДлина(ИмяФайла) = 0 Тогда
#Если Клиент Тогда
Предупреждение("Не задано имя файла выгрузки");
#КонецЕсли
Возврат;
КонецЕсли;
СоставВыгрузки();
Если СоставПолнойВыгрузки.Количество() = 0
И ДополнительныеОбъектыДляВыгрузки.Количество() = 0 Тогда
#Если Клиент Тогда
Предупреждение("Не задан состав выгрузки");
#КонецЕсли
Возврат;
КонецЕсли;
Если Не ИспользоватьФорматFastInfoSet Тогда
ЗаписьXML = Новый ЗаписьXML;
ЗаписьXML.ОткрытьФайл(ИмяФайла, "UTF-8");
Иначе
ЗаписьXML = Новый ЗаписьFastInfoset;
ЗаписьXML.ОткрытьФайл(ИмяФайла);
КонецЕсли;
ЗаписьXML.ЗаписатьОбъявлениеXML();
ЗаписьXML.ЗаписатьНачалоЭлемента("_1CV8DtUD", "http://www.1c.ru/V8/1CV8DtUD/");
ЗаписьXML.ЗаписатьСоответствиеПространстваИмен("V8Exch", "http://www.1c.ru/V8/1CV8DtUD/");
ЗаписьXML.ЗаписатьСоответствиеПространстваИмен("xsi", "http://www.w3.org/2001/XMLSchema-instance");
ЗаписьXML.ЗаписатьСоответствиеПространстваИмен("v8", "http://v8.1c.ru/data");
ЗаписьXML.ЗаписатьНачалоЭлемента("V8Exch:Data");
#Если Клиент Тогда
Сообщить("Начало выгрузки: " + ТекущаяДата());
#КонецЕсли
МассивМетаданныхДляВыгрузки = Новый Массив();
Для Каждого СтрокаТаблицыВыгрузки Из СоставПолнойВыгрузки Цикл
СтрокаДереваМетаданных = СтрокаТаблицыВыгрузки.СтрокаДерева;
МассивМетаданныхДляВыгрузки.Добавить(СтрокаДереваМетаданных.ОбъектМД);
КонецЦикла;
Если МассивМетаданныхДляВыгрузки.Количество() = 0 Тогда
МассивМетаданныхДляВыгрузки = Неопределено;
КонецЕсли;
ВыборкаИзменений = ПланыОбмена.ВыбратьИзменения(СсылкаНаУзел, СсылкаНаУзел.НомерОтправленного + 1, МассивМетаданныхДляВыгрузки);
Пока ВыборкаИзменений.Следующий() Цикл
// имененный элемент
Данные = ВыборкаИзменений.Получить();
// данные должны быть
Если Данные = Неопределено Тогда
Продолжить;
КонецЕсли;
ЭтоУдаление = (мТипДанныхУдаления = ТипЗнч(Данные));
Если ЭтоУдаление Тогда
Продолжить;
КонецЕсли;
ВсегоОбработаноОбъектов = ВсегоОбработаноОбъектов + 1;
МетаданныеОбъекта = Данные.Метаданные();
Попытка
ВыполнитьВспомогательныеДействияДляЗаписиXML(ВсегоОбработаноОбъектов, ЗаписьXML, Истина);
ЗаписатьXML(ЗаписьXML, Данные);
Исключение
КоличествоОшибок = КоличествоОшибок + 1;
СтрокаОписанияОшибки = ОписаниеОшибки();
// для ссылочных добавляем ссылку, а для не ссылочных сам объект
ЭтоНеСсылка = Метаданные.РегистрыСведений.Содержит(МетаданныеОбъекта)
ИЛИ Метаданные.РегистрыНакопления.Содержит(МетаданныеОбъекта)
ИЛИ Метаданные.РегистрыБухгалтерии.Содержит(МетаданныеОбъекта)
ИЛИ Метаданные.Константы.Содержит(МетаданныеОбъекта);
Если ЭтоНеСсылка Тогда
ОбъектыВыгруженныеСОшибками.Вставить(Данные, СтрокаОписанияОшибки);
Иначе
Если ОбъектыВыгруженныеСОшибками.Получить(Данные.Ссылка) = Неопределено Тогда
ОбъектыВыгруженныеСОшибками.Вставить(Данные.Ссылка, СтрокаОписанияОшибки);
КонецЕсли;
КонецЕсли;
КонецПопытки;
#Если Клиент Тогда
Если ВсегоОбработаноОбъектов % 100 = 0 Тогда
Состояние("Выгруженных объектов - " + ВсегоОбработаноОбъектов + ", ошибок при выгрузке - " + КоличествоОшибок);
КонецЕсли;
#КонецЕсли
КонецЦикла;
ЗаписьXML.ЗаписатьКонецЭлемента(); //V8Exc:Data
ЗаписьXML.ЗаписатьКонецЭлемента(); //V8Exc:_1CV8DtUD
КонецПроцедуры