#Область ОписаниеПеременных
&НаКлиенте
Перем ПараметрыАдминистрирования;
&НаКлиенте
Перем ФайлыИсправлений;
&НаКлиенте
Перем ПервоеОткрытиеФормы;
#КонецОбласти
#Область ОбработчикиСобытийФормы
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
Если Не ОбновлениеКонфигурации.ЕстьПраваНаУстановкуОбновления() Тогда
ВызватьИсключение(НСтр("ru = 'Недостаточно прав для обновления приложения. Обратитесь к администратору.'"),
КатегорияОшибки.НарушениеПравДоступа);
ИначеЕсли Пользователи.ЭтоСеансВнешнегоПользователя() Тогда
ВызватьИсключение(НСтр("ru = 'Недостаточно прав доступа.'"), КатегорияОшибки.НарушениеПравДоступа);
КонецЕсли;
Если Не ОбщегоНазначения.ЭтоWindowsКлиент() Тогда
Возврат;
КонецЕсли;
ЭтоФайловаяБаза = ОбщегоНазначения.ИнформационнаяБазаФайловая();
ЭтоПодчиненныйУзелРИБ = ОбщегоНазначения.ЭтоПодчиненныйУзелРИБ();
Объект.РезультатОбновления = ОбновлениеКонфигурации.ОбновлениеКонфигурацииУспешно(КаталогСкрипта);
Если Объект.РезультатОбновления <> Неопределено Тогда
ОбновлениеКонфигурации.СброситьСтатусОбновленияКонфигурации();
КонецЕсли;
Если Не ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.РаботаСПочтовымиСообщениями") Тогда
Элементы.ПанельПочта.Видимость = Ложь;
КонецЕсли;
СтатусНевыполненныхОбработчиков = ОбновлениеИнформационнойБазыСлужебный.СтатусНевыполненныхОбработчиков();
Элементы.НадписьНезавершенныеОбработчики.Видимость = ЗначениеЗаполнено(СтатусНевыполненныхОбработчиков);
Элементы.НадписьВыявленныеПроблемы.Видимость = ЕстьПроблемыСистемныхПроверок();
Элементы.НадписьЕстьРасширения.Видимость = ОбновлениеКонфигурации.ПредупреждатьОНаличииРасширений();
Элементы.ПанельПредупреждений.Видимость = Элементы.НадписьВыявленныеПроблемы.Видимость
Или Элементы.НадписьЕстьРасширения.Видимость;
КонфигурацияИзменена = КонфигурацияИзменена();
ЗагрузитьРасширения = ЗагрузитьРасширенияИзменяющиеСтруктуруДанных();
ЭтоВебКлиент = ОбщегоНазначения.ЭтоВебКлиент() Или ОбщегоНазначения.КлиентПодключенЧерезВебСервер();
НуженФайлОбновления = ?((КонфигурацияИзменена ИЛИ ЗагрузитьРасширения) И Не ЭтоВебКлиент, 0, 1);
Если Параметры.ЗавершениеРаботыСистемы Тогда
Элементы.ПереключательОбновленияФайл.Видимость = Ложь;
Элементы.ПереключательОбновленияСервер.Видимость = Ложь;
Элементы.ПолеДатаВремяОбновления.Видимость = Ложь;
Элементы.НадписьНажмитеДалее.Видимость = Истина;
КонецЕсли;
Если Параметры.ПолученоОбновлениеКонфигурации Тогда
Элементы.СтраницыСпособОбновленияФайл.ТекущаяСтраница = Элементы.СтраницаПолученоОбновлениеИзПриложенияФайл;
КонецЕсли;
Элементы.НадписьОбновлениеКонфигурацииВыполняетсяПриОбменеДаннымиСГлавнымУзлом.Заголовок = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
Элементы.НадписьОбновлениеКонфигурацииВыполняетсяПриОбменеДаннымиСГлавнымУзлом.Заголовок, ПланыОбмена.ГлавныйУзел());
УстановитьПривилегированныйРежим(Истина);
Если ПустаяСтрока(Параметры.ВыбранныеФайлы) Тогда
ВосстановитьНастройкиОбновленияКонфигурации();
Иначе
ВыбранныеФайлы = Параметры.ВыбранныеФайлы;
ПоказатьУстановленныеИсправления = Истина;
КонецЕсли;
Если ЭтоФайловаяБаза И Объект.РежимОбновления > 1 Или Параметры.ЗавершениеРаботыСистемы Тогда
Объект.РежимОбновления = 0;
КонецЕсли;
Элементы.ПоискИУстановкаОбновлений.Видимость = ОбщегоНазначения.ПодсистемаСуществует("ИнтернетПоддержкаПользователей.ПолучениеОбновленийПрограммы");
Если ЭтоВебКлиент Или ЭтоПодчиненныйУзелРИБ Тогда
ЗаголовокВариантаВыбора = НСтр("ru = 'Укажите файл исправлений:'");
Элементы.ПереключательНуженФайлОбновления.СписокВыбора[1].Представление = ЗаголовокВариантаВыбора;
КонецЕсли;
ЗаполнитьПанельИнформации();
ИнтервалУведомления = 5;
КонецПроцедуры
&НаКлиенте
Процедура ПриОткрытии(Отказ)
Результат = ОбновлениеКонфигурацииКлиент.ПоддерживаетсяУстановкаОбновлений();
Если Не Результат.Поддерживается
И Не Результат.ПоддерживаетсяУстановкаИсправлений Тогда
Элементы.ГруппаСтраницыОсновное.ТекущаяСтраница = Элементы.СтраницаНедоступно;
Элементы.ФормаЗакрыть.Видимость = Истина;
Элементы.НадписьНедоступно.Заголовок = Результат.ОписаниеОшибки;
Возврат;
КонецЕсли;
ПервоеОткрытиеФормы = Истина;
ОписаниеВыбранныхФайлов = ?(ЗначениеЗаполнено(ФайлыИсправленийСтрокой), ФайлыИсправленийСтрокой, ВыбранныеФайлы);
ИнициализироватьФайлыИсправлений(ОписаниеВыбранныхФайлов);
Если Параметры.ВыполнитьОбновление Тогда
ПерейтиКВыборуРежимаОбновления();
Возврат;
КонецЕсли;
Страницы = Элементы.СтраницыПомощника.ПодчиненныеЭлементы;
ИмяСтраницы = Страницы.ФайлОбновления.Имя;
Если ЭтоПодчиненныйУзелРИБ Тогда
Если КонфигурацияИзменена ИЛИ ЗагрузитьРасширения Тогда
ПерейтиКВыборуРежимаОбновления();
Возврат;
КонецЕсли;
КонецЕсли;
ПередОткрытиемСтраницы(Страницы[ИмяСтраницы]);
Элементы.СтраницыПомощника.ТекущаяСтраница = Страницы[ИмяСтраницы];
КонецПроцедуры
&НаКлиенте
Процедура ОбработкаВыбора(ВыбранноеЗначение, ИсточникВыбора)
Если ВРег(ИсточникВыбора.ИмяФормы) = ВРег("Обработка.АктивныеПользователи.Форма.АктивныеПользователи") Тогда
ОбновитьИнформациюОНаличииСоединений();
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ОбработкаОповещения(ИмяСобытия, Параметр, Источник)
Если ИмяСобытия = "ЛегальностьПолученияОбновлений" И Не Параметр Тогда
ОтработатьНажатиеКнопкиНазад();
ИначеЕсли ИмяСобытия = "КонтрольВеденияУчета_УспешнаяПроверка" Тогда
ЗаполнитьПанельИнформации();
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ПриЗакрытии(ЗавершениеРаботы)
Если ЗавершениеРаботы Тогда
Возврат;
КонецЕсли;
ЖурналРегистрацииКлиент.ЗаписатьСобытияВЖурналРегистрации();
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиСобытийЭлементовШапкиФормы
#Область СтраницаФайлОбновления
&НаКлиенте
Процедура ПереключательНуженФайлОбновленияПриИзменении(Элемент)
ПередОткрытиемСтраницы();
КонецПроцедуры
&НаКлиенте
Процедура ПолеФайлОбновленияНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
ПодключитьОбработчикОжидания("ВыбратьФайлОбновления", 0.1, Истина);
КонецПроцедуры
#КонецОбласти
#Область СтраницаПослеУстановкиИсправлений
&НаКлиенте
Процедура ДекорацияАктивныеПользователиОбработкаНавигационнойСсылки(Элемент, НавигационнаяСсылкаФорматированнойСтроки, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
ПоказатьАктивныхПользователей();
КонецПроцедуры
&НаКлиенте
Процедура НадписьОшибкаУстановкиИсправленийОбработкаНавигационнойСсылки(Элемент, НавигационнаяСсылкаФорматированнойСтроки, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
ОтборЖурнала = Новый Структура;
ОтборЖурнала.Вставить("СобытиеЖурналаРегистрации", НСтр("ru = 'Исправления.Установка'"));
ЖурналРегистрацииКлиент.ОткрытьЖурналРегистрации(ОтборЖурнала);
КонецПроцедуры
#КонецОбласти
#Область СтраницаВыборРежимаОбновленияФайл
&НаКлиенте
Процедура НадписьСписокДействийНажатие(Элемент)
ПоказатьАктивныхПользователей();
КонецПроцедуры
&НаКлиенте
Процедура НадписьСписокДействий1Нажатие(Элемент)
ПоказатьАктивныхПользователей();
КонецПроцедуры
&НаКлиенте
Процедура НадписьСписокДействий3Нажатие(Элемент)
ПоказатьАктивныхПользователей();
КонецПроцедуры
&НаКлиенте
Процедура НадписьРезервнаяКопияНажатие(Элемент)
ПараметрыРезервногоКопирования = Новый Структура;
ПараметрыРезервногоКопирования.Вставить("СоздаватьРезервнуюКопию", Объект.СоздаватьРезервнуюКопию);
ПараметрыРезервногоКопирования.Вставить("ИмяКаталогаРезервнойКопииИБ", Объект.ИмяКаталогаРезервнойКопииИБ);
ПараметрыРезервногоКопирования.Вставить("ВосстанавливатьИнформационнуюБазу", Объект.ВосстанавливатьИнформационнуюБазу);
ОписаниеОповещения = Новый ОписаниеОповещения("ПослеЗакрытияФормыРезервногоКопирования", ЭтотОбъект);
ОбновлениеКонфигурацииКлиент.ПоказатьРезервноеКопирование(ПараметрыРезервногоКопирования, ОписаниеОповещения);
КонецПроцедуры
&НаКлиенте
Процедура ПослеЗакрытияФормыРезервногоКопирования(Результат, ДополнительныеПараметры) Экспорт
Если Результат <> Неопределено Тогда
ЗаполнитьЗначенияСвойств(Объект, Результат);
Элементы.НадписьРезервнаяКопияФайл.Заголовок = ОбновлениеКонфигурацииКлиент.ЗаголовокСозданияРезервнойКопии(Результат);
КонецЕсли;
КонецПроцедуры
#КонецОбласти
#Область СтраницаВыборРежимаОбновленияСервер
&НаКлиенте
Процедура ПереключательОбновленияПриИзменении(Элемент)
ПередОткрытиемСтраницы();
КонецПроцедуры
&НаКлиенте
Процедура ВыслатьОтчетНаПочтуПриИзменении(Элемент)
ПередОткрытиемСтраницы();
КонецПроцедуры
&НаКлиенте
Процедура НадписьОтложенныеОбработчикиОбработкаНавигационнойСсылки(Элемент, НавигационнаяСсылкаФорматированнойСтроки, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
ОбновлениеИнформационнойБазыКлиент.ПоказатьРезультатыОбновления();
КонецПроцедуры
&НаКлиенте
Процедура НадписьВыявленныеПроблемыОбработкаНавигационнойСсылки(Элемент, НавигационнаяСсылкаФорматированнойСтроки, СтандартнаяОбработка)
Если ОбщегоНазначенияКлиент.ПодсистемаСуществует("СтандартныеПодсистемы.КонтрольВеденияУчета") Тогда
МодульКонтрольВеденияУчетаСлужебныйКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("КонтрольВеденияУчетаСлужебныйКлиент");
МодульКонтрольВеденияУчетаСлужебныйКлиент.ОткрытьОтчетПоПроблемамИзОбработкиОбновления(ЭтотОбъект, СтандартнаяОбработка);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура НадписьИнформацияОбработкаНавигационнойСсылки(Элемент, НавигационнаяСсылкаФорматированнойСтроки, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
Если ОбщегоНазначенияКлиент.ПодсистемаСуществует("СтандартныеПодсистемы.КонтрольВеденияУчета") Тогда
МодульКонтрольВеденияУчетаСлужебныйКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("КонтрольВеденияУчетаСлужебныйКлиент");
МодульКонтрольВеденияУчетаСлужебныйКлиент.ОткрытьСписокПроверокВеденияУчета();
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура НадписьЕстьРасширенияОбработкаНавигационнойСсылки(Элемент, НавигационнаяСсылкаФорматированнойСтроки, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
ОткрытьФорму("ОбщаяФорма.Расширения");
КонецПроцедуры
&НаСервере
Функция ЕстьПроблемыСистемныхПроверок()
Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.КонтрольВеденияУчета") Тогда
МодульКонтрольВеденияУчетаСлужебный = ОбщегоНазначения.ОбщийМодуль("КонтрольВеденияУчетаСлужебный");
Возврат МодульКонтрольВеденияУчетаСлужебный.ЕстьПроблемыСистемныхПроверок();
КонецЕсли;
Возврат Ложь;
КонецФункции
&НаКлиенте
Процедура ПерезапуститьПрограммуПриИзменении(Элемент)
Если ПерезапуститьПрограмму Тогда
Элементы.КнопкаДалее.Заголовок = НСтр("ru = 'Перезапустить'");
Иначе
Элементы.КнопкаДалее.Заголовок = НСтр("ru = 'Готово'");
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ДекорацияУведомлятьПользователейОбработкаНавигационнойСсылки(Элемент, НавигационнаяСсылкаФорматированнойСтроки, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
СписокВыбора = Новый СписокЗначений;
СписокВыбора.Добавить("5", НСтр("ru = '5 минут'"));
СписокВыбора.Добавить("10", НСтр("ru = '10 минут'"));
СписокВыбора.Добавить("15", НСтр("ru = '15 минут'"));
СписокВыбора.Добавить("30", НСтр("ru = '30 минут'"));
Оповещение = Новый ОписаниеОповещения("ПослеВыбораИнтервалаУведомленияПользователей", ЭтотОбъект);
ПоказатьВыборИзМеню(Оповещение, СписокВыбора, Элементы.ДекорацияДляПодменю);
КонецПроцедуры
&НаКлиенте
Процедура УведомлятьПользователейПриИзменении(Элемент)
Элементы.ДекорацияУведомлятьПользователей.Доступность = УведомлятьПользователей;
КонецПроцедуры
#КонецОбласти
#КонецОбласти
#Область ОбработчикиКомандФормы
&НаКлиенте
Процедура КнопкаНазадНажатие(Команда)
ОтработатьНажатиеКнопкиНазад();
КонецПроцедуры
&НаКлиенте
Процедура КнопкаДалееНажатие(Команда)
ОбработатьНажатиеКнопкиДалее();
КонецПроцедуры
&НаКлиенте
Процедура ПоискИУстановкаОбновлений(Команда)
Если ОбщегоНазначенияКлиент.ПодсистемаСуществует("ИнтернетПоддержкаПользователей.ПолучениеОбновленийПрограммы") Тогда
Закрыть();
МодульПолучениеОбновленийПрограммыКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("ПолучениеОбновленийПрограммыКлиент");
МодульПолучениеОбновленийПрограммыКлиент.ОбновитьПрограмму();
КонецЕсли;
КонецПроцедуры
#КонецОбласти
#Область СлужебныеПроцедурыИФункции
&НаСервере
Процедура ЗаполнитьПанельИнформации()
Видимость = Ложь;
Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.КонтрольВеденияУчета") Тогда
МодульКонтрольВеденияУчетаСлужебный = ОбщегоНазначения.ОбщийМодуль("КонтрольВеденияУчетаСлужебный");
Информация = МодульКонтрольВеденияУчетаСлужебный.ИнформацияОСистемныхПроверкахВеденияУчета();
Если Информация.ПредупреждатьОНеобходимостиПовторнойПроверки Тогда
Если ЗначениеЗаполнено(Информация.ДатаПоследнейПроверки) Тогда
Подсказка = НСтр("ru = 'Последняя системная проверка выполнялась %1.'");
Подсказка = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(Подсказка,
Формат(Информация.ДатаПоследнейПроверки, "ДЛФ=Д"));
Иначе
Подсказка = "";
КонецЕсли;
Элементы.НадписьИнформация.РасширеннаяПодсказка.Заголовок = Подсказка;
Видимость = Истина;
КонецЕсли;
КонецЕсли;
Элементы.ПанельИнформации.Видимость = Видимость;
КонецПроцедуры
&НаКлиенте
Процедура ПередОткрытиемСтраницы(Знач НоваяСтраница = Неопределено)
ИмяПараметра = "СтандартныеПодсистемы.СообщенияДляЖурналаРегистрации";
Если ПараметрыПриложения[ИмяПараметра] = Неопределено Тогда
ПараметрыПриложения.Вставить(ИмяПараметра, Новый СписокЗначений);
КонецЕсли;
Страницы = Элементы.СтраницыПомощника.ПодчиненныеЭлементы;
Если НоваяСтраница = Неопределено Тогда
НоваяСтраница = Элементы.СтраницыПомощника.ТекущаяСтраница;
КонецЕсли;
ДоступностьКнопкиНазад = Истина;
ДоступностьКнопкиДалее = Истина;
ДоступностьКнопкиЗакрыть = Истина;
ФункцияКнопкиДалее = Истина;
ФункцияКнопкиЗакрыть = Истина;
Элементы.КнопкаДалее.Отображение = ОтображениеКнопки.Текст;
Если НоваяСтраница = Страницы.ОбновленияНеОбнаружено Тогда
ФункцияКнопкиДалее = Ложь;
ФункцияКнопкиЗакрыть = Ложь;
ДоступностьКнопкиДалее = Ложь;
ОписаниеТекущейКонфигурации = СтандартныеПодсистемыКлиент.ПараметрыРаботыКлиента().СинонимКонфигурации;
ВерсияТекущейКонфигурации = СтандартныеПодсистемыКлиент.ПараметрыРаботыКлиента().ВерсияКонфигурации;
Если Не СтандартныеПодсистемыКлиент.ПараметрыРаботыКлиента().ЭтоГлавныйУзел Тогда
ДоступностьКнопкиНазад = Ложь;
КонецЕсли;
ИначеЕсли НоваяСтраница = Страницы.ВыборРежимаОбновленияФайл Тогда
ФункцияКнопкиДалее = (Объект.РежимОбновления = 0);
ОбновитьИнформациюОНаличииСоединений(Страницы.ВыборРежимаОбновленияФайл);
Если Объект.СоздаватьРезервнуюКопию = 2 Тогда
Объект.ВосстанавливатьИнформационнуюБазу = Истина;
ИначеЕсли Объект.СоздаватьРезервнуюКопию = 0 Тогда
Объект.ВосстанавливатьИнформационнуюБазу = Ложь;
КонецЕсли;
Элементы.НадписьРезервнаяКопияФайл.Заголовок = ОбновлениеКонфигурацииКлиент.ЗаголовокСозданияРезервнойКопии(Объект);
Если Не СтандартныеПодсистемыКлиент.ПараметрыРаботыКлиента().ЭтоГлавныйУзел Тогда
ДоступностьКнопкиНазад = Ложь;
КонецЕсли;
ИначеЕсли НоваяСтраница = Страницы.ВыборРежимаОбновленияСервер Тогда
ФункцияКнопкиДалее = (Объект.РежимОбновления = 0);
Объект.ВосстанавливатьИнформационнуюБазу = Ложь;
СтраницыПанелиИнформацииПерезагрузки = Элементы.СтраницыИнформацииПерезагрузки.ПодчиненныеЭлементы;
Элементы.СтраницыИнформацииПерезагрузки.ТекущаяСтраница = ?(Объект.РежимОбновления = 0,
СтраницыПанелиИнформацииПерезагрузки.СтраницаПерезагрузкиСейчас,
СтраницыПанелиИнформацииПерезагрузки.СтраницаЗапланированнойПерезагрузки);
ОбновитьИнформациюОНаличииСоединений(Страницы.ВыборРежимаОбновленияСервер);
Элементы.ПолеДатаВремяОбновления.Доступность = (Объект.РежимОбновления = 2);
Элементы.ПанельУведомлятьПользователей.Видимость = (Объект.РежимОбновления = 2);
Элементы.АдресЭлектроннойПочты.Доступность = Объект.ВыслатьОтчетНаПочту;
Если Не СтандартныеПодсистемыКлиент.ПараметрыРаботыКлиента().ЭтоГлавныйУзел Тогда
ДоступностьКнопкиНазад = Ложь;
КонецЕсли;
Если Объект.РежимОбновления = 2 Тогда
Элементы.КнопкаДалее.Отображение = ОтображениеКнопки.КартинкаИТекст;
КонецЕсли;
ИначеЕсли НоваяСтраница = Страницы.ФайлОбновления Тогда
ДоступностьКнопкиНазад = Ложь;
Если НуженФайлОбновления = 0 Тогда
Если КонфигурацияИзменена ИЛИ ЗагрузитьРасширения Тогда
Элементы.СтраницыФайлОбновления.ТекущаяСтраница = Элементы.ЕстьИзменения;
Иначе
Элементы.СтраницыФайлОбновления.ТекущаяСтраница = Элементы.НетИзменений;
ДоступностьКнопкиДалее = Ложь;
КонецЕсли;
ИначеЕсли НуженФайлОбновления = 1 Тогда
ТекущийЭлемент = Элементы.ПолеФайлОбновления;
ЭтоТестКлиент = СтрНайти(ОбщегоНазначенияСлужебныйКлиент.ПараметрыЗапускаПредприятияИзСкрипта(), "TestClient") > 0;
Если ПервоеОткрытиеФормы И ПустаяСтрока(ВыбранныеФайлы) И Не ЭтоТестКлиент Тогда
ПодключитьОбработчикОжидания("ВыбратьФайлОбновления", 0.1, Истина);
КонецЕсли;
КонецЕсли;
Элементы.ПанельОбновлениеИзОсновнойКонфигурации.Видимость = НуженФайлОбновления = 0;
Элементы.ПолеФайлОбновления.Доступность = НуженФайлОбновления = 1;
Элементы.ПолеФайлОбновления.АвтоОтметкаНезаполненного = НуженФайлОбновления = 1;
Элементы.ПереключательНуженФайлОбновления.Доступность = Не ЭтоВебКлиент();
Элементы.ГруппаПоискИУстановкаОбновлений.Видимость = Не ЭтоВебКлиент();
КонецЕсли;
ЖурналРегистрацииКлиент.ЗаписатьСобытияВЖурналРегистрации();
КнопкаДалее = Элементы.КнопкаДалее;
КнопкаЗакрыть = Элементы.КнопкаЗакрыть;
Элементы.КнопкаНазад.Доступность = ДоступностьКнопкиНазад;
КнопкаДалее.Доступность = ДоступностьКнопкиДалее;
КнопкаЗакрыть.Доступность = ДоступностьКнопкиЗакрыть;
Если ДоступностьКнопкиДалее Тогда
Если Не КнопкаДалее.КнопкаПоУмолчанию Тогда
КнопкаДалее.КнопкаПоУмолчанию = Истина;
КонецЕсли;
ИначеЕсли ДоступностьКнопкиЗакрыть Тогда
Если Не КнопкаЗакрыть.КнопкаПоУмолчанию Тогда
КнопкаЗакрыть.КнопкаПоУмолчанию = Истина;
КонецЕсли;
КонецЕсли;
КнопкаДалее.Заголовок = ?(ФункцияКнопкиДалее, НСтр("ru = 'Далее >'"), НСтр("ru = 'Готово'"));
КнопкаЗакрыть.Заголовок = ?(ФункцияКнопкиЗакрыть, НСтр("ru = 'Отмена'"), НСтр("ru = 'Закрыть'"));
ПервоеОткрытиеФормы = Ложь;
КонецПроцедуры
&НаКлиенте
Процедура ВыбратьФайлОбновления()
Элементы.ПолеФайлОбновления.ТолькоПросмотр = Истина;
Элементы.КнопкаДалее.Доступность = Ложь;
Элементы.ПанельОбновлениеИзОсновнойКонфигурации.Видимость = Истина;
Элементы.СтраницыФайлОбновления.ТекущаяСтраница = Элементы.ОжиданиеВыбораФайлов;
СвойстваДиалога = СвойстваДиалогаВыбораФайлаОбновления();
ПараметрыЗагрузки = ФайловаяСистемаКлиент.ПараметрыЗагрузкиФайла();
ПараметрыЗагрузки.ИдентификаторФормы = УникальныйИдентификатор;
ПараметрыЗагрузки.Диалог.Заголовок = СвойстваДиалога.Заголовок;
ПараметрыЗагрузки.Диалог.Фильтр = СвойстваДиалога.Фильтр;
ПараметрыЗагрузки.Диалог.Каталог = КаталогФайлаОбновления(Элементы.ПолеФайлОбновления.ТекстРедактирования);
ФайловаяСистемаКлиент.ЗагрузитьФайлы(
Новый ОписаниеОповещения("ПослеВыбораФайловОбновления", ЭтотОбъект),
ПараметрыЗагрузки);
КонецПроцедуры
&НаКлиенте
Функция СвойстваДиалогаВыбораФайлаОбновления()
Свойства = Новый Структура("Фильтр, Заголовок");
#Если ВебКлиент Тогда
Свойства.Заголовок = НСтр("ru = 'Выбор исправлений'");
Свойства.Фильтр = НСтр("ru = 'Файлы исправлений (*.cfe*;*.zip)|*.cfe*;*.zip'");
#Иначе
Если ОбщегоНазначенияКлиент.КлиентПодключенЧерезВебСервер() Или ЭтоПодчиненныйУзелРИБ Тогда
Свойства.Заголовок = НСтр("ru = 'Выбор исправлений'");
Свойства.Фильтр = НСтр("ru = 'Файлы исправлений (*.cfe*;*.zip)|*.cfe*;*.zip'");
Иначе
Свойства.Заголовок = НСтр("ru = 'Выбор поставки обновления конфигурации'");
ОписаниеФильтраДиалога = Новый Массив;
ОписаниеФильтраДиалога.Добавить(НСтр("ru = 'Файлы поставки конфигурации (*.cf)|*.cf'"));
ОписаниеФильтраДиалога.Добавить(НСтр("ru = 'Файлы поставки обновления конфигурации(*.cfu)|*.cfu'"));
ОписаниеФильтраДиалога.Вставить(0, НСтр("ru = 'Все файлы (*.cf*;*.cfu;*.cfe;*.zip)|*.cf*;*.cfu;*.cfe;*.zip'"));
ОписаниеФильтраДиалога.Добавить(НСтр("ru = 'Файлы исправлений (*.cfe*;*.zip)|*.cfe*;*.zip'"));
Свойства.Фильтр = СтрСоединить(ОписаниеФильтраДиалога, "|");
КонецЕсли;
#КонецЕсли
Возврат Свойства;
КонецФункции
&НаКлиенте
Процедура ПослеВыбораФайловОбновления(ОписаниеВыбранныхФайлов, ДополнительныеПараметры) Экспорт
Если ТипЗнч(ОписаниеВыбранныхФайлов) = Тип("Массив") Тогда
ОбработатьФайлыОбновления(ОписаниеВыбранныхФайлов);
КонецЕсли;
Элементы.ПолеФайлОбновления.ТолькоПросмотр = Ложь;
Элементы.КнопкаДалее.Доступность = Истина;
ПередОткрытиемСтраницы();
КонецПроцедуры
&НаКлиенте
Процедура ОбработатьФайлыОбновления(ОписаниеВыбранныхФайлов)
ИнициализироватьФайлыИсправлений(ОписаниеВыбранныхФайлов, Истина);
ИменаФайловИсправлений = Новый Массив;
ИменаФайловОбновлений = Новый Массив;
Для Каждого ОписаниеВыбранногоФайла Из ОписаниеВыбранныхФайлов Цикл
Если ЭтоФайлИсправления(ОписаниеВыбранногоФайла.Имя) Тогда
ИменаФайловИсправлений.Добавить(ОписаниеВыбранногоФайла.Имя);
Иначе
ИменаФайловОбновлений.Добавить(ОписаниеВыбранногоФайла.Имя);
КонецЕсли;
КонецЦикла;
ИменаФайлов = ОбщегоНазначенияКлиент.СкопироватьРекурсивно(ИменаФайловИсправлений);
Если ИменаФайловОбновлений.Количество() > 0 Тогда
ИменаФайлов.Вставить(0, ИменаФайловОбновлений[0]);
КонецЕсли;
ВыбранныеФайлы = СтрСоединить(ИменаФайлов, ",");
КонецПроцедуры
&НаКлиенте
Процедура ИнициализироватьФайлыИсправлений(ОписаниеФайлов, Переинициализировать = Ложь)
Если ТипЗнч(ФайлыИсправлений) = Тип("Массив") И Не Переинициализировать Тогда
Возврат;
КонецЕсли;
ФайлыИсправлений = Новый Массив;
Если ТипЗнч(ОписаниеФайлов) = Тип("Массив") Тогда
Для Каждого ОписаниеФайла Из ОписаниеФайлов Цикл
Если ЭтоФайлИсправления(ОписаниеФайла.ИмяФайла) Тогда
ФайлыИсправлений.Добавить(Новый ОписаниеПередаваемогоФайла(ОписаниеФайла.Имя, ОписаниеФайла.Хранение));
КонецЕсли;
КонецЦикла;
ИначеЕсли ТипЗнч(ОписаниеФайлов) = Тип("Строка") Тогда
ИменаФайлов = СтрРазделить(ОписаниеФайлов, ",");
Для Каждого ИмяФайла Из ИменаФайлов Цикл
Если ЭтоФайлИсправления(ИмяФайла) Тогда
ФайлыИсправлений.Добавить(Новый ОписаниеПередаваемогоФайла(ИмяФайла));
КонецЕсли;
КонецЦикла;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Функция ЭтоФайлИсправления(ИмяФайла)
Возврат СтрЗаканчиваетсяНа(ИмяФайла, ".cfe") Или СтрЗаканчиваетсяНа(ИмяФайла, ".zip");
КонецФункции
&НаКлиенте
Функция ЭтоВебКлиент()
#Если ВебКлиент Тогда
Возврат Истина;
#Иначе
Возврат ОбщегоНазначенияКлиент.КлиентПодключенЧерезВебСервер();
#КонецЕсли
КонецФункции
&НаКлиенте
Функция ИменаФайловИсправлений()
ИменаФайловИсправлений = Новый Массив;
Для Каждого ФайлИсправления Из ФайлыИсправлений Цикл
ИменаФайловИсправлений.Добавить(ФайлИсправления.Имя);
КонецЦикла;
Возврат ИменаФайловИсправлений;
КонецФункции
&НаКлиенте
Процедура ОбновитьИнформациюОНаличииСоединений(ТекущаяСтраница = Неопределено)
Если ТекущаяСтраница = Неопределено Тогда
ТекущаяСтраница = Элементы.СтраницыПомощника.ТекущаяСтраница;
КонецЕсли;
ИмяПараметра = "СтандартныеПодсистемы.СообщенияДляЖурналаРегистрации";
Если ТекущаяСтраница = Элементы.ВыборРежимаОбновленияФайл Тогда
СоединенияИнфо = СоединенияИБВызовСервера.ИнформацияОСоединениях(Ложь, ПараметрыПриложения[ИмяПараметра]);
Элементы.ГруппаСоединений.Видимость = СоединенияИнфо.НаличиеАктивныхСоединений;
Если СоединенияИнфо.НаличиеАктивныхСоединений Тогда
ВсеСтраницы = Элементы.ПанельАктивныеПользователи.ПодчиненныеЭлементы;
Если СоединенияИнфо.НаличиеCOMСоединений Тогда
Элементы.ПанельАктивныеПользователи.ТекущаяСтраница = ВсеСтраницы.АктивныеСоединения;
ИначеЕсли СоединенияИнфо.НаличиеСоединенияКонфигуратором Тогда
Элементы.ПанельАктивныеПользователи.ТекущаяСтраница = ВсеСтраницы.СоединениеКонфигуратора;
Иначе
Элементы.ПанельАктивныеПользователи.ТекущаяСтраница = ВсеСтраницы.АктивныеПользователи;
КонецЕсли;
КонецЕсли;
ИначеЕсли ТекущаяСтраница = Элементы.ВыборРежимаОбновленияСервер Тогда
ПараметрыСтраницы = ПараметрыСтраницыВыборРежимаОбновленияСервер(ПараметрыПриложения[ИмяПараметра]);
СоединенияИнфо = ПараметрыСтраницы.ИнформацияОСоединениях;
НаличиеСоединений = СоединенияИнфо.НаличиеАктивныхСоединений И Объект.РежимОбновления = 0;
Элементы.ГруппаСоединений1.Видимость = НаличиеСоединений;
Если НаличиеСоединений Тогда
ВсеСтраницы = Элементы.ПанельАктивныеПользователи1.ПодчиненныеЭлементы;
Элементы.ПанельАктивныеПользователи1.ТекущаяСтраница = ? (СоединенияИнфо.НаличиеCOMСоединений,
ВсеСтраницы.АктивныеСоединения1, ВсеСтраницы.АктивныеПользователи1);
КонецЕсли;
ИначеЕсли ТекущаяСтраница = Элементы.ПослеУстановкиИсправлений Тогда
СоединенияИнфо = СоединенияИБВызовСервера.ИнформацияОСоединениях(Ложь, ПараметрыПриложения[ИмяПараметра]);
Элементы.ДекорацияАктивныеПользователи.Видимость = СоединенияИнфо.НаличиеАктивныхСоединений;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура УстановитьОбновление()
ПараметрыОбновления = Новый Структура;
ПараметрыОбновления.Вставить("РежимОбновления");
ПараметрыОбновления.Вставить("ДатаВремяОбновления");
ПараметрыОбновления.Вставить("ВыслатьОтчетНаПочту");
ПараметрыОбновления.Вставить("АдресЭлектроннойПочты");
ПараметрыОбновления.Вставить("КодЗадачиПланировщика");
ПараметрыОбновления.Вставить("СоздаватьРезервнуюКопию");
ПараметрыОбновления.Вставить("ИмяКаталогаРезервнойКопииИБ");
ПараметрыОбновления.Вставить("ВосстанавливатьИнформационнуюБазу");
ПараметрыОбновления.Вставить("ИмяФайлаОбновления");
ЗаполнитьЗначенияСвойств(ПараметрыОбновления, Объект);
ПараметрыОбновления.Вставить("ЗавершениеРаботыСистемы", Параметры.ЗавершениеРаботыСистемы);
ПараметрыОбновления.Вставить("НуженФайлОбновления", Булево(НуженФайлОбновления));
ПараметрыОбновления.Вставить("ФайлыИсправлений", ИменаФайловИсправлений());
ПараметрыОбновления.Вставить("КонфигурацияИзменена", КонфигурацияИзменена);
ПараметрыОбновления.Вставить("ЗагрузитьРасширения", ЗагрузитьРасширения);
Если УведомлятьПользователей Тогда
ПараметрыОбновления.Вставить("ИнтервалУведомленияПользователей", ИнтервалУведомления);
Иначе
ПараметрыОбновления.Вставить("ИнтервалУведомленияПользователей", 0);
КонецЕсли;
ОбновлениеКонфигурацииКлиент.УстановитьОбновление(ЭтотОбъект, ПараметрыОбновления, ПараметрыАдминистрирования);
КонецПроцедуры
&НаКлиенте
Процедура ОбработатьНажатиеКнопкиДалее()
ОчиститьСообщения();
ТекущаяСтраница = Элементы.СтраницыПомощника.ТекущаяСтраница;
Страницы = Элементы.СтраницыПомощника.ПодчиненныеЭлементы;
Если ТекущаяСтраница = Страницы.ФайлОбновления Тогда
ПерейтиСоСтраницыФайлаОбновления();
ИначеЕсли ТекущаяСтраница = Страницы.ВыборРежимаОбновленияФайл
Или ТекущаяСтраница = Страницы.ВыборРежимаОбновленияСервер Тогда
УстановитьОбновление();
ИначеЕсли ТекущаяСтраница = Страницы.ПослеУстановкиИсправлений И ПерезапуститьПрограмму Тогда
ЗавершитьРаботуСистемы(Истина, Истина);
Иначе
Закрыть();
Если ПоказатьУстановленныеИсправления Тогда
ОбновлениеКонфигурацииКлиент.ПоказатьУстановленныеИсправления();
КонецЕсли;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ОтработатьНажатиеКнопкиНазад()
Страницы = Элементы.СтраницыПомощника.ПодчиненныеЭлементы;
ТекущаяСтраница = Элементы.СтраницыПомощника.ТекущаяСтраница;
НоваяТекущаяСтраница = ТекущаяСтраница;
Если ТекущаяСтраница = Страницы.ВыборРежимаОбновленияФайл
Или ТекущаяСтраница = Страницы.ВыборРежимаОбновленияСервер Тогда
НоваяТекущаяСтраница = Страницы.ФайлОбновления;
КонецЕсли;
ПередОткрытиемСтраницы(НоваяТекущаяСтраница);
Элементы.СтраницыПомощника.ТекущаяСтраница = НоваяТекущаяСтраница;
КонецПроцедуры
&НаКлиенте
Процедура ПерейтиСоСтраницыФайлаОбновления()
ИнициализироватьФайлыИсправлений(ВыбранныеФайлы);
Объект.ИмяФайлаОбновления = "";
Если Не ПустаяСтрока(ИсходныеКонфигурации) Тогда
УдалитьИзВременногоХранилища(ИсходныеКонфигурации);
ИсходныеКонфигурации = "";
КонецЕсли;
ИменаВыбранныхФайлов = СтрРазделить(ВыбранныеФайлы, ",");
Для Каждого ИмяФайла Из ИменаВыбранныхФайлов Цикл
Если Не ЭтоФайлИсправления(ИмяФайла) Тогда
Если Не ПустаяСтрока(Объект.ИмяФайлаОбновления) Тогда
ВызватьИсключение НСтр("ru = 'Допустимо выбирать только один файл обновления.'");
КонецЕсли;
Объект.ИмяФайлаОбновления = ИмяФайла;
КонецЕсли;
КонецЦикла;
Если НуженФайлОбновления = 1 Тогда
Если Не ЗначениеЗаполнено(ВыбранныеФайлы) Тогда
ОбщегоНазначенияКлиент.СообщитьПользователю(НСтр("ru = 'Укажите файл поставки обновления конфигурации.'"),,"Объект.ИмяФайлаОбновления");
ТекущийЭлемент = Элементы.ПолеФайлОбновления;
Возврат;
КонецЕсли;
Если Не ПустаяСтрока(Объект.ИмяФайлаОбновления) Тогда
Файл = Новый Файл(Объект.ИмяФайлаОбновления);
Если Не Файл.Существует() Или Не Файл.ЭтоФайл() Тогда
ОбщегоНазначенияКлиент.СообщитьПользователю(НСтр("ru = 'Файл поставки обновления конфигурации не найден.'"),,"Объект.ИмяФайлаОбновления");
ТекущийЭлемент = Элементы.ПолеФайлОбновления;
Возврат;
КонецЕсли;
КонецЕсли;
КонецЕсли;
Обработчик = Новый ОписаниеОповещения("ПроверитьПрименимостьФайловОбновления", ЭтотОбъект);
ПользователиСлужебныйКлиент.ПоказатьПредупреждениеБезопасности(Обработчик,
ПользователиСлужебныйКлиентСервер.ВидыПредупрежденийБезопасности().ПередВыборомФайлаОбновления);
КонецПроцедуры
&НаКлиенте
Процедура ПроверитьПрименимостьФайловОбновления(Результат, ДополнительныеПараметры) Экспорт
Если Результат <> "Продолжить" Тогда
Возврат;
КонецЕсли;
Если ПустаяСтрока(Объект.ИмяФайлаОбновления) Тогда
Если НуженФайлОбновления = 1 Тогда
ПерейтиКУстановкеИсправлений();
Иначе
ПриПроверкеЛегальностиПолученияОбновления();
КонецЕсли;
Возврат;
КонецЕсли;
Если Не ОбщегоНазначенияКлиент.ИнформационнаяБазаФайловая() Тогда
ПриПроверкеЛегальностиПолученияОбновления();
Возврат;
КонецЕсли;
Если Не ЭтоФайлПоставкиОбновленияКонфигурации(Объект.ИмяФайлаОбновления) Тогда
ПриПроверкеЛегальностиПолученияОбновления();
Возврат;
КонецЕсли;
Состояние(НСтр("ru = 'Проверка применимости...'"), 75);
СведенияОбОбновлении = ПроверитьПрименимостьФайлаОбновления(Объект.ИмяФайлаОбновления, УникальныйИдентификатор);
Если Не ПустаяСтрока(СведенияОбОбновлении.ТекстОшибки) Тогда
ПриПроверкеЛегальностиПолученияОбновления();
Возврат;
КонецЕсли;
Если СведенияОбОбновлении.Подходит Тогда
УдалитьИзВременногоХранилища(СведенияОбОбновлении.ИсходныеКонфигурации);
ПриПроверкеЛегальностиПолученияОбновления();
Возврат;
КонецЕсли;
ИсходныеКонфигурации = СведенияОбОбновлении.ИсходныеКонфигурации;
ОткрытьФорму("Обработка.УстановкаОбновлений.Форма.ОбновлениеНеПодходит",
Новый Структура("ИсходныеКонфигурации", ИсходныеКонфигурации));
КонецПроцедуры
&НаКлиенте
Функция ЭтоФайлПоставкиОбновленияКонфигурации(Знач ИмяФайла)
Возврат СтрСравнить(ОбщегоНазначенияКлиентСервер.ПолучитьРасширениеИмениФайла(ИмяФайла), "cfu") = 0;
КонецФункции
&НаСервереБезКонтекста
Функция ПроверитьПрименимостьФайлаОбновления(Знач ИмяФайла, Знач ИдентификаторФормы)
Результат = ОбновлениеКонфигурации.СведенияОбОбновлении(ИмяФайла);
Результат.ИсходныеКонфигурации = ПоместитьВоВременноеХранилище(Результат.ИсходныеКонфигурации, ИдентификаторФормы);
Возврат Результат;
КонецФункции
&НаКлиенте
Процедура ПерейтиКУстановкеИсправлений()
ОписаниеОповещения = Новый ОписаниеОповещения("ПродолжитьУстановкуИсправлений", ЭтотОбъект);
ПараметрыЗагрузки = ФайловаяСистемаКлиент.ПараметрыЗагрузкиФайла();
ПараметрыЗагрузки.ИдентификаторФормы = УникальныйИдентификатор;
ПараметрыЗагрузки.Интерактивно = Ложь;
ЗагружаемыеФайлы = ОбщегоНазначенияКлиент.СкопироватьРекурсивно(ФайлыИсправлений);
ФайловаяСистемаКлиент.ЗагрузитьФайлы(ОписаниеОповещения, ПараметрыЗагрузки, ЗагружаемыеФайлы);
КонецПроцедуры
&НаКлиенте
Процедура ПродолжитьУстановкуИсправлений(ПомещенныеФайлы, ДополнительныеПараметры) Экспорт
УстановитьИсправленияНаСервере(ПомещенныеФайлы);
Элементы.СтраницыПомощника.ТекущаяСтраница = Элементы.ПослеУстановкиИсправлений;
Элементы.КнопкаДалее.Заголовок = НСтр("ru = 'Готово'");
Элементы.КнопкаЗакрыть.Заголовок = НСтр("ru = 'Закрыть'");
КонецПроцедуры
&НаСервере
Процедура УстановитьИсправленияНаСервере(ПомещенныеФайлы)
СоединенияИнфо = СоединенияИБВызовСервера.ИнформацияОСоединениях(Ложь);
Элементы.ДекорацияАктивныеПользователи.Видимость = СоединенияИнфо.НаличиеАктивныхСоединений;
Исправления = Новый Структура;
Исправления.Вставить("Установить", ПомещенныеФайлы);
ПараметрыУстановкиИсправлений = ОбновлениеКонфигурации.ПараметрыУстановкиИсправлений();
ПараметрыУстановкиИсправлений.ВФоне = Ложь;
ПараметрыУстановкиИсправлений.ОбновитьПараметрыРаботыРасширений = Истина;
ПараметрыУстановкиИсправлений.ПроверятьПрименимостьПоМанифесту = Истина;
Результат = ОбновлениеКонфигурации.УстановкаИУдалениеИсправлений(Исправления, ПараметрыУстановкиИсправлений);
ЕстьОшибки = (Результат.НеУстановлено <> 0);
УстановленоИсправлений = Результат.Установленные.Количество();
Элементы.ОшибкаУстановкиИсправлений.Видимость = ЕстьОшибки;
Элементы.ПанельПредупреждений.Видимость = Ложь;
Элементы.ПанельИнформации.Видимость = Ложь;
Если ЕстьОшибки Тогда
Если УстановленоИсправлений > 0 Тогда
ТекстНадписи = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'Установлено исправлений: %1 из %2, изменения вступят в силу после перезапуска приложения'"),
УстановленоИсправлений,
ПомещенныеФайлы.Количество());
Элементы.ДекорацияУстановленоИсправлений.Заголовок = ТекстНадписи;
Элементы.ДекорацияИсправленияУстановлены.Видимость = Ложь;
Иначе
Элементы.ИсправленияУстановлены.Видимость = Ложь;
Элементы.ДекорацияУстановленоИсправлений.Видимость = Ложь;
Возврат;
КонецЕсли;
Иначе
Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.ЦентрМониторинга") Тогда
ИмяОперации = "СтандартныеПодсистемы.ОбновлениеКонфигурации.Патчи.РучнаяУстановкаПатча";
МодульЦентрМониторинга = ОбщегоНазначения.ОбщийМодуль("ЦентрМониторинга");
МодульЦентрМониторинга.ЗаписатьОперациюБизнесСтатистики(ИмяОперации, 1);
КонецЕсли;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ПерейтиКВыборуРежимаОбновления(ЭтоПереходДалее = Ложь)
Если ПараметрыАдминистрирования = Неопределено Тогда
ОписаниеОповещения = Новый ОписаниеОповещения("ПослеПолученияПараметровАдминистрирования", ЭтотОбъект, ЭтоПереходДалее);
ЗаголовокФормы = НСтр("ru = 'Установка обновления'");
Если ЭтоФайловаяБаза Тогда
ПоясняющаяНадпись = НСтр("ru = 'Для установки обновления введите
|параметры администрирования информационной базы'");
ЗапрашиватьПараметрыАдминистрированияКластера = Ложь;
Иначе
ПоясняющаяНадпись = НСтр("ru = 'Для установки обновления введите параметры
|администрирования кластера серверов и информационной базы'");
ЗапрашиватьПараметрыАдминистрированияКластера = Истина;
КонецЕсли;
СоединенияИБКлиент.ПоказатьПараметрыАдминистрирования(ОписаниеОповещения, Истина, ЗапрашиватьПараметрыАдминистрированияКластера,
ПараметрыАдминистрирования, ЗаголовокФормы, ПоясняющаяНадпись);
Иначе
ПослеПолученияПараметровАдминистрирования(ПараметрыАдминистрирования, ЭтоПереходДалее);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ПриПроверкеЛегальностиПолученияОбновления()
Если НуженФайлОбновления = 1 Тогда
Если ОбщегоНазначенияКлиент.ПодсистемаСуществует("СтандартныеПодсистемы.ПроверкаЛегальностиПолученияОбновления") Тогда
Оповещение = Новый ОписаниеОповещения("ПриПроверкеЛегальностиПолученияОбновленияЗавершение", ЭтотОбъект);
МодульПроверкаЛегальностиПолученияОбновленияКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("ПроверкаЛегальностиПолученияОбновленияКлиент");
МодульПроверкаЛегальностиПолученияОбновленияКлиент.ПоказатьПроверкуЛегальностиПолученияОбновления(Оповещение);
Возврат;
КонецЕсли;
КонецЕсли;
ПриПроверкеЛегальностиПолученияОбновленияЗавершение(Истина, Неопределено);
КонецПроцедуры
&НаКлиенте
Процедура ПриПроверкеЛегальностиПолученияОбновленияЗавершение(ОбновлениеПолученоЛегально, ДополнительныеПараметры) Экспорт
Если ОбновлениеПолученоЛегально = Истина Тогда
ПерейтиКВыборуРежимаОбновления(Истина);
Иначе
ОтработатьНажатиеКнопкиНазад();
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ПослеПолученияПараметровАдминистрирования(Результат, ЭтоПереходДалее) Экспорт
Если ЭтоПереходДалее Тогда
Элементы.СтраницыПомощника.ТекущаяСтраница.Доступность = Истина;
КонецЕсли;
Если Результат <> Неопределено Тогда
ПараметрыАдминистрирования = Результат;
Страницы = Элементы.СтраницыПомощника.ПодчиненныеЭлементы;
НоваяТекущаяСтраница = ?(ЭтоФайловаяБаза, Страницы.ВыборРежимаОбновленияФайл, Страницы.ВыборРежимаОбновленияСервер);
УстановитьПарольАдминистратора(ПараметрыАдминистрирования);
ПередОткрытиемСтраницы(НоваяТекущаяСтраница);
Элементы.СтраницыПомощника.ТекущаяСтраница = НоваяТекущаяСтраница;
Иначе
ТекстПредупреждения = НСтр("ru = 'Для установки обновления введите параметры администрирования.'");
ПоказатьПредупреждение(, ТекстПредупреждения);
ТекстСообщения = НСтр("ru = 'Не удалось установить обновление приложения, т.к. введены неправильные имя или пароль администратора
|(или другие параметры администрирования клиент-серверной информационной базы).'");
ЖурналРегистрацииКлиент.ДобавитьСообщениеДляЖурналаРегистрации(ОбновлениеКонфигурацииКлиент.СобытиеЖурналаРегистрации(), "Ошибка", ТекстСообщения);
КонецЕсли;
ЖурналРегистрацииКлиент.ЗаписатьСобытияВЖурналРегистрации();
КонецПроцедуры
&НаКлиенте
Процедура ПоказатьАктивныхПользователей()
ПараметрыФормы = Новый Структура;
ПараметрыФормы.Вставить("ОповещатьОЗакрытии", Истина);
СтандартныеПодсистемыКлиент.ОткрытьСписокАктивныхПользователей(ПараметрыФормы, ЭтотОбъект);
КонецПроцедуры
&НаСервере
Функция ПараметрыСтраницыВыборРежимаОбновленияСервер(СообщенияДляЖурналаРегистрации)
ПараметрыСтраницы = Новый Структура;
ПараметрыСтраницы.Вставить("ИнформацияОСоединениях", СоединенияИБ.ИнформацияОСоединениях(Ложь, СообщенияДляЖурналаРегистрации));
Возврат ПараметрыСтраницы;
КонецФункции
#Область ПланированиеОбновленияВУказанноеВремя
&НаКлиенте
Функция КаталогФайлаОбновления(Знач ПутьКФайлу)
ПозицияСимвола = СтрНайти(ПутьКФайлу, ПолучитьРазделительПути(), НаправлениеПоиска.СКонца);
Если ПозицияСимвола > 1 Тогда
Возврат Сред(ПутьКФайлу, 1, ПозицияСимвола - 1);
Иначе
Возврат "";
КонецЕсли;
КонецФункции
&НаСервере
Процедура ВосстановитьНастройкиОбновленияКонфигурации()
Настройки = ОбновлениеКонфигурации.НастройкиОбновленияКонфигурации();
ЗаполнитьЗначенияСвойств(Объект, Настройки);
ФайлыИсправленийСтрокой = СтрСоединить(Настройки.ФайлыИсправлений, ",");
Если ЗначениеЗаполнено(ФайлыИсправленийСтрокой) Тогда
ВыбранныеФайлы = Настройки.ИмяФайлаОбновления + "," + ФайлыИсправленийСтрокой;
Иначе
ВыбранныеФайлы = Настройки.ИмяФайлаОбновления;
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура УстановитьПарольАдминистратора(ПараметрыАдминистрирования)
АдминистраторИБ = ПользователиИнформационнойБазы.НайтиПоИмени(ПараметрыАдминистрирования.ИмяАдминистратораИнформационнойБазы);
Если Не АдминистраторИБ.АутентификацияСтандартная Тогда
АдминистраторИБ.АутентификацияСтандартная = Истина;
АдминистраторИБ.Пароль = ПараметрыАдминистрирования.ПарольАдминистратораИнформационнойБазы;
АдминистраторИБ.Записать();
КонецЕсли;
КонецПроцедуры
&НаСервере
Функция ЗагрузитьРасширенияИзменяющиеСтруктуруДанных()
Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.ОбменДанными") Тогда
МодульОбменДаннымиСлужебный = ОбщегоНазначения.ОбщийМодуль("ОбменДаннымиСлужебный");
Возврат МодульОбменДаннымиСлужебный.ЗагрузитьРасширенияИзменяющиеСтруктуруДанных();
Иначе
Возврат Ложь;
КонецЕсли;
КонецФункции
&НаКлиенте
Процедура ПослеВыбораИнтервалаУведомленияПользователей(Результат, ДополнительныеПараметры) Экспорт
Если Результат = Неопределено Тогда
Возврат;
КонецЕсли;
ШаблонЗаголовка = НСтр("ru = 'Уведомлять пользователей о планируемом обновлении за <a href=""Ссылка"">%1 минут</a>'");
Элементы.ДекорацияУведомлятьПользователей.Заголовок = СтроковыеФункцииКлиент.ФорматированнаяСтрока(ШаблонЗаголовка, Результат.Значение);
#Если Не ВебКлиент Тогда
ИнтервалУведомления = XMLЗначение(Тип("Число"), Результат.Значение);
#КонецЕсли
КонецПроцедуры
#КонецОбласти
#КонецОбласти