Как обычно, неожиданно возникла потребность перенести документы нескольких видов из рабочей базы в копию небольшой давности. В типовой бухгалтерии в меню Сервис-Прочие обмены данными приглянулась обработка Выгрузка\загрузка документов, но она, оказывается, во-первых, работает с планами обменов, а во-вторых, в приемнике создает доки на основании выгруженных.
И мне стало интересно в эту обработку добавить возможность переноса самих документов в базу-приемник, не трогая основную функциональность.
Признаком первого препятствия при выгрузке документов послужило сообщение:
Не указан узел выгрузки
поправим код для ее обхода комментированием оператора Возврат, и заведем булеву переменную флОригиналы
Если ЭлементыФормы.СписокУзловДляВыгрузки.Значение = Неопределено Тогда
Сообщить("Не указан узел выгрузки");
// Возврат;
флОригиналы = Истина;
КонецЕсли;
И чуть пониже запрограммируем ветвление по этой переменной чтобы обработке подсунуть липовый код узла обмена
Если флОригиналы Тогда
ЗаписьXML.ЗаписатьАтрибут("ПолучательКод", "МАК");
Иначе
ЗаписьXML.ЗаписатьАтрибут("ПолучательКод", СокрЛП(ЭлементыФормы.СписокУзловДляВыгрузки.Значение.Код));
КонецЕсли;
А на стороне загрузки на обработчик кнопки с надписью Ввести оригинальные доки подвесим код основная идея которого заключается в строках:
//ИмяДок = ЭлементСписка.Значение.Метаданные().Имя; //НовыйДокумент = Документы[ИмяДок].СоздатьДокумент(); НовыйДокумент = ЭлементСписка.Значение; //НовыйДокумент.Записать();
Понятно, что обработка спотыкается на реквизитах еще не существующих к моменту переноса, показывая в них сообщение Объект не найден.....
Цель модификации обработки: быстрый перенос документов простой в использовании.
Остальная функциональность типовой обработки полностью сохранена.
Для выгрузки оригинальных документов достаточно выгружать обычным способом не заполняя код узла обмена и обычным способом задавая имя файла переноса данных, а для загрузки оригинальных документов нужно нажимать дополнительную кнопку с надписью Ввести оригинальные доки после указания файла с данными переноса.
Обработка проверялась на конфигурации Бухгалтерия для Казахстана, редакция 2.0, разработка для Казахстана: «1С-Рейтинг» (2.0.26.12).