#Область ОписаниеПеременных
&НаКлиенте
Перем ПрограммноеЗакрытие;
&НаКлиенте
Перем КонтекстЭДОКлиент;
&НаКлиенте
Перем ОбщееОжидание;
&НаКлиенте
Перем КодЯзыка;
#КонецОбласти
#Область ОбработчикиСобытийФормы
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
УчетнаяЗаписьДокументообора = Параметры.УчетнаяЗаписьДокументооборота;
Если НЕ ЗначениеЗаполнено(УчетнаяЗаписьДокументообора)
ИЛИ НЕ КриптографияЭДКО.ИспользованиеОблачнойПодписиВозможно() Тогда
Отказ = Истина;
Иначе
ДанныеУчетнойЗаписи = ЭлектроннаяПодписьВМоделиСервисаБРОВызовСервера.РеквизитыУчетнойЗаписи(УчетнаяЗаписьДокументообора);
УчетнаяЗаписьОблачнойПодписи = ДанныеУчетнойЗаписи.УчетнаяЗаписьОблачнойПодписи;
КонецЕсли;
КартинкаФормы = Новый Картинка;
МодульСервисКриптографииDSS = ОбщегоНазначения.ОбщийМодуль("СервисКриптографииDSS");
КартинкаФормы = МодульСервисКриптографииDSS.ПолучитьКартинкуПодсистемы("ДиалогВосклицание");
Элементы.ДекорацияВнимание.Картинка = КартинкаФормы;
Если НЕ ЗначениеЗаполнено(УчетнаяЗаписьОблачнойПодписи) Тогда
Отказ = Истина;
Иначе
МодульСервисКриптографииDSSСлужебный = ОбщегоНазначения.ОбщийМодуль("СервисКриптографииDSSСлужебный");
МодульСервисКриптографииDSSКлиентСервер = ОбщегоНазначения.ОбщийМодуль("СервисКриптографииDSSКлиентСервер");
НастройкиПользователя = МодульСервисКриптографииDSSСлужебный.ПолучитьНастройкиПользователя(УчетнаяЗаписьОблачнойПодписи);
НастроеноПодтверждение = МодульСервисКриптографииDSSКлиентСервер.СвойствоВыполняемойОперации(НастройкиПользователя, "ПодписьДокумента").Подтверждать
ИЛИ МодульСервисКриптографииDSSКлиентСервер.СвойствоВыполняемойОперации(НастройкиПользователя, "ПодписьПакета").Подтверждать;
КонецЕсли;
Если НЕ Отказ Тогда
ВнешнийМодуль = ДокументооборотСКО.ПолучитьОбработкуЭДО();
ТекущиеНастройки = ВнешнийМодуль.ПолучитьПараметрыПодтвержденияОблачнойПодписи(УчетнаяЗаписьДокументообора, Истина);
КонецЕсли;
ЕстьДоступ = Ложь;
Если ЕстьДоступ Тогда
КлючСохраненияПоложенияОкна = "НастройкиОпераций_ПолныйДоступ";
Иначе
КлючСохраненияПоложенияОкна = "НастройкиОпераций";
КонецЕсли;
УстановитьВидимостьЭлементов();
КонецПроцедуры
&НаКлиенте
Процедура ПриОткрытии(Отказ)
ПрограммноеЗакрытие = Ложь;
ОбщееОжидание = Истина;
КодЯзыка = ОбщегоНазначенияКлиент.КодОсновногоЯзыка();
ОписаниеОповещения = Новый ОписаниеОповещения("ПриОткрытии_ПослеПолученияКонтекста", ЭтотОбъект);
ДокументооборотСКОКлиент.ПолучитьКонтекстЭДО(ОписаниеОповещения);
УправлениеФормой();
КонецПроцедуры
&НаКлиенте
Процедура ПередЗакрытием(Отказ, ЗавершениеРаботы, ТекстПредупреждения, СтандартнаяОбработка)
Если НЕ ПрограммноеЗакрытие Тогда
Отказ = Истина;
ЗакрытьФорму(Ложь);
КонецЕсли;
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиСобытийЭлементовШапкиФормы
&НаКлиенте
Процедура РежимПодтвержденияПриИзменении(Элемент)
Модифицированность = Истина;
УправлениеФормой();
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиСобытийЭлементовТаблицыФормыСписокОпераций
&НаКлиенте
Процедура СписокОперацийПриИзменении(Элемент)
Модифицированность = Истина;
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиКомандФормы
&НаКлиенте
Процедура ОК(Команда)
Если Модифицированность Тогда
ПодтвердитьИзменения();
Иначе
ЗакрытьФорму(Истина);
КонецЕсли;
КонецПроцедуры
#КонецОбласти
#Область СлужебныеПроцедурыИФункции
&НаКлиенте
Процедура ПриОткрытии_ПослеПолученияКонтекста(Результат, ДополнительныеПараметры) Экспорт
ОбщееОжидание = Ложь;
КонтекстЭДОКлиент = Результат.КонтекстЭДО;
РежимПодтверждения = ТекущиеНастройки.РежимПодтверждения;
ВсеПредставления = ПредставлениеОперации();
Для Каждого СтрокаКлюча Из ТекущиеНастройки.СписокОпераций Цикл
ЗначениеПредставления = ВсеПредставления[СтрокаКлюча.Ключ];
НоваяСтрока = СписокОпераций.Добавить();
НоваяСтрока.Пометка = СтрокаКлюча.Значение;
НоваяСтрока.ВидОперации = СтрокаКлюча.Ключ;
Если ЗначениеПредставления <> Неопределено Тогда
НоваяСтрока.ПредставлениеОперации = ЗначениеПредставления.Представление;
НоваяСтрока.Порядок = ЗначениеПредставления.Порядок;
Иначе
НоваяСтрока.ПредставлениеОперации = СокрЛП(СтрокаКлюча.Ключ);
НоваяСтрока.Порядок = 1;
КонецЕсли;
КонецЦикла;
СписокОпераций.Сортировать("Порядок");
УправлениеФормой();
КонецПроцедуры
&НаКлиенте
Процедура ДобавитьПредставление(СписокПредставлений, ЗначениеКлюча, Представление, Порядок = 0)
НоваяСтрока = Новый Структура;
НоваяСтрока.Вставить("Представление", Представление);
НоваяСтрока.Вставить("Порядок", Порядок);
СписокПредставлений.Вставить(ЗначениеКлюча, НоваяСтрока);
КонецПроцедуры
&НаКлиенте
Функция ПредставлениеОперации()
Результат = Новый Соответствие;
ДобавитьПредставление(Результат, "ЗагрузкаЭЛН", НСтр("ru = 'Загрузка реестра ЭЛН'", КодЯзыка), 10);
ДобавитьПредставление(Результат, "ОперацииСЭЛН", НСтр("ru = 'Выгрузка реестра ЭЛН'", КодЯзыка), 11);
ДобавитьПредставление(Результат, "ПодтверждениеВидаДеятельности", НСтр("ru = 'Подтверждение вида деятельности'", КодЯзыка), 12);
ДобавитьПредставление(Результат, "ЗаявлениеНаПодключение", НСтр("ru = 'Заявление на подключение к 1С-Отчетности'", КодЯзыка), 13);
ДобавитьПредставление(Результат, "ЗаявлениеНаПодключениеСканы", НСтр("ru = 'Заявление на подключение к 1С-Отчетности (сканы)'", КодЯзыка), 14);
ДобавитьПредставление(Результат, "ОписьИсходящихДокументовВФНС", НСтр("ru = 'Опись исходящих документов в ФНС'", КодЯзыка), 15);
ДобавитьПредставление(Результат, "ЖурналСчетовФактурВФНС", НСтр("ru = 'Журнал счетов-фактур в ФНС'", КодЯзыка), 16);
ДобавитьПредставление(Результат, "ПакетДляОтправкиВФСС", НСтр("ru = 'Отправка в ФСС'", КодЯзыка), 17);
ДобавитьПредставление(Результат, "ПакетДляОтправкиВФСРАР", НСтр("ru = 'Отправка в фСРАР'", КодЯзыка), 18);
ДобавитьПредставление(Результат, "ПакетДляОтправкиВРПН", НСтр("ru = 'Отправка в РПН'", КодЯзыка), 19);
ДобавитьПредставление(Результат, "ОтветНаТребованиеПоясненийКДекларацииНДС", НСтр("ru = 'Пояснение к декларации НДС'", КодЯзыка), 21);
ДобавитьПредставление(Результат, "ОтправкаВФТС", НСтр("ru = 'Отправка в ФТС'", КодЯзыка), 22);
ДобавитьПредставление(Результат, "ПакетСОС", НСтр("ru = 'Отправка в СОС'", КодЯзыка), 23);
ДобавитьПредставление(Результат, "ЗаявлениеВПФР", НСтр("ru = 'Заявление на подключение ЭДО ПФР (служебное)'", КодЯзыка), 99);
ДобавитьПредставление(Результат, "СформироватьПакетФНС", НСтр("ru = 'Пакет ФНС (служебное)'", КодЯзыка), 99);
ДобавитьПредставление(Результат, "СформироватьПакетПФР", НСтр("ru = 'Пакет ПФР (служебное)'", КодЯзыка), 99);
ДобавитьПредставление(Результат, "СформироватьПакетФСГС", НСтр("ru = 'Пакет ФСГС (служебное)'", КодЯзыка), 99);
ДобавитьПредставление(Результат, "СформироватьПакетСОС", НСтр("ru = 'Пакет СОС (служебное)'", КодЯзыка), 99);
ДобавитьПредставление(Результат, "ПакетДляОтправкиВФСРАРЗавершение", НСтр("ru = 'Пакет ФСРАР (служебное)'", КодЯзыка), 99);
Возврат Результат;
КонецФункции
&НаКлиенте
Процедура ПодтвердитьИзменения()
ТребуетПодтверждения = Ложь;
СпискиРавны = Истина;
Для Каждого СтрокаТаблицы Из СписокОпераций Цикл
ЗначениеКлюча = ТекущиеНастройки.СписокОпераций[СтрокаТаблицы.ВидОперации];
Если ЗначениеКлюча <> СтрокаТаблицы.Пометка Тогда
СпискиРавны = Ложь;
Прервать;
КонецЕсли;
КонецЦикла;
Если ТекущиеНастройки.РежимПодтверждения <> РежимПодтверждения
ИЛИ (РежимПодтверждения = 4 И НЕ СпискиРавны) Тогда
ТребуетПодтверждения = РежимПодтверждения = 4 ИЛИ РежимПодтверждения = 2;
КонецЕсли;
Если ТребуетПодтверждения Тогда
ОповещениеСледующее = Новый ОписаниеОповещения("ПослеПодтвержденияИзменений", ЭтотОбъект);
МодульСервисКриптографииDSSКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("СервисКриптографииDSSКлиент");
МодульСервисКриптографииDSSКлиент.ПодтверждениеПроизвольнойОперации(
ОповещениеСледующее,
УчетнаяЗаписьОблачнойПодписи,
НСтр("ru = 'Необходимо подтвердить изменение настроек.'"));
Иначе
СохранитьНастройки();
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ПослеПодтвержденияИзменений(РезультатВыполнения, ДополнительныеПараметры) Экспорт
Если РезультатВыполнения.Выполнено Тогда
СохранитьНастройки();
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура УправлениеФормой()
ЭтаФорма.ТолькоПросмотр = ОбщееОжидание;
Элементы.ГруппаПотверждениеОтключить.Видимость = ЕстьДоступ;
Элементы.ГруппаПодтверждениеВыборочно.Видимость = ЕстьДоступ;
Элементы.СписокОпераций.Доступность = РежимПодтверждения = 4;
Элементы.ГруппаВнимание.Видимость = НастроеноПодтверждение;
КонецПроцедуры
&НаКлиенте
Процедура СохранитьНастройки()
НовыйСписок = Новый Соответствие;
Для Каждого СтрокаТаблицы Из СписокОпераций Цикл
НовыйСписок.Вставить(СтрокаТаблицы.ВидОперации, СтрокаТаблицы.Пометка);
КонецЦикла;
ТекущиеНастройки.РежимПодтверждения = РежимПодтверждения;
ТекущиеНастройки.СписокОпераций = НовыйСписок;
КонтекстЭДОКлиент.ЗаписатьПараметрыПодвержденияОблачнойПодписи(УчетнаяЗаписьДокументообора, ТекущиеНастройки);
ЗакрытьФорму(Истина);
КонецПроцедуры
&НаКлиенте
Процедура ЗакрытьФорму(Результат = Ложь)
ПрограммноеЗакрытие = Истина;
Закрыть(Результат);
КонецПроцедуры
&НаСервере
Процедура УстановитьВидимостьЭлементов()
Элементы.ГруппаПотверждениеОтключить.Видимость = ЕстьДоступ;
Элементы.ГруппаПодтверждениеВыборочно.Видимость = ЕстьДоступ;
Элементы.ГруппаВнимание.Видимость = НастроеноПодтверждение И Элементы.ДекорацияВнимание.Картинка.Вид <> ВидКартинки.Пустая;
КонецПроцедуры
#КонецОбласти