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