Выгрузить данные архив. Выгружает данные в 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
///////////////////////////////////////////////////////////////////////////////////////////////////////
ВыгрузитьТекущуюОбластьДанныхВАрхив (БСП)
ВыгрузитьТекущуюОбластьДанныхВоВременноеХранилище (БСП)
ВыгрузитьТекущуюОбластьДанныхВФайлИРазделитьНаЧасти (БСП)