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

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

Загрузить данные из архива. Загружает данные из zip архива с XML файлами.

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

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

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

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

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

Загрузить (БСП)

ЗагрузитьДанныеXDTOВИнформационнуюБазу (БСП)

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

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