#Область ОбработчикиСобытийФормы
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
Если Не ОбщегоНазначения.ЭтоWindowsКлиент() Тогда
ВызватьИсключение НСтр("ru = 'Резервное копирование и восстановление данных необходимо настроить средствами операционной системы или другими сторонними средствами.'");
КонецЕсли;
Если ОбщегоНазначения.ЭтоВебКлиент()
Или ОбщегоНазначения.ЭтоМобильныйКлиент() Тогда
ВызватьИсключение НСтр("ru = 'Резервное копирование недоступно в веб-клиенте и мобильном клиенте.'");
КонецЕсли;
Если Не ОбщегоНазначения.ИнформационнаяБазаФайловая() Тогда
ВызватьИсключение НСтр("ru = 'В клиент-серверном варианте работы резервное копирование следует выполнять сторонними средствами (средствами СУБД).'");
КонецЕсли;
НастройкиРезервногоКопирования = РезервноеКопированиеИБСервер.НастройкиРезервногоКопирования();
ПарольАдминистратораИБ = НастройкиРезервногоКопирования.ПарольАдминистратораИБ;
Объект.КаталогСРезервнымиКопиями = НастройкиРезервногоКопирования.КаталогХраненияРезервныхКопий;
Если КоличествоСеансовИнформационнойБазы() > 1 Тогда
Элементы.СтраницыСтатусаВосстановления.ТекущаяСтраница = Элементы.СтраницаАктивныеПользователи;
КонецЕсли;
ИнформацияОПользователе = РезервноеКопированиеИБСервер.ИнформацияОПользователе();
ТребуетсяВводПароля = ИнформацияОПользователе.ТребуетсяВводПароля;
Если ТребуетсяВводПароля Тогда
АдминистраторИБ = ИнформацияОПользователе.Имя;
Иначе
Элементы.ГруппаАвторизации.Видимость = Ложь;
ПарольАдминистратораИБ = "";
КонецЕсли;
Элементы.НеДожидатьсяЗавершенияСеансов.Видимость = ОбщегоНазначения.РежимОтладки();
КонецПроцедуры
&НаКлиенте
Процедура ПриОткрытии(Отказ)
#Если ВебКлиент Тогда
Элементы.ГруппаComcntrФайловыйРежим.Видимость = Ложь;
#КонецЕсли
КонецПроцедуры
&НаКлиенте
Процедура ПередЗакрытием(Отказ, ЗавершениеРаботы, ТекстПредупреждения, СтандартнаяОбработка)
ТекущаяСтраница = Элементы.СтраницыЗагрузкиДанных.ТекущаяСтраница;
Если ТекущаяСтраница <> Элементы.СтраницыЗагрузкиДанных.ПодчиненныеЭлементы.СтраницаИнформацииИВыполненияРезервногоКопирования Тогда
Возврат;
КонецЕсли;
ТекстПредупреждения = НСтр("ru = 'Прервать подготовку к восстановлению данных?'");
ОбщегоНазначенияКлиент.ПоказатьПодтверждениеЗакрытияПроизвольнойФормы(ЭтотОбъект,
Отказ, ЗавершениеРаботы, ТекстПредупреждения, "ЗакрытьФормуБезусловно");
КонецПроцедуры
&НаКлиенте
Процедура ПриЗакрытии(ЗавершениеРаботы)
Если ЗавершениеРаботы Тогда
Возврат;
КонецЕсли;
СоединенияИБКлиент.УстановитьПризнакЗавершитьВсеСеансыКромеТекущего(Ложь);
СоединенияИБКлиент.УстановитьПризнакРаботаПользователейЗавершается(Ложь);
СоединенияИБВызовСервера.РазрешитьРаботуПользователей();
ОтключитьОбработчикОжидания("ИстечениеВремениОжидания");
ОтключитьОбработчикОжидания("ПроверкаНаЕдинственностьПодключения");
КонецПроцедуры
&НаКлиенте
Процедура ОбработкаОповещения(ИмяСобытия, Параметр, Источник)
Если ИмяСобытия = "ЗавершениеРаботыПользователей" И Параметр.КоличествоСеансов <= 1
И Элементы.СтраницыЗагрузкиДанных.ТекущаяСтраница = Элементы.СтраницаИнформацииИВыполненияРезервногоКопирования Тогда
НачатьВосстановлениеДанных();
КонецЕсли;
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиСобытийЭлементовШапкиФормы
&НаКлиенте
Процедура ПутьККаталогуАрхивовНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
ВыбратьФайлРезервнойКопии();
КонецПроцедуры
&НаКлиенте
Процедура СписокПользователейНажатие(Элемент)
СтандартныеПодсистемыКлиент.ОткрытьСписокАктивныхПользователей(, ЭтотОбъект);
КонецПроцедуры
&НаКлиенте
Процедура НадписьОбновитьВерсиюКомпонентыОбработкаНавигационнойСсылки(Элемент, НавигационнаяСсылкаФорматированнойСтроки, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
ОбщегоНазначенияКлиент.ЗарегистрироватьCOMСоединитель();
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиКомандФормы
&НаКлиенте
Процедура ФормаОтмена(Команда)
Закрыть();
КонецПроцедуры
&НаКлиенте
Процедура Готово(Команда)
ОчиститьСообщения();
Если Не ПроверитьЗаполнениеРеквизитов() Тогда
Возврат;
КонецЕсли;
Оповещение = Новый ОписаниеОповещения("ГотовоПослеПроверкиДоступаКИнформационнойБазе", ЭтотОбъект);
РезервноеКопированиеИБКлиент.ПроверитьДоступКИнформационнойБазе(ПарольАдминистратораИБ, Оповещение);
КонецПроцедуры
&НаКлиенте
Процедура НеДожидатьсяЗавершенияСеансов(Команда)
НачатьВосстановлениеДанных();
КонецПроцедуры
&НаКлиенте
Процедура ПерейтиВЖурналРегистрации(Команда)
ОткрытьФорму("Обработка.ЖурналРегистрации.Форма.ЖурналРегистрации", , ЭтотОбъект);
КонецПроцедуры
#КонецОбласти
#Область СлужебныеПроцедурыИФункции
&НаКлиенте
Процедура ГотовоПослеПроверкиДоступаКИнформационнойБазе(РезультатПодключения, Контекст) Экспорт
Если РезультатПодключения.ОшибкаПодключенияКомпоненты Тогда
Элементы.СтраницыСтатусаВосстановления.ТекущаяСтраница = Элементы.СтраницаОшибкаПодключения;
ОбнаруженнаяОшибкаПодключения = РезультатПодключения.КраткоеОписаниеОшибки;
Возврат;
КонецЕсли;
УстановитьПараметрыРезервногоКопирования();
Страницы = Элементы.СтраницыЗагрузкиДанных;
Страницы.ТекущаяСтраница = Элементы.СтраницаИнформацииИВыполненияРезервногоКопирования;
Элементы.Закрыть.Доступность = Истина;
Элементы.Готово.Доступность = Ложь;
КоличествоСеансовИнформационнойБазы = ПроверитьНаличиеБлокирующихСеансов();
СоединенияИБВызовСервера.УстановитьБлокировкуСоединений(
НСтр("ru = 'Выполняется восстановление информационной базы.'"),
"РезервноеКопирование");
Если КоличествоСеансовИнформационнойБазы = 1 Тогда
СоединенияИБКлиент.УстановитьПризнакЗавершитьВсеСеансыКромеТекущего(Истина);
СоединенияИБКлиент.УстановитьПризнакРаботаПользователейЗавершается(Истина);
НачатьВосстановлениеДанных();
Иначе
СоединенияИБКлиент.УстановитьРежимЗавершенияРаботыПользователей(Истина);
УстановитьОбработчикОжиданияНачалаРезервногоКопирования();
УстановитьОбработчикОжиданияИстеченияТаймаутаРезервногоКопирования();
КонецЕсли;
КонецПроцедуры
&НаСервере
Функция ПроверитьНаличиеБлокирующихСеансов()
КоличествоСеансовИнформационнойБазы = КоличествоСеансовИнформационнойБазы();
Элементы.КоличествоАктивныхПользователей.Заголовок = КоличествоСеансовИнформационнойБазы;
ИнформацияОБлокирующихСеансах = СоединенияИБ.ИнформацияОБлокирующихСеансах("");
ИмеютсяБлокирующиеСеансы = ИнформацияОБлокирующихСеансах.ИмеютсяБлокирующиеСеансы;
Если ИмеютсяБлокирующиеСеансы Тогда
Элементы.ДекорацияАктивныеСеансы.Заголовок = ИнформацияОБлокирующихСеансах.ТекстСообщения;
КонецЕсли;
Элементы.ДекорацияАктивныеСеансы.Видимость = ИмеютсяБлокирующиеСеансы;
Возврат КоличествоСеансовИнформационнойБазы;
КонецФункции
&НаКлиенте
Процедура УстановитьОбработчикОжиданияИстеченияТаймаутаРезервногоКопирования()
ПодключитьОбработчикОжидания("ИстечениеВремениОжидания", 600, Истина);
КонецПроцедуры
&НаКлиенте
Процедура УстановитьОбработчикОжиданияНачалаРезервногоКопирования()
ПодключитьОбработчикОжидания("ПроверкаНаЕдинственностьПодключения", 5);
КонецПроцедуры
&НаКлиенте
Процедура ВыбратьФайлРезервнойКопии()
ДиалогОткрытияФайла = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Открытие);
ДиалогОткрытияФайла.Фильтр = НСтр("ru = 'Резервная копия базы (*.zip, *.1CD)|*.zip;*.1cd'");
ДиалогОткрытияФайла.Заголовок= НСтр("ru = 'Выберите файл резервной копии'");
ДиалогОткрытияФайла.ПроверятьСуществованиеФайла = Истина;
Если ДиалогОткрытияФайла.Выбрать() Тогда
Объект.ФайлЗагрузкиРезервнойКопии = ДиалогОткрытияФайла.ПолноеИмяФайла;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Функция ПроверитьЗаполнениеРеквизитов()
#Если ВебКлиент Или МобильныйКлиент Тогда
ТекстСообщения = НСтр("ru = 'Восстановление не доступно в веб-клиенте и мобильном клиенте.'");
ОбщегоНазначенияКлиент.СообщитьПользователю(ТекстСообщения);
Возврат Ложь;
#Иначе
Если ТребуетсяВводПароля И ПустаяСтрока(ПарольАдминистратораИБ) Тогда
ТекстСообщения = НСтр("ru = 'Не задан пароль администратора.'");
ОбщегоНазначенияКлиент.СообщитьПользователю(ТекстСообщения,, "ПарольАдминистратораИБ");
Возврат Ложь;
КонецЕсли;
Объект.ФайлЗагрузкиРезервнойКопии = СокрЛП(Объект.ФайлЗагрузкиРезервнойКопии);
ИмяФайла = СокрЛП(Объект.ФайлЗагрузкиРезервнойКопии);
Если ПустаяСтрока(ИмяФайла) Тогда
ТекстСообщения = НСтр("ru = 'Не выбран файл с резервной копией.'");
ОбщегоНазначенияКлиент.СообщитьПользователю(ТекстСообщения,, "Объект.ФайлЗагрузкиРезервнойКопии");
Возврат Ложь;
КонецЕсли;
ФайлАрхива = Новый Файл(ИмяФайла);
Если ВРег(ФайлАрхива.Расширение) <> ".ZIP" И ВРег(ФайлАрхива.Расширение) <> ".1CD" Тогда
ТекстСообщения = НСтр("ru = 'Выбранный файл не является архивом с резервной копией.'");
ОбщегоНазначенияКлиент.СообщитьПользователю(ТекстСообщения,, "Объект.ФайлЗагрузкиРезервнойКопии");
Возврат Ложь;
КонецЕсли;
Если ВРег(ФайлАрхива.Расширение) = ".1CD" Тогда
Если ВРег(ФайлАрхива.ИмяБезРасширения) <> "1CV8" Тогда
ТекстСообщения = НСтр("ru = 'Выбранный файл не является резервной копией (неправильное имя файла информационной базы).'");
ОбщегоНазначенияКлиент.СообщитьПользователю(ТекстСообщения,, "Объект.ФайлЗагрузкиРезервнойКопии");
Возврат Ложь;
КонецЕсли;
Иначе
Попытка
ZipФайл = Новый ЧтениеZipФайла(ИмяФайла);
Исключение
ТекстСообщения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр(
"ru = 'Выбранный файл архива с резервной копией поврежден или не является архивом (%1).'"),
ОбработкаОшибок.КраткоеПредставлениеОшибки(ИнформацияОбОшибке()));
ОбщегоНазначенияКлиент.СообщитьПользователю(ТекстСообщения,, "Объект.ФайлЗагрузкиРезервнойКопии");
Возврат Ложь;
КонецПопытки;
Если ZipФайл.Элементы.Количество() <> 1 Тогда
ТекстСообщения = НСтр("ru = 'Выбранный файл не является архивом с резервной копией (содержит более одного файла).'");
ОбщегоНазначенияКлиент.СообщитьПользователю(ТекстСообщения,, "Объект.ФайлЗагрузкиРезервнойКопии");
Возврат Ложь;
КонецЕсли;
ФайлВАрхиве = ZipФайл.Элементы[0];
Если ВРег(ФайлВАрхиве.Расширение) <> "1CD" Тогда
ТекстСообщения = НСтр("ru = 'Выбранный файл не является архивом с резервной копией (не содержит файл информационной базы).'");
ОбщегоНазначенияКлиент.СообщитьПользователю(ТекстСообщения,, "Объект.ФайлЗагрузкиРезервнойКопии");
Возврат Ложь;
КонецЕсли;
Если ВРег(ФайлВАрхиве.ИмяБезРасширения) <> "1CV8" Тогда
ТекстСообщения = НСтр("ru = 'Выбранный файл не является архивом с резервной копией (неправильное имя файла информационной базы).'");
ОбщегоНазначенияКлиент.СообщитьПользователю(ТекстСообщения,, "Объект.ФайлЗагрузкиРезервнойКопии");
Возврат Ложь;
КонецЕсли;
КонецЕсли;
Возврат Истина;
#КонецЕсли
КонецФункции
#Область ПроцедурыОбработчиковОжидания
&НаКлиенте
Процедура ИстечениеВремениОжидания()
ОтключитьОбработчикОжидания("ПроверкаНаЕдинственностьПодключения");
ОтменитьПодготовку();
КонецПроцедуры
&НаСервере
Процедура ОтменитьПодготовку()
Элементы.НадписьНеУдалось.Заголовок = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru = '%1.
|Подготовка к восстановлению данных из резервной копии отменена. Информационная база разблокирована.'"),
СоединенияИБ.СообщениеОНеотключенныхСеансах());
Элементы.СтраницыЗагрузкиДанных.ТекущаяСтраница = Элементы.СтраницаОшибокПриКопировании;
Элементы.Готово.Видимость = Ложь;
Элементы.Закрыть.Заголовок = НСтр("ru = 'Закрыть'");
Элементы.Закрыть.КнопкаПоУмолчанию = Истина;
СоединенияИБ.РазрешитьРаботуПользователей();
КонецПроцедуры
&НаКлиенте
Процедура ПроверкаНаЕдинственностьПодключения()
Если КоличествоСеансовИнформационнойБазы() = 1 Тогда
НачатьВосстановлениеДанных();
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура НачатьВосстановлениеДанных()
#Если Не ВебКлиент И Не МобильныйКлиент Тогда
РезервноеКопированиеИБКлиент.НеОстанавливатьВыполнениеСценариев();
ИмяГлавногоФайлаСкрипта = СформироватьФайлыСкрипта();
ЖурналРегистрацииКлиент.ДобавитьСообщениеДляЖурналаРегистрации(
РезервноеКопированиеИБКлиент.СобытиеЖурналаРегистрации(),
"Информация",
НСтр("ru = 'Выполняется восстановление данных информационной базы:'") + " " + ИмяГлавногоФайлаСкрипта);
ПараметрыПриложения.Вставить("СтандартныеПодсистемы.ПропуститьПредупреждениеПередЗавершениемРаботыСистемы", Истина);
ПутьКПрограммеЗапуска = СтандартныеПодсистемыКлиент.КаталогСистемныхПриложений() + "mshta.exe";
СтрокаЗапуска = """%1"" ""%2"" [p1]%3[/p1]";
СтрокаЗапуска = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
СтрокаЗапуска,
ПутьКПрограммеЗапуска,
ИмяГлавногоФайлаСкрипта,
РезервноеКопированиеИБКлиент.СтрокаUnicode(ПарольАдминистратораИБ));
ПараметрыЗапускаПрограммы = ФайловаяСистемаКлиент.ПараметрыЗапускаПрограммы();
ПараметрыЗапускаПрограммы.Оповещение = Новый ОписаниеОповещения("ПослеЗапускаСкрипта", ЭтотОбъект);
ПараметрыЗапускаПрограммы.ДождатьсяЗавершения = Ложь;
ФайловаяСистемаКлиент.ЗапуститьПрограмму(СтрокаЗапуска, ПараметрыЗапускаПрограммы);
#КонецЕсли
КонецПроцедуры
&НаКлиенте
Процедура ПослеЗапускаСкрипта(Результат, Контекст) Экспорт
Если Результат.ПриложениеЗапущено Тогда
ПрекратитьРаботуСистемы();
Иначе
ПоказатьПредупреждение(, Результат.ОписаниеОшибки);
КонецЕсли;
КонецПроцедуры
#КонецОбласти
#Область ПроцедурыИФункцииПодготовкиВосстановленияДанных
#Если Не ВебКлиент И Не МобильныйКлиент Тогда
&НаКлиенте
Функция СформироватьФайлыСкрипта()
ПараметрыКопирования = РезервноеКопированиеИБКлиент.КлиентскиеПараметрыРезервногоКопирования();
СоздатьКаталог(ПараметрыКопирования.КаталогВременныхФайловОбновления);
ПараметрыСкрипта = РезервноеКопированиеИБКлиент.ОбщиеПараметрыСкрипта();
ПараметрыСкрипта.ИмяФайлаПрограммы = ПараметрыКопирования.ИмяФайлаПрограммы;
ПараметрыСкрипта.СобытиеЖурналаРегистрации = ПараметрыКопирования.СобытиеЖурналаРегистрации;
ПараметрыСкрипта.ИмяCOMСоединителя = ОбщегоНазначенияКлиентСервер.ИмяCOMСоединителя();
ПараметрыСкрипта.ПутьКCOMСоединителю = КаталогПрограммы() + "comcntr.dll";
ПараметрыСкрипта.ЭтоБазоваяВерсияКонфигурации = СтандартныеПодсистемыКлиент.ЭтоБазоваяВерсияКонфигурации();
ПараметрыСкрипта.ПараметрыСкрипта = РезервноеКопированиеИБКлиент.ПараметрыАутентификацииАдминистратораОбновления(ПарольАдминистратораИБ);
ПараметрыСкрипта.ПараметрыЗапускаПредприятия = ОбщегоНазначенияСлужебныйКлиент.ПараметрыЗапускаПредприятияИзСкрипта();
Скрипты = СформироватьТекстСкриптов(ПараметрыСкрипта, ПараметрыПриложения["СтандартныеПодсистемы.СообщенияДляЖурналаРегистрации"]);
ФайлСкрипта = Новый ТекстовыйДокумент;
ФайлСкрипта.Вывод = ИспользованиеВывода.Разрешить;
ФайлСкрипта.УстановитьТекст(Скрипты.Скрипт);
ИмяФайлаСкрипта = ПараметрыКопирования.КаталогВременныхФайловОбновления + "main.js";
ФайлСкрипта.Записать(ИмяФайлаСкрипта, РезервноеКопированиеИБКлиент.КодировкаФайловПрограммыРезервногоКопированияИБ());
ФайлСкрипта = Новый ТекстовыйДокумент;
ФайлСкрипта.Вывод = ИспользованиеВывода.Разрешить;
ФайлСкрипта.УстановитьТекст(Скрипты.ДопФайлРезервногоКопирования);
ФайлСкрипта.Записать(ПараметрыКопирования.КаталогВременныхФайловОбновления + "helpers.js", РезервноеКопированиеИБКлиент.КодировкаФайловПрограммыРезервногоКопированияИБ());
БиблиотекаКартинок.ЗаставкаВнешнейОперации.Записать(ПараметрыКопирования.КаталогВременныхФайловОбновления + "splash.png");
БиблиотекаКартинок.ЗначокЗаставкиВнешнейОперации.Записать(ПараметрыКопирования.КаталогВременныхФайловОбновления + "splash.ico");
БиблиотекаКартинок.ДлительнаяОперация48.Записать(ПараметрыКопирования.КаталогВременныхФайловОбновления + "progress.gif");
ИмяГлавногоФайлаСкрипта = ПараметрыКопирования.КаталогВременныхФайловОбновления + "splash.hta";
ФайлСкрипта = Новый ТекстовыйДокумент;
ФайлСкрипта.Вывод = ИспользованиеВывода.Разрешить;
ФайлСкрипта.УстановитьТекст(Скрипты.ЗаставкаВосстановления);
ФайлСкрипта.Записать(ИмяГлавногоФайлаСкрипта, РезервноеКопированиеИБКлиент.КодировкаФайловПрограммыРезервногоКопированияИБ());
ФайлЛога = Новый ТекстовыйДокумент;
ФайлЛога.Вывод = ИспользованиеВывода.Разрешить;
ФайлЛога.УстановитьТекст(СтандартныеПодсистемыКлиент.ИнформацияДляПоддержки());
ФайлЛога.Записать(ПараметрыКопирования.КаталогВременныхФайловОбновления + "templog.txt", КодировкаТекста.Системная);
Возврат ИмяГлавногоФайлаСкрипта;
КонецФункции
#КонецЕсли
&НаСервере
Функция СформироватьТекстСкриптов(ПараметрыСкрипта, СообщенияДляЖурналаРегистрации)
ЖурналРегистрации.ЗаписатьСобытияВЖурналРегистрации(СообщенияДляЖурналаРегистрации);
Результат = Новый Структура("Скрипт, ДопФайлРезервногоКопирования, ЗаставкаВосстановления");
Результат.Скрипт = СформироватьТекстСкрипта(ПараметрыСкрипта);
Результат.ДопФайлРезервногоКопирования = Обработки.РезервноеКопированиеИБ.ПолучитьМакет("ДопФайлРезервногоКопирования").ПолучитьТекст();
Результат.ЗаставкаВосстановления = СформироватьТекстЗаставки();
Возврат Результат;
КонецФункции
&НаСервере
Функция СформироватьТекстСкрипта(ПараметрыСкрипта)
ШаблонСкрипта = Обработки.РезервноеКопированиеИБ.ПолучитьМакет("МакетФайлаЗагрузкаИБ");
Скрипт = ШаблонСкрипта.ПолучитьОбласть("ОбластьПараметров");
Скрипт.УдалитьСтроку(1);
Скрипт.УдалитьСтроку(Скрипт.КоличествоСтрок());
Если СтрНачинаетсяС(Скрипт.ПолучитьСтроку(Скрипт.КоличествоСтрок()), "#") Тогда
Скрипт.УдалитьСтроку(Скрипт.КоличествоСтрок());
КонецЕсли;
Текст = ШаблонСкрипта.ПолучитьОбласть("ОбластьРезервногоКопирования");
Текст.УдалитьСтроку(1);
Текст.УдалитьСтроку(Текст.КоличествоСтрок());
Возврат ВставитьПараметрыСкрипта(Скрипт.ПолучитьТекст(), ПараметрыСкрипта)
+ ВставитьПараметрыСкрипта(Текст.ПолучитьТекст(), ПараметрыСкрипта);
КонецФункции
&НаСервере
Функция ВставитьПараметрыСкрипта(Знач Текст, Знач ПараметрыСкрипта)
ПараметрыТекста = РезервноеКопированиеИБСервер.ПодготовитьОбщиеПараметрыСкрипта(ПараметрыСкрипта);
ПараметрыТекста["[ФайлРезервнойКопии]"] = РезервноеКопированиеИБСервер.ПодготовитьТекст(Объект.ФайлЗагрузкиРезервнойКопии);
ПараметрыТекста["[КаталогВременныхФайлов]"] = РезервноеКопированиеИБСервер.ПодготовитьТекст(КаталогВременныхФайлов());
Возврат РезервноеКопированиеИБСервер.ПодставитьПараметрыВТекст(Текст, ПараметрыТекста);
КонецФункции
&НаСервере
Функция СформироватьТекстЗаставки()
ШаблонТекста = Обработки.РезервноеКопированиеИБ.ПолучитьМакет("ЗаставкаВосстановления").ПолучитьТекст();
ПараметрыТекста = Новый Соответствие;
ПараметрыТекста["[ЗаголовокЗаставки]"] = НСтр("ru = 'Восстановление данных из резервной копии...'");
ПараметрыТекста["[ТекстЗаставки]"] =
НСтр("ru = 'Пожалуйста, подождите.
|<br /> Выполняется восстановление базы данных
|<br /> из резервной копии.
|<br /> Не рекомендуется останавливать процесс.'");
ПараметрыТекста["[Шаг1Инициализация]"] = НСтр("ru = 'Инициализация'");
ПараметрыТекста["[Шаг2ВосстановлениеДанных]"] = НСтр("ru = 'Восстановление данных'");
ПараметрыТекста["[Шаг3ОжиданиеЗавершения]"] = НСтр("ru = 'Ожидание завершения восстановления данных'");
ПараметрыТекста["[Шаг4РазрешениеПодключений]"] = НСтр("ru = 'Разрешение подключений новых соединений'");
ПараметрыТекста["[Шаг5Завершение]"] = НСтр("ru = 'Завершение'");
ПараметрыТекста["[ПроцессПрерван]"] = НСтр("ru = 'Внимание: процесс восстановления данных был прерван, и информационная база осталась заблокированной.'");
ПараметрыТекста["[ПроцессПрерванПодсказка]"] = НСтр("ru = 'Для разблокирования информационной базы воспользуйтесь консолью кластера серверов или запустите ""1С:Предприятие"".'");
РезервноеКопированиеИБСервер.УстановитьОбщиеПараметрыЗаставки(ПараметрыТекста);
Возврат РезервноеКопированиеИБСервер.ПодставитьПараметрыВТекст(ШаблонТекста, ПараметрыТекста);
КонецФункции
&НаСервере
Процедура УстановитьПараметрыРезервногоКопирования()
ПараметрыРезервногоКопирования = РезервноеКопированиеИБСервер.НастройкиРезервногоКопирования();
ПараметрыРезервногоКопирования.Вставить("АдминистраторИБ", АдминистраторИБ);
ПараметрыРезервногоКопирования.Вставить("ПарольАдминистратораИБ", ?(ТребуетсяВводПароля, ПарольАдминистратораИБ, ""));
РезервноеКопированиеИБСервер.УстановитьНастройкиРезервногоКопирования(ПараметрыРезервногоКопирования);
КонецПроцедуры
&НаСервереБезКонтекста
Функция КоличествоСеансовИнформационнойБазы()
Возврат СоединенияИБ.КоличествоСеансовИнформационнойБазы(Ложь, Ложь);
КонецФункции
#КонецОбласти
#КонецОбласти