ВыгрузитьДанныеВАрхив (БСП)

Автор: 1С
ОбщийМодуль.ВыгрузкаЗагрузкаДанных
БСП

Выгрузить данные архив. Выгружает данные в zip-архив, из которого они в дальнейшем могут быть загружены

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

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

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

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

ВыгрузитьТекущуюОбластьДанныхВАрхив (БСП)

ВыгрузитьТекущуюОбластьДанныхВоВременноеХранилище (БСП)

ВыгрузитьТекущуюОбластьДанныхВФайлИРазделитьНаЧасти (БСП)

ВыгрузитьДанныеВКаталог (БСП)

ВыгрузитьВФайл (БСП)

ВыгрузитьЧастьФайла (БСП)

ВыгрузитьПользователейИнформационнойБазы (БСП)

Выгрузить схему компоновки данных (скд) в файл/строку

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