#Область ОбработчикиСобытийФормы
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
Если Не Параметры.ПрограммноеОткрытие Тогда
ВызватьИсключение
НСтр("ru = 'Обработка не предназначена для непосредственного использования.'");
КонецЕсли;
ПропуститьПерезапуск = Параметры.ПропуститьПерезапуск;
ТекстПредупреждения = ТекстИзМакетаУсловияРаспространенияОбновлений();
ИнформационнаяБазаФайловая = ОбщегоНазначения.ИнформационнаяБазаФайловая();
ЦентрМониторингаСуществует = ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.ЦентрМониторинга");
Если ЦентрМониторингаСуществует Тогда
МодульЦентрМониторингаСлужебный = ОбщегоНазначения.ОбщийМодуль("ЦентрМониторингаСлужебный");
ПараметрыЦентраМониторинга = МодульЦентрМониторингаСлужебный.ПолучитьПараметрыЦентраМониторингаВнешнийВызов();
Если (НЕ ПараметрыЦентраМониторинга.ВключитьЦентрМониторинга И НЕ ПараметрыЦентраМониторинга.ЦентрОбработкиИнформацииОПрограмме) Тогда
РазрешитьОтправкуСтатистики = Истина;
Элементы.ГруппаОтправкаСтатистики.Видимость = Истина;
Иначе
РазрешитьОтправкуСтатистики = Истина;
Элементы.ГруппаОтправкаСтатистики.Видимость = Ложь;
КонецЕсли;
Иначе
Элементы.ГруппаОтправкаСтатистики.Видимость = Ложь;
КонецЕсли;
Если ОбщегоНазначения.ЭтоМобильныйКлиент() Тогда
ПоложениеКоманднойПанели = ПоложениеКоманднойПанелиФормы.Верх;
Элементы.ФормаПродолжить.Отображение = ОтображениеКнопки.Картинка;
КонецЕсли;
ТекущийЭлемент = Элементы.ПодтверждениеБулево;
КонецПроцедуры
&НаСервереБезКонтекста
Функция ТекстИзМакетаУсловияРаспространенияОбновлений()
КодТекущегоЯзыка = ?(ТипЗнч(ТекущийЯзык()) = Тип("Строка"), ТекущийЯзык(), ТекущийЯзык().КодЯзыка);
ИмяМакета = "УсловияРаспространенияОбновлений";
ИнформационныйМакет = Неопределено;
Если Метаданные.Языки.Количество() > 0 Тогда
ИнформационныйМакет = Метаданные.Обработки.ЛегальностьПолученияОбновлений.Макеты.Найти(
СтрШаблон("%1_%2", ИмяМакета, КодТекущегоЯзыка));
КонецЕсли;
Если ИнформационныйМакет = Неопределено Тогда
ИнформационныйМакет = Метаданные.Обработки.ЛегальностьПолученияОбновлений.Макеты.Найти(ИмяМакета);
КонецЕсли;
Если ИнформационныйМакет = Неопределено Тогда
ИнформационныйМакет = Метаданные.Обработки.ЛегальностьПолученияОбновлений.Макеты.Найти(
СтрШаблон("%1_%2", ИмяМакета, ОбщегоНазначения.КодОсновногоЯзыка()));
КонецЕсли;
Если ИнформационныйМакет = Неопределено Тогда
ТекстОшибки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'В обработке %1 отсутствует макет %2. Требуется добавить его в конфигурацию.'"),
Метаданные.Обработки.ЛегальностьПолученияОбновлений.Имя, ИмяМакета);
ВызватьИсключение(ТекстОшибки, КатегорияОшибки.ОшибкаКонфигурации);
КонецЕсли;
МакетДокумента = Обработки.ЛегальностьПолученияОбновлений.ПолучитьМакет(
ИнформационныйМакет.Имя);
Возврат МакетДокумента.ПолучитьТекст();
КонецФункции
&НаКлиенте
Процедура ПриОткрытии(Отказ)
ВключениеПатчей = СтрНайти(ПараметрЗапуска, "ВключитьИсправленияИЗавершитьРаботу") > 0;
ОбновлениеСЗавершением = СтрНайти(ПараметрЗапуска, "ВыполнитьОбновлениеИЗавершитьРаботу") > 0;
Если ИнформационнаяБазаФайловая
И (ВключениеПатчей Или ОбновлениеСЗавершением) Тогда
Если ОбновлениеСЗавершением Тогда
ЗаписатьПодтверждениеЛегальностиПолученияОбновлений();
КонецЕсли;
Отказ = Истина;
СтандартныеПодсистемыКлиент.УстановитьХранениеФормы(ЭтотОбъект, Истина);
ПодключитьОбработчикОжидания("ПодтвердитьЛегальностьПолученияОбновления", 0.1, Истина);
КонецЕсли;
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиКомандФормы
&НаКлиенте
Процедура ОсновныеДействияФормыПродолжить(Команда)
Результат = ПодтверждениеБулево;
Если Результат <> Истина Тогда
Если Параметры.ПоказыватьПредупреждениеОПерезапуске И НЕ ПропуститьПерезапуск Тогда
ПрекратитьРаботуСистемы();
КонецЕсли;
Иначе
ЗаписатьПодтверждениеЛегальностиИОтправкиСтатистики(РазрешитьОтправкуСтатистики);
КонецЕсли;
Закрыть(Результат);
КонецПроцедуры
&НаКлиенте
Процедура ПриЗакрытии(ЗавершениеРаботы)
Если ЗавершениеРаботы Тогда
Возврат;
ИначеЕсли Результат <> Истина Тогда
Если Параметры.ПоказыватьПредупреждениеОПерезапуске И НЕ ПропуститьПерезапуск Тогда
ПрекратитьРаботуСистемы();
КонецЕсли;
КонецЕсли;
Оповестить("ЛегальностьПолученияОбновлений", Результат);
КонецПроцедуры
#КонецОбласти
#Область СлужебныеПроцедурыИФункции
&НаКлиенте
Процедура ПодтвердитьЛегальностьПолученияОбновления()
СтандартныеПодсистемыКлиент.УстановитьХранениеФормы(ЭтотОбъект, Ложь);
ВыполнитьОбработкуОповещения(ОписаниеОповещенияОЗакрытии, Истина);
КонецПроцедуры
&НаСервереБезКонтекста
Процедура ЗаписатьПодтверждениеЛегальностиИОтправкиСтатистики(РазрешитьОтправкуСтатистики)
ЗаписатьПодтверждениеЛегальностиПолученияОбновлений();
УстановитьПривилегированныйРежим(Истина);
ЦентрМониторингаСуществует = ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.ЦентрМониторинга");
Если ЦентрМониторингаСуществует Тогда
МодульЦентрМониторингаСлужебный = ОбщегоНазначения.ОбщийМодуль("ЦентрМониторингаСлужебный");
ПараметрыОтправкиСтатистики = Новый Структура("ВключитьЦентрМониторинга, ЦентрОбработкиИнформацииОПрограмме", Неопределено, Неопределено);
ПараметрыОтправкиСтатистики = МодульЦентрМониторингаСлужебный.ПолучитьПараметрыЦентраМониторингаВнешнийВызов(ПараметрыОтправкиСтатистики);
Если (НЕ ПараметрыОтправкиСтатистики.ВключитьЦентрМониторинга И ПараметрыОтправкиСтатистики.ЦентрОбработкиИнформацииОПрограмме) Тогда
Иначе
Если РазрешитьОтправкуСтатистики Тогда
МодульЦентрМониторингаСлужебный.УстановитьПараметрЦентраМониторингаВнешнийВызов("ВключитьЦентрМониторинга", РазрешитьОтправкуСтатистики);
МодульЦентрМониторингаСлужебный.УстановитьПараметрЦентраМониторингаВнешнийВызов("ЦентрОбработкиИнформацииОПрограмме", Ложь);
РегЗадание = МодульЦентрМониторингаСлужебный.ПолучитьРегламентноеЗаданиеВнешнийВызов("СборИОтправкаСтатистики", Истина);
МодульЦентрМониторингаСлужебный.УстановитьРасписаниеПоУмолчаниюВнешнийВызов(РегЗадание);
Иначе
МодульЦентрМониторингаСлужебный.УстановитьПараметрЦентраМониторингаВнешнийВызов("ВключитьЦентрМониторинга", РазрешитьОтправкуСтатистики);
МодульЦентрМониторингаСлужебный.УстановитьПараметрЦентраМониторингаВнешнийВызов("ЦентрОбработкиИнформацииОПрограмме", Ложь);
МодульЦентрМониторингаСлужебный.УдалитьРегламентноеЗаданиеВнешнийВызов("СборИОтправкаСтатистики");
КонецЕсли;
КонецЕсли;
КонецЕсли;
КонецПроцедуры
&НаСервереБезКонтекста
Процедура ЗаписатьПодтверждениеЛегальностиПолученияОбновлений()
УстановитьПривилегированныйРежим(Истина);
ОбновлениеИнформационнойБазыСлужебный.ЗаписатьПодтверждениеЛегальностиПолученияОбновлений();
КонецПроцедуры
#КонецОбласти