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