СкопироватьПрисоединенныеФайлы (БСП)

Автор: 1С
ОбщийМодуль.РаботаСФайламиСлужебный
1С БСП

Скопировать присоединенные файлы. Создает у Получателя копии всех присоединенных файлов Источника.

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

///////////////////////////////////////////////////////////////////////////////////////////////////////
// Copyright (c) 2019, ООО 1С-Софт
// Все права защищены. Эта программа и сопроводительные материалы предоставляются 
// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0)
// Текст лицензии доступен по ссылке:
// https://creativecommons.org/licenses/by/4.0/legalcode
///////////////////////////////////////////////////////////////////////////////////////////////////////

Рекомендации

Похожие публикации

ОбновитьПрисоединенныйФайл (БСП)

КоличествоПрисоединенныхФайлов (БСП)

ДанныеПрисоединенныхФайловПисьма (БСП)

ПриПолученииПрисоединенныхФайлов (БСП)

КомандаУправленияПрисоединеннымиФайлами (БСП)

ПриЗаписиПрисоединенногоФайлаСервер (БСП)

СконвертироватьФайлыВПрисоединенные (БСП)

СкопироватьФайлы (БСП)

ЗаполнитьПрисоединенныеФайлыКОбъекту (БСП)

Обновлятор-1С: групповое (пакетное) обновление и обслуживание всех баз за один раз