1449 lines
93 KiB
Plaintext
1449 lines
93 KiB
Plaintext
///////////////////////////////////////////////////////////////////////////////////////////////////////
|
||
// Copyright (c) 2022, ООО 1С-Софт
|
||
// Все права защищены. Эта программа и сопроводительные материалы предоставляются
|
||
// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0)
|
||
// Текст лицензии доступен по ссылке:
|
||
// https://creativecommons.org/licenses/by/4.0/legalcode
|
||
///////////////////////////////////////////////////////////////////////////////////////////////////////
|
||
|
||
#Область ОписаниеПеременных
|
||
|
||
&НаКлиенте
|
||
Перем ПроверкаПрограммВыполнялась;
|
||
|
||
#КонецОбласти
|
||
|
||
#Область ОбработчикиСобытийФормы
|
||
|
||
&НаСервере
|
||
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
|
||
|
||
УстановитьУсловноеОформление();
|
||
ЭлектроннаяПодписьСлужебный.УстановитьУсловноеОформлениеСпискаСертификатов(Сертификаты, Истина);
|
||
|
||
НавигационнаяСсылка = "e1cib/app/ОбщаяФорма.НастройкиЭлектроннойПодписиИШифрования";
|
||
|
||
Если Не ПравоДоступа("СохранениеДанныхПользователя", Метаданные) Тогда
|
||
Элементы.СтраницаНастройки.Видимость = Ложь;
|
||
БезПраваСохранениеДанныхПользователя = Истина;
|
||
КонецЕсли;
|
||
|
||
ЭтоПолноправныйПользователь = Пользователи.ЭтоПолноправныйПользователь();
|
||
|
||
Если Параметры.Свойство("ПоказатьСтраницуСертификаты") Тогда
|
||
Элементы.Страницы.ТекущаяСтраница = Элементы.СтраницаСертификаты;
|
||
|
||
ИначеЕсли Параметры.Свойство("ПоказатьСтраницуНастройки") Тогда
|
||
Элементы.Страницы.ТекущаяСтраница = Элементы.СтраницаНастройки;
|
||
|
||
ИначеЕсли Параметры.Свойство("ПоказатьСтраницуПрограммы") Тогда
|
||
Элементы.Страницы.ТекущаяСтраница = Элементы.СтраницаПрограммы;
|
||
КонецЕсли;
|
||
|
||
Если ОбщегоНазначения.РазделениеВключено() Тогда
|
||
УстановитьПроверкуПодписейНаСервере(Ложь);
|
||
Элементы.ПроверятьПодписиНаСервере.Видимость = Ложь;
|
||
Элементы.ПодписыватьНаСервере.Видимость = Ложь;
|
||
Иначе
|
||
ПроверятьПодписиНаСервере = Константы.ПроверятьЭлектронныеПодписиНаСервере.Получить();
|
||
ПодписыватьНаСервере = Константы.СоздаватьЭлектронныеПодписиНаСервере.Получить();
|
||
КонецЕсли;
|
||
|
||
Если ЗначениеЗаполнено(Параметры.СертификатыПоказать) Тогда
|
||
СертификатыПоказать = Параметры.СертификатыПоказать;
|
||
ИначеЕсли ЭтоПолноправныйПользователь Тогда
|
||
СертификатыПоказать = "ВсеСертификаты";
|
||
Иначе
|
||
СертификатыПоказать = "МоиСертификаты";
|
||
КонецЕсли;
|
||
|
||
Если Не ЭтоПолноправныйПользователь ИЛИ СертификатыПоказать <> "ВсеСертификаты" Тогда
|
||
ПользовательОтбор = Пользователи.ТекущийПользователь();
|
||
КонецЕсли;
|
||
|
||
// Страница Программы
|
||
Если Не ПравоДоступа("Изменение", Метаданные.Справочники.ПрограммыЭлектроннойПодписиИШифрования) Тогда
|
||
Элементы.Программы.ИзменятьСоставСтрок = Ложь;
|
||
|
||
ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(Элементы,
|
||
"ПрограммыДобавить", "Видимость", Ложь);
|
||
|
||
ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(Элементы,
|
||
"ПрограммыИзменить", "Видимость", Ложь);
|
||
|
||
Элементы.ПрограммыУстановитьПометкуУдаления.Видимость = Ложь;
|
||
|
||
ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(Элементы,
|
||
"ПрограммыКонтекстноеМенюДобавить", "Видимость", Ложь);
|
||
|
||
ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(Элементы,
|
||
"ПрограммыКонтекстноеМенюИзменить", "Видимость", Ложь);
|
||
|
||
Элементы.ПрограммыКонтекстноеМенюПрограммыУстановитьПометкуУдаления.Видимость = Ложь;
|
||
Элементы.ПроверятьПодписиНаСервере.Видимость = Ложь;
|
||
Элементы.ПодписыватьНаСервере.Видимость = Ложь;
|
||
Элементы.Программы.Заголовок =
|
||
НСтр("ru = 'Список программ, предусмотренных администратором, которые можно использовать на компьютере'");
|
||
КонецЕсли;
|
||
|
||
// Страница Сертификаты
|
||
|
||
ТекстЗапроса = Сертификаты.ТекстЗапроса;
|
||
ЗаявлениеНаВыпускСертификатаДоступно = ЭлектроннаяПодпись.ОбщиеНастройки().ЗаявлениеНаВыпускСертификатаДоступно;
|
||
Если ЗаявлениеНаВыпускСертификатаДоступно Тогда
|
||
МодульЗаявлениеНаВыпускНовогоКвалифицированногоСертификата = ОбщегоНазначения.ОбщийМодуль("Обработки.ЗаявлениеНаВыпускНовогоКвалифицированногоСертификата");
|
||
МодульЗаявлениеНаВыпускНовогоКвалифицированногоСертификата.ЗаполнитьСписокВыбораСостоянияЗаявления(Элементы.СертификатыПоказатьЗаявления.СписокВыбора);
|
||
МодульЗаявлениеНаВыпускНовогоКвалифицированногоСертификата.ДополнитьЗапросСостояниемВСпискеСертификатов(ТекстЗапроса);
|
||
МодульЗаявлениеНаВыпускНовогоКвалифицированногоСертификата.ДобавитьЛегенду(ЭтотОбъект, Элементы.ГруппаЛегенда);
|
||
Элементы.СертификатыПоказать.СписокВыбора.Добавить("МоиЗаявленияВРаботе", НСтр("ru = 'Мои заявления в работе'"));
|
||
|
||
Если Не ПравоДоступа("Добавление", Метаданные.Справочники.СертификатыКлючейЭлектроннойПодписиИШифрования) Тогда
|
||
ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(Элементы,
|
||
"СертификатыДобавить", "Видимость", Ложь);
|
||
ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(Элементы,
|
||
"ПеревыпуститьСертификат", "Видимость", Ложь);
|
||
КонецЕсли;
|
||
|
||
Иначе
|
||
ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "&ДополнительноеПоле", "НЕОПРЕДЕЛЕНО");
|
||
ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "И &ДополнительноеСоединение", "");
|
||
ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "&ЭтоЗаявление", "Ложь");
|
||
|
||
ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(Элементы,
|
||
"СертификатыСоздать", "Видимость", Истина);
|
||
|
||
ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(Элементы,
|
||
"СертификатыДобавить", "Видимость", Ложь);
|
||
ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(Элементы,
|
||
"ПеревыпуститьСертификат", "Видимость", Ложь);
|
||
Элементы.СертификатыПоказатьЗаявления.Видимость = Ложь;
|
||
Элементы.СертификатыСостояниеЗаявления.Видимость = Ложь;
|
||
КонецЕсли;
|
||
|
||
СвойстваСписка = ОбщегоНазначения.СтруктураСвойствДинамическогоСписка();
|
||
СвойстваСписка.ТекстЗапроса = ТекстЗапроса;
|
||
ОбщегоНазначения.УстановитьСвойстваДинамическогоСписка(Элементы.Сертификаты, СвойстваСписка);
|
||
|
||
СертификатыВЛичномХранилище = Новый СписокЗначений;
|
||
УстановитьПараметрыВСпискеСертификатовНаСервере();
|
||
СертификатыОбновитьОтбор(ЭтотОбъект);
|
||
|
||
Если ОбщегоНазначения.ЭтоПодчиненныйУзелРИБ() Тогда
|
||
// Состав и настройки предусмотренных программ нельзя изменять.
|
||
// Можно изменять только пути к программам на серверах Linux.
|
||
Элементы.Программы.ИзменятьСоставСтрок = Ложь;
|
||
Элементы.ПрограммыУстановитьПометкуУдаления.Доступность = Ложь;
|
||
Элементы.ПрограммыКонтекстноеМенюПрограммыУстановитьПометкуУдаления.Доступность = Ложь;
|
||
ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(Элементы,
|
||
"ПрограммыИзменить", "ТолькоВоВсехДействиях", Ложь);
|
||
Иначе
|
||
Элементы.НадписьНастройкаВЦентральномУзле.Видимость = Ложь;
|
||
КонецЕсли;
|
||
|
||
Если Не ЭлектроннаяПодписьСлужебный.ТребуетсяПутьКПрограмме(Истина) Тогда
|
||
Элементы.ГруппаПрограммыLinuxПутьКПрограмме.Видимость = Ложь;
|
||
КонецЕсли;
|
||
|
||
Элементы.ГруппаВебКлиентРасширениеНеУстановлено.Видимость = ОбщегоНазначения.ЭтоВебКлиент()
|
||
И Параметры.Свойство("РасширениеНеПодключено");
|
||
|
||
ЗаполнитьПрограммыИНастройки();
|
||
|
||
Если ЭлектроннаяПодписьСлужебный.ИспользоватьСервисОблачнойПодписи() Тогда
|
||
МодульСервисКриптографииDSS = ОбщегоНазначения.ОбщийМодуль("СервисКриптографииDSS");
|
||
Элементы.Программы.КартинкаСтрок = МодульСервисКриптографииDSS.ПолучитьКартинкуПодсистемы("ТипыСертификатов");
|
||
Элементы.Программы.ПутьКДаннымКартинкиСтроки = "Программы.ТипРазмещения";
|
||
КонецЕсли;
|
||
|
||
ОбновитьТекущуюВидимостьЭлементов();
|
||
|
||
КонецПроцедуры
|
||
|
||
&НаКлиенте
|
||
Процедура ПриОткрытии(Отказ)
|
||
|
||
ОпределитьУстановленныеПрограммы();
|
||
ПодключитьОбработчикОжидания("ДобавитьСертификатыВЛичномХранилищеВПараметрДинамическогоСписка", 0.1, Истина);
|
||
|
||
КонецПроцедуры
|
||
|
||
&НаКлиенте
|
||
Процедура ПриПовторномОткрытии()
|
||
|
||
ОпределитьУстановленныеПрограммы();
|
||
Если ЗначениеЗаполнено(Параметры.СертификатыПоказать) Тогда
|
||
СертификатыПоказать = Параметры.СертификатыПоказать;
|
||
СертификатыОбновитьОтбор(ЭтотОбъект);
|
||
КонецЕсли;
|
||
|
||
КонецПроцедуры
|
||
|
||
&НаКлиенте
|
||
Процедура ОбработкаОповещения(ИмяСобытия, Параметр, Источник)
|
||
|
||
Если ВРег(ИмяСобытия) = ВРег("Запись_СертификатыКлючейЭлектроннойПодписиИШифрования") Тогда
|
||
Если Параметр.Количество() = 0 Тогда
|
||
Элементы.Сертификаты.Обновить();
|
||
ИначеЕсли Параметр.Установлен Тогда
|
||
ПодключитьОбработчикОжидания("ОбновитьСписокСертификатов", 0.1, Истина);
|
||
ИначеЕсли Параметр.ЭтоНовый Тогда
|
||
Элементы.Сертификаты.Обновить();
|
||
Элементы.Сертификаты.ТекущаяСтрока = Источник;
|
||
КонецЕсли;
|
||
Возврат;
|
||
КонецЕсли;
|
||
|
||
// При изменении состава или настроек программ.
|
||
Если ВРег(ИмяСобытия) = ВРег("Запись_ПрограммыЭлектроннойПодписиИШифрования")
|
||
Или ВРег(ИмяСобытия) = ВРег("Запись_ПутиКПрограммамЭлектроннойПодписиИШифрованияНаСерверахLinux")
|
||
Или ВРег(ИмяСобытия) = ВРег("Запись_ЛичныеНастройкиЭлектроннойПодписиИШифрования") Тогда
|
||
|
||
ПодключитьОбработчикОжидания("ПриИзмененииСоставаИлиНастроекПрограмм", 0.1, Истина);
|
||
Возврат;
|
||
КонецЕсли;
|
||
|
||
Если ВРег(ИмяСобытия) = ВРег("Установка_РасширениеРаботыСКриптографией") Тогда
|
||
ОпределитьУстановленныеПрограммы();
|
||
Возврат;
|
||
КонецЕсли;
|
||
|
||
// При изменении настроек использования.
|
||
Если ВРег(ИмяСобытия) <> ВРег("Запись_НаборКонстант") Тогда
|
||
Возврат;
|
||
КонецЕсли;
|
||
|
||
Если ВРег(Источник) = ВРег("ИспользоватьЭлектронныеПодписи")
|
||
Или ВРег(Источник) = ВРег("ИспользоватьШифрование") Тогда
|
||
|
||
ПодключитьОбработчикОжидания("ПриИзмененияИспользованияПодписанияИлиШифрования", 0.1, Истина);
|
||
КонецЕсли;
|
||
|
||
КонецПроцедуры
|
||
|
||
#КонецОбласти
|
||
|
||
#Область ОбработчикиСобытийЭлементовШапкиФормы
|
||
|
||
&НаКлиенте
|
||
Процедура СтраницыПриСменеСтраницы(Элемент, ТекущаяСтраница)
|
||
|
||
Если ПроверкаПрограммВыполнялась <> Истина Тогда
|
||
ОпределитьУстановленныеПрограммы();
|
||
КонецЕсли;
|
||
|
||
КонецПроцедуры
|
||
|
||
&НаКлиенте
|
||
Процедура СертификатыПоказатьПриИзменении(Элемент)
|
||
|
||
СертификатыОбновитьОтбор(ЭтотОбъект, ПользователиКлиент.ТекущийПользователь());
|
||
|
||
КонецПроцедуры
|
||
|
||
&НаКлиенте
|
||
Процедура СертификатыПоказатьЗаявленияПриИзменении(Элемент)
|
||
|
||
СертификатыОбновитьОтбор(ЭтотОбъект);
|
||
|
||
КонецПроцедуры
|
||
|
||
&НаКлиенте
|
||
Процедура СертификатыТолькоДействующиеПриИзменении(Элемент)
|
||
|
||
СертификатыОбновитьОтбор(ЭтотОбъект);
|
||
|
||
КонецПроцедуры
|
||
|
||
&НаКлиенте
|
||
Процедура ПользовательОтборПриИзменении(Элемент)
|
||
|
||
СертификатыОбновитьОтбор(ЭтотОбъект);
|
||
|
||
КонецПроцедуры
|
||
|
||
&НаКлиенте
|
||
Процедура РасширениеДляЗашифрованныхФайловПриИзменении(Элемент)
|
||
|
||
Если ПустаяСтрока(РасширениеДляЗашифрованныхФайлов) Тогда
|
||
РасширениеДляЗашифрованныхФайлов = "p7m";
|
||
КонецЕсли;
|
||
|
||
СохранитьНастройки();
|
||
|
||
КонецПроцедуры
|
||
|
||
&НаКлиенте
|
||
Процедура РасширениеДляФайловПодписиПриИзменении(Элемент)
|
||
|
||
Если ПустаяСтрока(РасширениеДляФайловПодписи) Тогда
|
||
РасширениеДляФайловПодписи = "p7s";
|
||
КонецЕсли;
|
||
|
||
СохранитьНастройки();
|
||
|
||
КонецПроцедуры
|
||
|
||
&НаКлиенте
|
||
Процедура ДействияПриСохраненииДанныхСЭлектроннойПодписьюПриИзменении(Элемент)
|
||
|
||
СохранитьНастройки();
|
||
|
||
КонецПроцедуры
|
||
|
||
&НаКлиенте
|
||
Процедура ПроверятьПодписиНаСервереПриИзменении(Элемент)
|
||
|
||
УстановитьПроверкуПодписейНаСервере(ПроверятьПодписиНаСервере);
|
||
|
||
Оповестить("Запись_НаборКонстант", Новый Структура, "ПроверятьЭлектронныеПодписиНаСервере");
|
||
|
||
КонецПроцедуры
|
||
|
||
&НаКлиенте
|
||
Процедура ПодписыватьНаСервереПриИзменении(Элемент)
|
||
|
||
УстановитьПодписаниеНаСервере(ПодписыватьНаСервере);
|
||
|
||
Оповестить("Запись_НаборКонстант", Новый Структура, "СоздаватьЭлектронныеПодписиНаСервере");
|
||
|
||
КонецПроцедуры
|
||
|
||
&НаКлиенте
|
||
Процедура СохранятьСертификатВместеСПодписьюПриИзменении(Элемент)
|
||
СохранитьНастройки();
|
||
КонецПроцедуры
|
||
|
||
&НаКлиенте
|
||
Процедура ПрограммыLinuxПутьКПрограммеПриИзменении(Элемент)
|
||
|
||
ТекущиеДанные = Элементы.Программы.ТекущиеДанные;
|
||
Если ТекущиеДанные = Неопределено Тогда
|
||
Возврат;
|
||
КонецЕсли;
|
||
|
||
СохранитьПутьКПрограмме();
|
||
|
||
КонецПроцедуры
|
||
|
||
&НаКлиенте
|
||
Процедура ПрограммыLinuxПутьКПрограммеНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
|
||
|
||
ТекущиеДанные = Элементы.Программы.ТекущиеДанные;
|
||
Если ТекущиеДанные = Неопределено Тогда
|
||
ДанныеВыбора = Неопределено;
|
||
СтандартнаяОбработка = Ложь;
|
||
Возврат;
|
||
КонецЕсли;
|
||
|
||
Отбор = Новый Структура("Программа", ТекущиеДанные.Ссылка);
|
||
Строки = ПутиКПрограммамПоУмолчанию.НайтиСтроки(Отбор);
|
||
Если Строки.Количество() = 0 Тогда
|
||
ДанныеВыбора = Неопределено;
|
||
СтандартнаяОбработка = Ложь;
|
||
Возврат;
|
||
КонецЕсли;
|
||
|
||
КонецПроцедуры
|
||
|
||
&НаКлиенте
|
||
Процедура ПрограммыLinuxПутьКПрограммеОбработкаВыбора(Элемент, ВыбранноеЗначение, СтандартнаяОбработка)
|
||
|
||
СтандартнаяОбработка = Ложь;
|
||
|
||
ТекущиеДанные = Элементы.Программы.ТекущиеДанные;
|
||
Если Не ЗначениеЗаполнено(ВыбранноеЗначение)
|
||
Или ТекущиеДанные = Неопределено Тогда
|
||
|
||
Возврат;
|
||
КонецЕсли;
|
||
|
||
Отбор = Новый Структура("Программа", ТекущиеДанные.Ссылка);
|
||
Строки = ПутиКПрограммамПоУмолчанию.НайтиСтроки(Отбор);
|
||
ТекущиеДанные.LinuxПутьКПрограмме = ?(Строки.Количество() = 0, "", Строки[0].Путь);
|
||
|
||
СохранитьПутьКПрограмме();
|
||
|
||
КонецПроцедуры
|
||
|
||
#КонецОбласти
|
||
|
||
#Область ОбработчикиСобытийЭлементовТаблицыФормыСертификаты
|
||
|
||
&НаКлиенте
|
||
Процедура СертификатыПередНачаломДобавления(Элемент, Отказ, Копирование, Родитель, Группа, Параметр)
|
||
|
||
Отказ = Истина;
|
||
ПараметрыСоздания = Новый Структура;
|
||
|
||
Если Копирование И ЗаявлениеНаВыпускСертификатаДоступно Тогда
|
||
Если Элементы.Сертификаты.ТекущаяСтрока = Неопределено Тогда
|
||
Возврат;
|
||
КонецЕсли;
|
||
ТекущиеДанные = СертификатыТекущиеДанные(Элементы.Сертификаты);
|
||
ПараметрыСоздания.Вставить("СоздатьЗаявление", Истина);
|
||
ПараметрыСоздания.Вставить("СертификатОснование", ТекущиеДанные.Ссылка);
|
||
Иначе
|
||
ПараметрыСоздания = Новый Структура;
|
||
ПараметрыСоздания.Вставить("СкрытьЗаявление", Не ЗаявлениеНаВыпускСертификатаДоступно);
|
||
КонецЕсли;
|
||
|
||
ЭлектроннаяПодписьСлужебныйКлиент.ДобавитьСертификат(ПараметрыСоздания);
|
||
|
||
КонецПроцедуры
|
||
|
||
&НаСервереБезКонтекста
|
||
Процедура СертификатыПриПолученииДанныхНаСервере(ИмяЭлемента, Настройки, Строки)
|
||
|
||
Для Каждого Строка Из Строки Цикл
|
||
Если НЕ Строка.Значение.Данные.Свойство("Пользователь") Тогда
|
||
Возврат;
|
||
КонецЕсли;
|
||
Прервать;
|
||
КонецЦикла;
|
||
|
||
Запрос = Неопределено;
|
||
Для Каждого Строка Из Строки Цикл
|
||
Если ЗначениеЗаполнено(Строка.Значение.Данные.Пользователь) Тогда
|
||
Продолжить;
|
||
КонецЕсли;
|
||
Если Запрос = Неопределено Тогда
|
||
Запрос = Новый Запрос;
|
||
Запрос.Текст =
|
||
"ВЫБРАТЬ
|
||
| СертификатыКлючейЭлектроннойПодписиИШифрованияПользователи.Ссылка КАК Ссылка,
|
||
| СертификатыКлючейЭлектроннойПодписиИШифрованияПользователи.Пользователь КАК Пользователь,
|
||
| Представление(СертификатыКлючейЭлектроннойПодписиИШифрованияПользователи.Пользователь) КАК ПользовательПредставление
|
||
|ИЗ
|
||
| Справочник.СертификатыКлючейЭлектроннойПодписиИШифрования.Пользователи КАК
|
||
| СертификатыКлючейЭлектроннойПодписиИШифрованияПользователи
|
||
|ГДЕ
|
||
| СертификатыКлючейЭлектроннойПодписиИШифрованияПользователи.Ссылка В (&Ссылки)
|
||
|ИТОГИ
|
||
| КОЛИЧЕСТВО(Пользователь)
|
||
|ПО
|
||
| Ссылка";
|
||
Запрос.УстановитьПараметр("Ссылки", Строки.ПолучитьКлючи());
|
||
РезультатЗапроса = Запрос.Выполнить();
|
||
Если РезультатЗапроса.Пустой() Тогда
|
||
Возврат;
|
||
КонецЕсли;
|
||
ВыборкаСсылка = РезультатЗапроса.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
|
||
КонецЕсли;
|
||
Если ВыборкаСсылка.НайтиСледующий(Строка.Значение.Данные["Ссылка"], "Ссылка") Тогда
|
||
КоличествоПользователей = ВыборкаСсылка.Пользователь;
|
||
ВыборкаПользователь = ВыборкаСсылка.Выбрать();
|
||
ВыборкаПользователь.Следующий();
|
||
Если КоличествоПользователей = 1 Тогда
|
||
Строка.Значение.Данные.Пользователь = ВыборкаПользователь.ПользовательПредставление;
|
||
Продолжить;
|
||
КонецЕсли;
|
||
Пользователь1 = ВыборкаПользователь.ПользовательПредставление;
|
||
ВыборкаПользователь.Следующий();
|
||
Пользователь2 = ВыборкаПользователь.ПользовательПредставление;
|
||
Строка.Значение.Данные.Пользователь = ЭлектроннаяПодписьСлужебныйКлиентСервер.ПользователиСертификатаСтрокой(
|
||
Пользователь1, Пользователь2, КоличествоПользователей);
|
||
КонецЕсли;
|
||
КонецЦикла;
|
||
|
||
КонецПроцедуры
|
||
|
||
#КонецОбласти
|
||
|
||
#Область ОбработчикиСобытийЭлементовТаблицыФормыПрограммы
|
||
|
||
&НаКлиенте
|
||
Процедура ПрограммыПриАктивизацииСтроки(Элемент)
|
||
|
||
Элементы.ПрограммыУстановитьПометкуУдаления.Доступность =
|
||
Элементы.Программы.ТекущиеДанные <> Неопределено;
|
||
|
||
Если Элементы.Программы.ТекущиеДанные <> Неопределено Тогда
|
||
LinuxПутьКТекущейПрограмме = Элементы.Программы.ТекущиеДанные.LinuxПутьКПрограмме;
|
||
КонецЕсли;
|
||
|
||
ОбновитьLinuxПутьКПрограмме();
|
||
|
||
КонецПроцедуры
|
||
|
||
&НаКлиенте
|
||
Процедура ПрограммыПередНачаломДобавления(Элемент, Отказ, Копирование, Родитель, Группа, Параметр)
|
||
|
||
Отказ = Истина;
|
||
|
||
Если Элементы.Программы.ИзменятьСоставСтрок Тогда
|
||
Если ЭлектроннаяПодписьСлужебныйКлиент.ИспользоватьСервисОблачнойПодписи() Тогда
|
||
МодульСервисКриптографииDSSКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("СервисКриптографииDSSКлиент");
|
||
МодульСервисКриптографииDSSКлиент.ДобавлениеПрограммыЭлектроннойПодписи(Неопределено);
|
||
Иначе
|
||
ОткрытьФорму("Справочник.ПрограммыЭлектроннойПодписиИШифрования.ФормаОбъекта");
|
||
КонецЕсли;
|
||
КонецЕсли;
|
||
|
||
КонецПроцедуры
|
||
|
||
&НаКлиенте
|
||
Процедура ПрограммыПередНачаломИзменения(Элемент, Отказ)
|
||
|
||
Отказ = Истина;
|
||
|
||
Если Элементы.Найти("ПрограммыИзменить") <> Неопределено
|
||
И Элементы.ПрограммыИзменить.Видимость Тогда
|
||
|
||
ПоказатьЗначение(, Элементы.Программы.ТекущиеДанные.Ссылка);
|
||
КонецЕсли;
|
||
|
||
КонецПроцедуры
|
||
|
||
&НаКлиенте
|
||
Процедура ПрограммыПередУдалением(Элемент, Отказ)
|
||
|
||
Отказ = Истина;
|
||
|
||
Если Элементы.Найти("ПрограммыИзменить") <> Неопределено
|
||
И Элементы.ПрограммыИзменить.Видимость Тогда
|
||
|
||
ПрограммыУстановитьПометкуУдаления(Неопределено);
|
||
КонецЕсли;
|
||
|
||
КонецПроцедуры
|
||
|
||
&НаКлиенте
|
||
Процедура ИнструкцияНажатие(Элемент)
|
||
|
||
ЭлектроннаяПодписьСлужебныйКлиент.ОткрытьИнструкциюПоРаботеСПрограммами();
|
||
|
||
КонецПроцедуры
|
||
|
||
&НаКлиенте
|
||
Процедура ПрограммыВыбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка)
|
||
|
||
ТекущиеДанные = Элементы.Программы.ТекущиеДанные;
|
||
Если Поле = Элементы.ПрограммыПодробнее
|
||
И Не ПустаяСтрока(ТекущиеДанные.Подробнее)Тогда
|
||
|
||
СтандартнаяОбработка = Ложь;
|
||
|
||
ПараметрыФормы = Новый Структура;
|
||
ПараметрыФормы.Вставить("ЗаголовокПредупреждения", НСтр("ru = 'Результат проверки программы'"));
|
||
ПараметрыФормы.Вставить("ТекстОшибкиКлиент", ТекущиеДанные.РезультатПроверки);
|
||
ПараметрыФормы.Вставить("ПоказатьТребуетсяПомощь", Истина);
|
||
ПараметрыФормы.Вставить("ПоказатьИнструкцию", Истина);
|
||
|
||
ОткрытьФорму("ОбщаяФорма.РасширенноеПредставлениеОшибки", ПараметрыФормы, ЭтотОбъект);
|
||
|
||
КонецЕсли;
|
||
|
||
КонецПроцедуры
|
||
|
||
#КонецОбласти
|
||
|
||
#Область ОбработчикиКомандФормы
|
||
|
||
&НаКлиенте
|
||
Процедура Обновить(Команда)
|
||
|
||
ЗаполнитьПрограммыИНастройки(Истина);
|
||
ОпределитьУстановленныеПрограммы();
|
||
ОбновитьСписокСертификатов();
|
||
|
||
КонецПроцедуры
|
||
|
||
&НаКлиенте
|
||
Процедура ДобавитьЗаявлениеНаВыпускСертификата(Команда)
|
||
|
||
ПараметрыСоздания = Новый Структура;
|
||
ПараметрыСоздания.Вставить("СоздатьЗаявление", Истина);
|
||
|
||
ЭлектроннаяПодписьСлужебныйКлиент.ДобавитьСертификат(ПараметрыСоздания);
|
||
|
||
КонецПроцедуры
|
||
|
||
&НаКлиенте
|
||
Процедура ДобавитьИзУстановленныхНаКомпьютере(Команда)
|
||
|
||
ЭлектроннаяПодписьСлужебныйКлиент.ДобавитьСертификат();
|
||
|
||
КонецПроцедуры
|
||
|
||
&НаКлиенте
|
||
Процедура УстановитьРасширение(Команда)
|
||
|
||
ЭлектроннаяПодписьКлиент.УстановитьРасширение(Истина);
|
||
|
||
КонецПроцедуры
|
||
|
||
&НаКлиенте
|
||
Процедура ПоказатьВерсиюКомпонентыExtraCryptoAPI(Команда)
|
||
|
||
УстановитьПодключитьСообщитьВерсиюКомпоненты(Ложь);
|
||
|
||
КонецПроцедуры
|
||
|
||
&НаКлиенте
|
||
Процедура УстановитьКомпонентуExtraCryptoAPI(Команда)
|
||
|
||
УстановитьПодключитьСообщитьВерсиюКомпоненты(Истина);
|
||
|
||
КонецПроцедуры
|
||
|
||
&НаКлиенте
|
||
Процедура ТехническаяИнформация(Команда)
|
||
|
||
ЭлектроннаяПодписьСлужебныйКлиент.СформироватьТехническуюИнформацию(
|
||
НСтр("ru = 'Настройки электронной подписи и шифрования'"));
|
||
|
||
КонецПроцедуры
|
||
|
||
&НаКлиенте
|
||
Процедура ПрограммыУстановитьПометкуУдаления(Команда)
|
||
|
||
ТекущиеДанные = Элементы.Программы.ТекущиеДанные;
|
||
|
||
Если ТекущиеДанные = Неопределено Тогда
|
||
Возврат;
|
||
КонецЕсли;
|
||
|
||
Если ТекущиеДанные.ПометкаУдаления Тогда
|
||
ТекстВопроса = НСтр("ru = 'Снять с ""%1"" пометку на удаление?'");
|
||
Иначе
|
||
ТекстВопроса = НСтр("ru = 'Пометить ""%1"" на удаление?'");
|
||
КонецЕсли;
|
||
|
||
СодержимоеВопроса = Новый Массив;
|
||
СодержимоеВопроса.Добавить(БиблиотекаКартинок.Вопрос32);
|
||
СодержимоеВопроса.Добавить(СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ТекстВопроса, ТекущиеДанные.Наименование));
|
||
|
||
ПоказатьВопрос(
|
||
Новый ОписаниеОповещения("ПрограммыУстановитьПометкуУдаленияПродолжить", ЭтотОбъект, ТекущиеДанные.Ссылка),
|
||
Новый ФорматированнаяСтрока(СодержимоеВопроса),
|
||
РежимДиалогаВопрос.ДаНет);
|
||
|
||
КонецПроцедуры
|
||
|
||
#КонецОбласти
|
||
|
||
#Область СлужебныеПроцедурыИФункции
|
||
|
||
&НаКлиенте
|
||
Процедура ОбновитьСписокСертификатов()
|
||
|
||
СертификатыВЛичномХранилище = Новый СписокЗначений;
|
||
ОписаниеОповещения = Новый ОписаниеОповещения(
|
||
"ОбновитьСписокСертификатовПослеПолученияСвойствСертификатовНаКлиенте",
|
||
ЭтотОбъект, "ОбновитьНаСервере");
|
||
ЭлектроннаяПодписьСлужебныйКлиент.ПолучитьСвойстваСертификатовНаКлиенте(ОписаниеОповещения, Истина, Истина, Истина);
|
||
|
||
КонецПроцедуры
|
||
|
||
&НаКлиенте
|
||
Процедура ДобавитьСертификатыВЛичномХранилищеВПараметрДинамическогоСписка()
|
||
|
||
ЭлектроннаяПодписьСлужебныйКлиент.ПолучитьСвойстваСертификатовНаКлиенте(
|
||
Новый ОписаниеОповещения("ОбновитьСписокСертификатовПослеПолученияСвойствСертификатовНаКлиенте", ЭтотОбъект),
|
||
Истина, Истина, Истина);
|
||
|
||
КонецПроцедуры
|
||
|
||
&НаКлиенте
|
||
Процедура ОбновитьСписокСертификатовПослеПолученияСвойствСертификатовНаКлиенте(Результат, Параметры) Экспорт
|
||
|
||
Для Каждого КлючИЗначение Из Результат.СвойстваСертификатовНаКлиенте Цикл
|
||
СертификатыВЛичномХранилище.Добавить(КлючИЗначение.Ключ);
|
||
КонецЦикла;
|
||
|
||
Если Параметры = "ОбновитьНаСервере" Тогда
|
||
УстановитьПараметрыВСпискеСертификатовНаСервере()
|
||
Иначе
|
||
ТекущаяДата = ОбщегоНазначенияКлиент.ДатаУниверсальная();
|
||
УстановитьПараметрыВСпискеСертификатов(ЭтотОбъект, СертификатыВЛичномХранилище, ТекущаяДата);
|
||
КонецЕсли;
|
||
|
||
КонецПроцедуры
|
||
|
||
&НаКлиентеНаСервереБезКонтекста
|
||
Процедура УстановитьПараметрыВСпискеСертификатов(Форма, СписокСертификатов, ТекущаяДата)
|
||
|
||
ОбщегоНазначенияКлиентСервер.УстановитьПараметрДинамическогоСписка(
|
||
Форма.Сертификаты, "СертификатыВЛичномХранилище", СписокСертификатов, Истина);
|
||
ОбщегоНазначенияКлиентСервер.УстановитьПараметрДинамическогоСписка(
|
||
Форма.Сертификаты, "ТекущаяДата", ТекущаяДата, Истина);
|
||
|
||
КонецПроцедуры
|
||
|
||
&НаСервере
|
||
Процедура УстановитьПараметрыВСпискеСертификатовНаСервере()
|
||
|
||
ЭлектроннаяПодписьСлужебный.ДополнитьСписокСертификатовВЛичномХранилищеНаСервере(СертификатыВЛичномХранилище);
|
||
УстановитьПараметрыВСпискеСертификатов(ЭтотОбъект, СертификатыВЛичномХранилище, ТекущаяУниверсальнаяДата());
|
||
|
||
КонецПроцедуры
|
||
|
||
&НаСервере
|
||
Процедура УстановитьУсловноеОформление()
|
||
|
||
ЭлементУсловногоОформления = УсловноеОформление.Элементы.Добавить();
|
||
|
||
ЭлементЦветаОформления = ЭлементУсловногоОформления.Оформление.Элементы.Найти("TextColor");
|
||
ЭлементЦветаОформления.Значение = Метаданные.ЭлементыСтиля.ТекстЗапрещеннойЯчейкиЦвет.Значение;
|
||
ЭлементЦветаОформления.Использование = Истина;
|
||
|
||
ЭлементОтбораДанных = ЭлементУсловногоОформления.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
|
||
ЭлементОтбораДанных.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Программы.Установлена");
|
||
ЭлементОтбораДанных.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
|
||
ЭлементОтбораДанных.ПравоеЗначение = Ложь;
|
||
ЭлементОтбораДанных.Использование = Истина;
|
||
|
||
ЭлементОформляемогоПоля = ЭлементУсловногоОформления.Поля.Элементы.Добавить();
|
||
ЭлементОформляемогоПоля.Поле = Новый ПолеКомпоновкиДанных("ПрограммыРезультатПроверки");
|
||
ЭлементОформляемогоПоля.Использование = Истина;
|
||
|
||
ЭлементОформляемогоПоля = ЭлементУсловногоОформления.Поля.Элементы.Добавить();
|
||
ЭлементОформляемогоПоля.Поле = Новый ПолеКомпоновкиДанных("ПрограммыНаименование");
|
||
ЭлементОформляемогоПоля.Использование = Истина;
|
||
|
||
КонецПроцедуры
|
||
|
||
&НаКлиентеНаСервереБезКонтекста
|
||
Процедура СертификатыОбновитьОтбор(Форма, ТекущийПользователь = Неопределено)
|
||
|
||
Элементы = Форма.Элементы;
|
||
|
||
// Отбор сертификатов Все/Мои.
|
||
ПоказатьСвои = Форма.СертификатыПоказать <> "ВсеСертификаты";
|
||
Если ТекущийПользователь <> Неопределено Тогда
|
||
Если ПоказатьСвои Тогда
|
||
Форма.ПользовательОтбор = ТекущийПользователь;
|
||
Иначе
|
||
Форма.ПользовательОтбор = Неопределено;
|
||
КонецЕсли;
|
||
КонецЕсли;
|
||
|
||
// Отбор по пользователю.
|
||
Элементы.СертификатыПользователь.Видимость = Не ПоказатьСвои;
|
||
Элементы.ПользовательОтбор.Видимость = Не ПоказатьСвои;
|
||
Форма.Сертификаты.Параметры.УстановитьЗначениеПараметра("ПользовательСертификата", ?(ЗначениеЗаполнено(
|
||
Форма.ПользовательОтбор), Форма.ПользовательОтбор, Неопределено));
|
||
|
||
// Отбор по действующим.
|
||
ОтборПоДействующим = Не Форма.СертификатыПоказать = "МоиСертификатыСИстекающимСрокомДействия"
|
||
И Не Форма.СертификатыПоказать = "МоиЗаявленияВРаботе";
|
||
|
||
Элементы.СертификатыТолькоДействующие.Видимость = ОтборПоДействующим;
|
||
ОбщегоНазначенияКлиентСервер.УстановитьЭлементОтбораДинамическогоСписка(Форма.Сертификаты,
|
||
"Действует", Истина, , , ОтборПоДействующим И Форма.СертификатыТолькоДействующие);
|
||
|
||
ОбщегоНазначенияКлиентСервер.УстановитьЭлементОтбораДинамическогоСписка(Форма.Сертификаты,
|
||
"СрокДействияСкороЗакончится", Истина, , ,Форма.СертификатыПоказать = "МоиСертификатыСИстекающимСрокомДействия");
|
||
|
||
Если Форма.СертификатыПоказать = "МоиЗаявленияВРаботе" Тогда
|
||
|
||
Форма.СертификатыПоказатьЗаявления = Неопределено;
|
||
Форма.Элементы.СертификатыПоказатьЗаявления.Видимость = Ложь;
|
||
|
||
СостоянияЗаявления = Новый Массив;
|
||
СостоянияЗаявления.Добавить(ПредопределенноеЗначение("Перечисление.СостоянияЗаявленияНаВыпускСертификата.Исполнено"));
|
||
СостоянияЗаявления.Добавить(ПредопределенноеЗначение("Перечисление.СостоянияЗаявленияНаВыпускСертификата.Отклонено"));
|
||
|
||
ОтборПоСостояниюЗаявления = Неопределено;
|
||
ОбщегоНазначенияКлиентСервер.УстановитьЭлементОтбораДинамическогоСписка(Форма.Сертификаты,
|
||
"СостояниеЗаявления", СостоянияЗаявления, ВидСравненияКомпоновкиДанных.НеВСписке, , Истина);
|
||
Иначе
|
||
|
||
Форма.Элементы.СертификатыПоказатьЗаявления.Видимость = Форма.ЗаявлениеНаВыпускСертификатаДоступно
|
||
И Не Форма.СертификатыПоказать = "МоиСертификатыСИстекающимСрокомДействия";
|
||
|
||
Если Элементы.СертификатыПоказатьЗаявления.Видимость Тогда
|
||
// Отбор сертификатов по состоянию заявления.
|
||
ОтборПоСостояниюЗаявления = ЗначениеЗаполнено(Форма.СертификатыПоказатьЗаявления);
|
||
ОбщегоНазначенияКлиентСервер.УстановитьЭлементОтбораДинамическогоСписка(Форма.Сертификаты,
|
||
"СостояниеЗаявления", Форма.СертификатыПоказатьЗаявления, , , ОтборПоСостояниюЗаявления);
|
||
КонецЕсли;
|
||
КонецЕсли;
|
||
|
||
КонецПроцедуры
|
||
|
||
// Параметры:
|
||
// ТаблицаФормы - ДанныеФормыКоллекция
|
||
//
|
||
// Возвращаемое значение:
|
||
// Структура:
|
||
// * Ссылка - СправочникСсылка.СертификатыКлючейЭлектроннойПодписиИШифрования
|
||
//
|
||
&НаКлиенте
|
||
Функция СертификатыТекущиеДанные(ТаблицаФормы)
|
||
|
||
Возврат ТаблицаФормы.ТекущиеДанные;
|
||
|
||
КонецФункции
|
||
|
||
&НаКлиенте
|
||
Процедура ПрограммыУстановитьПометкуУдаленияПродолжить(Ответ, ТекущаяПрограмма) Экспорт
|
||
|
||
Если Ответ = КодВозвратаДиалога.Да Тогда
|
||
ИзменитьПометкуУдаленияПрограммы(ТекущаяПрограмма);
|
||
ОповеститьОбИзменении(ТекущаяПрограмма);
|
||
Оповестить("Запись_ПрограммыЭлектроннойПодписиИШифрования", Новый Структура, ТекущаяПрограмма);
|
||
ОпределитьУстановленныеПрограммы();
|
||
КонецЕсли;
|
||
|
||
КонецПроцедуры
|
||
|
||
&НаСервере
|
||
Процедура ИзменитьПометкуУдаленияПрограммы(Программа)
|
||
|
||
Если ТипЗнч(Программа) = ЭлектроннаяПодписьСлужебный.ТипПрограммыСервисаПодписи() Тогда
|
||
МодульСервисКриптографииDSSСлужебный = ОбщегоНазначения.ОбщийМодуль("СервисКриптографииDSSСлужебный");
|
||
МодульСервисКриптографииDSSСлужебный.ИзменитьПометкуУдаленияПрограммы(Программа, УникальныйИдентификатор);
|
||
|
||
Иначе
|
||
ЗаблокироватьДанныеДляРедактирования(Программа, , УникальныйИдентификатор);
|
||
|
||
Блокировка = Новый БлокировкаДанных;
|
||
ЭлементБлокировки = Блокировка.Добавить("Справочник.ПрограммыЭлектроннойПодписиИШифрования");
|
||
ЭлементБлокировки.УстановитьЗначение("Ссылка", Программа);
|
||
|
||
НачатьТранзакцию();
|
||
Попытка
|
||
|
||
Блокировка.Заблокировать();
|
||
|
||
Объект = Программа.ПолучитьОбъект();
|
||
Объект.ПометкаУдаления = Не Объект.ПометкаУдаления;
|
||
Объект.Записать();
|
||
|
||
ЗафиксироватьТранзакцию();
|
||
|
||
Исключение
|
||
ОтменитьТранзакцию();
|
||
РазблокироватьДанныеДляРедактирования(Программа, УникальныйИдентификатор);
|
||
ВызватьИсключение;
|
||
КонецПопытки;
|
||
|
||
РазблокироватьДанныеДляРедактирования(Программа, УникальныйИдентификатор);
|
||
КонецЕсли;
|
||
|
||
ЗаполнитьПрограммыИНастройки(Истина);
|
||
|
||
КонецПроцедуры
|
||
|
||
&НаКлиенте
|
||
Процедура ПриИзмененияИспользованияПодписанияИлиШифрования()
|
||
|
||
ОбновитьТекущуюВидимостьЭлементов();
|
||
|
||
КонецПроцедуры
|
||
|
||
&НаСервере
|
||
Процедура ОбновитьТекущуюВидимостьЭлементов()
|
||
|
||
Если Константы.ИспользоватьШифрование.Получить()
|
||
Или ЭлектроннаяПодпись.ОбщиеНастройки().ЗаявлениеНаВыпускСертификатаДоступно Тогда
|
||
|
||
ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(Элементы,
|
||
"СертификатыСоздать", "Заголовок", НСтр("ru = 'Добавить...'"));
|
||
|
||
ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(Элементы,
|
||
"СертификатыКонтекстноеМенюСоздать", "Заголовок", НСтр("ru = 'Добавить...'"));
|
||
|
||
Элементы.РасширениеДляЗашифрованныхФайлов.Видимость = Истина;
|
||
Иначе
|
||
ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(Элементы,
|
||
"СертификатыСоздать", "Заголовок", НСтр("ru = 'Добавить'"));
|
||
|
||
ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(Элементы,
|
||
"СертификатыКонтекстноеМенюСоздать", "Заголовок", НСтр("ru = 'Добавить'"));
|
||
|
||
Элементы.РасширениеДляЗашифрованныхФайлов.Видимость = Ложь;
|
||
КонецЕсли;
|
||
|
||
Если Константы.ИспользоватьШифрование.Получить() Тогда
|
||
Если ЭлектроннаяПодписьСлужебный.ИспользоватьСервисОблачнойПодписи() Тогда
|
||
Элементы.ДобавитьИзУстановленныхНаКомпьютере.Заголовок =
|
||
НСтр("ru = 'Из установленных на сервере DSS и на компьютере...'");
|
||
ИначеЕсли ЭлектроннаяПодписьСлужебный.ИспользоватьЭлектроннуюПодписьВМоделиСервиса() Тогда
|
||
Элементы.ДобавитьИзУстановленныхНаКомпьютере.Заголовок =
|
||
НСтр("ru = 'Из установленных в сервисе и на компьютере...'");
|
||
Иначе
|
||
Элементы.ДобавитьИзУстановленныхНаКомпьютере.Заголовок =
|
||
НСтр("ru = 'Из установленных на компьютере...'");
|
||
КонецЕсли;
|
||
Иначе
|
||
Если ЭлектроннаяПодписьСлужебный.ИспользоватьСервисОблачнойПодписи() Тогда
|
||
Элементы.ДобавитьИзУстановленныхНаКомпьютере.Заголовок =
|
||
НСтр("ru = 'Из установленных на сервере DSS и на компьютере...'");
|
||
ИначеЕсли ЭлектроннаяПодписьСлужебный.ИспользоватьЭлектроннуюПодписьВМоделиСервиса() Тогда
|
||
Элементы.ДобавитьИзУстановленныхНаКомпьютере.Заголовок =
|
||
НСтр("ru = 'Из установленных в сервисе и на компьютере'");
|
||
Иначе
|
||
Элементы.ДобавитьИзУстановленныхНаКомпьютере.Заголовок =
|
||
НСтр("ru = 'Из установленных на компьютере'");
|
||
КонецЕсли;
|
||
КонецЕсли;
|
||
|
||
Если Константы.ИспользоватьЭлектронныеПодписи.Получить() Тогда
|
||
ЗаголовокФлажка = НСтр("ru = 'Проверять подписи и сертификаты на сервере'");
|
||
ПодсказкаФлажка =
|
||
НСтр("ru = 'Позволяет не устанавливать программу на компьютер пользователя
|
||
|для проверки электронных подписей и сертификатов.
|
||
|
|
||
|Важно: на каждый компьютер, где работает сервер 1С:Предприятия
|
||
|или веб-сервер, подключенный к файловой информационной базе,
|
||
|должна быть установлена хотя бы одна из программ в списке.'");
|
||
Элементы.РасширениеДляФайловПодписи.Видимость = Истина;
|
||
Элементы.ДействияПриСохраненииДанныхСЭлектроннойПодписью.Видимость = Истина;
|
||
Иначе
|
||
ЗаголовокФлажка = НСтр("ru = 'Проверять сертификаты на сервере'");
|
||
ПодсказкаФлажка =
|
||
НСтр("ru = 'Позволяет не устанавливать программу на компьютер пользователя
|
||
|для проверки сертификатов.
|
||
|
|
||
|Важно: на каждый компьютер, где работает сервер 1С:Предприятия
|
||
|или веб-сервер, подключенный к файловой информационной базе,
|
||
|должна быть установлена хотя бы одна из программ в списке.'");
|
||
Элементы.РасширениеДляФайловПодписи.Видимость = Ложь;
|
||
Элементы.ДействияПриСохраненииДанныхСЭлектроннойПодписью.Видимость = Ложь;
|
||
КонецЕсли;
|
||
Элементы.ПроверятьПодписиНаСервере.Заголовок = ЗаголовокФлажка;
|
||
Элементы.ПроверятьПодписиНаСервере.РасширеннаяПодсказка.Заголовок = ПодсказкаФлажка;
|
||
|
||
Если Не Константы.ИспользоватьЭлектронныеПодписи.Получить() Тогда
|
||
ЗаголовокФлажка = НСтр("ru = 'Шифровать и расшифровывать на сервере'");
|
||
ПодсказкаФлажка =
|
||
НСтр("ru = 'Позволяет не устанавливать программу и сертификат
|
||
|на компьютер пользователя для шифрования и расшифровки.
|
||
|
|
||
|Важно: на каждый компьютер, где работает сервер 1С:Предприятия
|
||
|или веб-сервер, подключенный к файловой информационной базе,
|
||
|должна быть установлена программа и сертификат с закрытым ключом.'");
|
||
ИначеЕсли Не Константы.ИспользоватьШифрование.Получить() Тогда
|
||
ЗаголовокФлажка = НСтр("ru = 'Подписывать на сервере'");
|
||
ПодсказкаФлажка =
|
||
НСтр("ru = 'Позволяет не устанавливать программу и сертификат
|
||
|на компьютер пользователя для подписания.
|
||
|
|
||
|Важно: на каждый компьютер, где работает сервер 1С:Предприятия
|
||
|или веб-сервер, подключенный к файловой информационной базе,
|
||
|должна быть установлена программа и сертификат с закрытым ключом.'");
|
||
Иначе
|
||
ЗаголовокФлажка = НСтр("ru = 'Подписывать и шифровать на сервере'");
|
||
ПодсказкаФлажка =
|
||
НСтр("ru = 'Позволяет не устанавливать программу и сертификат
|
||
|на компьютер пользователя для подписания, шифрования и расшифровки.
|
||
|
|
||
|Важно: на каждый компьютер, где работает сервер 1С:Предприятия
|
||
|или веб-сервер, подключенный к файловой информационной базе,
|
||
|должна быть установлена программа и сертификат с закрытым ключом.'");
|
||
КонецЕсли;
|
||
Элементы.ПодписыватьНаСервере.Заголовок = ЗаголовокФлажка;
|
||
Элементы.ПодписыватьНаСервере.РасширеннаяПодсказка.Заголовок = ПодсказкаФлажка;
|
||
|
||
КонецПроцедуры
|
||
|
||
&НаКлиенте
|
||
Процедура ОпределитьУстановленныеПрограммы()
|
||
|
||
Если Элементы.Страницы.ТекущаяСтраница = Элементы.СтраницаПрограммы Тогда
|
||
ПроверкаПрограммВыполнялась = Истина;
|
||
НачатьПодключениеРасширенияРаботыСКриптографией(Новый ОписаниеОповещения(
|
||
"ОпределитьУстановленныеПрограммыПослеПодключенияРасширения", ЭтотОбъект));
|
||
Иначе
|
||
ПроверкаПрограммВыполнялась = Неопределено;
|
||
КонецЕсли;
|
||
|
||
КонецПроцедуры
|
||
|
||
// Продолжение процедуры ОпределитьУстановленныеПрограммы.
|
||
&НаКлиенте
|
||
Процедура ОпределитьУстановленныеПрограммыПослеПодключенияРасширения(Подключено, Контекст) Экспорт
|
||
|
||
Если Подключено Тогда
|
||
Элементы.СтраницыПрограммыИОбновление.ТекущаяСтраница = Элементы.СтраницаПрограммыОбновление;
|
||
КонецЕсли;
|
||
|
||
#Если ВебКлиент Тогда
|
||
ПодключитьОбработчикОжидания("ОбработчикОжиданияОпределитьУстановленныеПрограммы", 0.3, Истина);
|
||
#Иначе
|
||
ПодключитьОбработчикОжидания("ОбработчикОжиданияОпределитьУстановленныеПрограммы", 0.1, Истина);
|
||
#КонецЕсли
|
||
|
||
КонецПроцедуры
|
||
|
||
&НаКлиенте
|
||
Процедура ОбработчикОжиданияДляПродолжения()
|
||
|
||
Возврат;
|
||
|
||
КонецПроцедуры
|
||
|
||
&НаКлиенте
|
||
Процедура ОбработчикОжиданияОпределитьУстановленныеПрограммы()
|
||
|
||
НачатьПодключениеРасширенияРаботыСКриптографией(Новый ОписаниеОповещения(
|
||
"ОбработчикОжиданияОпределитьУстановленныеПрограммыПослеПодключенияРасширения", ЭтотОбъект));
|
||
|
||
#Если ВебКлиент Тогда
|
||
ПодключитьОбработчикОжидания("ОбработчикОжиданияДляПродолжения", 0.3, Истина);
|
||
#Иначе
|
||
ПодключитьОбработчикОжидания("ОбработчикОжиданияДляПродолжения", 0.1, Истина);
|
||
#КонецЕсли
|
||
|
||
КонецПроцедуры
|
||
|
||
// Продолжение процедуры ОбработчикОжиданияОпределитьУстановленныеПрограммы.
|
||
&НаКлиенте
|
||
Процедура ОбработчикОжиданияОпределитьУстановленныеПрограммыПослеПодключенияРасширения(Подключено, Контекст) Экспорт
|
||
|
||
Если Не Подключено Тогда
|
||
Если Не Элементы.ГруппаВебКлиентРасширениеНеУстановлено.Видимость Тогда
|
||
УстановитьВидимостьГруппаВебКлиентРасширениеНеУстановлено(Истина);
|
||
КонецЕсли;
|
||
ПодключитьОбработчикОжидания("ОбработчикОжиданияОпределитьУстановленныеПрограммы", 3, Истина);
|
||
Возврат;
|
||
КонецЕсли;
|
||
|
||
Если Элементы.ГруппаВебКлиентРасширениеНеУстановлено.Видимость Тогда
|
||
УстановитьВидимостьГруппаВебКлиентРасширениеНеУстановлено(Ложь);
|
||
КонецЕсли;
|
||
|
||
ПутиКПрограммамПоУмолчанию.Очистить();
|
||
|
||
Контекст = Новый Структура;
|
||
Контекст.Вставить("Индекс", -1);
|
||
|
||
ОбработчикОжиданияОпределитьУстановленныеПрограммыЦиклНачало(Контекст);
|
||
|
||
КонецПроцедуры
|
||
|
||
// Продолжение процедуры ОбработчикОжиданияОпределитьУстановленныеПрограммы.
|
||
&НаКлиенте
|
||
Процедура ОбработчикОжиданияОпределитьУстановленныеПрограммыЦиклНачало(Контекст)
|
||
|
||
Если Программы.Количество() <= Контекст.Индекс + 1 Тогда
|
||
// После цикла.
|
||
Элементы.СтраницыПрограммыИОбновление.ТекущаяСтраница = Элементы.СтраницаПрограммыСписок;
|
||
ТекущийЭлемент = Элементы.Программы;
|
||
ОбновитьLinuxПутьКПрограмме();
|
||
Возврат;
|
||
КонецЕсли;
|
||
Контекст.Индекс = Контекст.Индекс + 1;
|
||
ОписаниеПрограммы = Программы.Получить(Контекст.Индекс);
|
||
|
||
Контекст.Вставить("ОписаниеПрограммы", ОписаниеПрограммы);
|
||
|
||
ЭлектроннаяПодписьСлужебныйКлиент.ПолучитьПутьКПрограммеПоУмолчанию(Новый ОписаниеОповещения(
|
||
"ОбработчикОжиданияОпределитьУстановленныеПрограммыЦиклПослеПолученияПутиКПрограмме", ЭтотОбъект, Контекст),
|
||
ОписаниеПрограммы.Ссылка);
|
||
|
||
КонецПроцедуры
|
||
|
||
// Продолжение процедуры ОбработчикОжиданияОпределитьУстановленныеПрограммы.
|
||
&НаКлиенте
|
||
Процедура ОбработчикОжиданияОпределитьУстановленныеПрограммыЦиклПослеПолученияПутиКПрограмме(ОписаниеПути, Контекст) Экспорт
|
||
|
||
ОписаниеПрограммы = Контекст.ОписаниеПрограммы;
|
||
|
||
Если ЗначениеЗаполнено(ОписаниеПути.ПутьКПрограмме) Тогда
|
||
НоваяСтрока = ПутиКПрограммамПоУмолчанию.Добавить();
|
||
НоваяСтрока.Программа = ОписаниеПрограммы.Ссылка;
|
||
НоваяСтрока.Путь = ОписаниеПути.ПутьКПрограмме;
|
||
КонецЕсли;
|
||
|
||
Если ОписаниеПрограммы.ПометкаУдаления Тогда
|
||
ОбновитьЗначение(ОписаниеПрограммы.РезультатПроверки, "");
|
||
ОбновитьЗначение(ОписаниеПрограммы.Подробнее, "");
|
||
ОбновитьЗначение(ОписаниеПрограммы.Установлена, "");
|
||
ОбработчикОжиданияОпределитьУстановленныеПрограммыЦиклНачало(Контекст);
|
||
Возврат;
|
||
ИначеЕсли ОписаниеПрограммы.ЭтоВстроенныйКриптопровайдер Тогда
|
||
ОбновитьЗначение(ОписаниеПрограммы.РезультатПроверки, НСтр("ru = 'Доступен.'"));
|
||
ОбновитьЗначение(ОписаниеПрограммы.Установлена, Истина);
|
||
ОбработчикОжиданияОпределитьУстановленныеПрограммыЦиклНачало(Контекст);
|
||
Возврат;
|
||
ИначеЕсли ЭлектроннаяПодписьСлужебныйКлиентСервер.РазмещениеСертификата(ОписаниеПрограммы.ТипРазмещения) = "ОблачнаяПодпись" Тогда
|
||
ОбновитьЗначение(ОписаниеПрограммы.РезультатПроверки, НСтр("ru = 'Доступен.'"));
|
||
ОбновитьЗначение(ОписаниеПрограммы.Установлена, Истина);
|
||
ОбработчикОжиданияОпределитьУстановленныеПрограммыЦиклНачало(Контекст);
|
||
Возврат;
|
||
КонецЕсли;
|
||
|
||
ОписанияПрограмм = Новый Массив;
|
||
ОписанияПрограмм.Добавить(Контекст.ОписаниеПрограммы);
|
||
|
||
ОписаниеОшибок = ЭлектроннаяПодписьСлужебныйКлиентСервер.НовоеОписаниеОшибок();
|
||
|
||
ПараметрыВыполнения = Новый Структура;
|
||
ПараметрыВыполнения.Вставить("ОписанияПрограмм", ОписанияПрограмм);
|
||
ПараметрыВыполнения.Вставить("Индекс", -1);
|
||
ПараметрыВыполнения.Вставить("ПоказатьОшибку", Неопределено);
|
||
ПараметрыВыполнения.Вставить("ОписаниеОшибок", ОписаниеОшибок);
|
||
ПараметрыВыполнения.Вставить("АлгоритмПодписи", "");
|
||
ПараметрыВыполнения.Вставить("ИнтерактивныйРежим", Ложь);
|
||
ПараметрыВыполнения.Вставить("ЭтоLinux", ЭлектроннаяПодписьСлужебныйКлиент.ТребуетсяПутьКПрограмме());
|
||
ПараметрыВыполнения.Вставить("Менеджер", Неопределено);
|
||
ПараметрыВыполнения.Вставить("Оповещение", Новый ОписаниеОповещения(
|
||
"ОбработчикОжиданияОпределитьУстановленныеПрограммыЦиклПродолжение", ЭтотОбъект, Контекст));
|
||
|
||
Контекст.Вставить("ПараметрыВыполнения", Новый Структура("ОписаниеОшибок", ОписаниеОшибок));
|
||
|
||
ЭлектроннаяПодписьСлужебныйКлиент.СоздатьМенеджерКриптографииЦиклНачало(ПараметрыВыполнения);
|
||
|
||
КонецПроцедуры
|
||
|
||
// Продолжение процедуры ОбработчикОжиданияОпределитьУстановленныеПрограммы.
|
||
&НаКлиенте
|
||
Процедура ОбработчикОжиданияОпределитьУстановленныеПрограммыЦиклПродолжение(Менеджер, Контекст) Экспорт
|
||
|
||
ОписаниеПрограммы = Контекст.ОписаниеПрограммы;
|
||
Ошибки = Контекст.ПараметрыВыполнения.ОписаниеОшибок.Ошибки; // Массив Из см. ЭлектроннаяПодписьСлужебныйКлиентСервер.НовыеСвойстваОшибки
|
||
|
||
Если Менеджер <> Неопределено Тогда
|
||
ОбновитьЗначение(ОписаниеПрограммы.РезультатПроверки, НСтр("ru = 'Установлена на компьютере.'"));
|
||
ОбновитьЗначение(ОписаниеПрограммы.Подробнее, "");
|
||
ОбновитьЗначение(ОписаниеПрограммы.Установлена, Истина);
|
||
ОбработчикОжиданияОпределитьУстановленныеПрограммыЦиклНачало(Контекст);
|
||
Возврат;
|
||
КонецЕсли;
|
||
|
||
Для каждого Ошибка Из Ошибки Цикл
|
||
Прервать;
|
||
КонецЦикла;
|
||
|
||
Если Ошибка.НеУказанПуть Тогда
|
||
ОбновитьЗначение(ОписаниеПрограммы.РезультатПроверки, Ошибка.Описание);
|
||
ОбновитьЗначение(ОписаниеПрограммы.Подробнее, НСтр("ru = 'Подробнее'") + "...");
|
||
ОбновитьЗначение(ОписаниеПрограммы.Установлена, "");
|
||
Иначе
|
||
ТекстОшибки = НСтр("ru = 'Не установлена на компьютере.'") + " " + Ошибка.Описание;
|
||
Если Ошибка.КАдминистратору И Не ЭтоПолноправныйПользователь Тогда
|
||
ТекстОшибки = ТекстОшибки + " " + НСтр("ru = 'Обратитесь к администратору.'");
|
||
КонецЕсли;
|
||
ОбновитьЗначение(ОписаниеПрограммы.РезультатПроверки, ТекстОшибки);
|
||
ОбновитьЗначение(ОписаниеПрограммы.Подробнее, НСтр("ru = 'Подробнее'") + "...");
|
||
ОбновитьЗначение(ОписаниеПрограммы.Установлена, Ложь);
|
||
КонецЕсли;
|
||
|
||
ОбработчикОжиданияОпределитьУстановленныеПрограммыЦиклНачало(Контекст);
|
||
|
||
КонецПроцедуры
|
||
|
||
&НаКлиенте
|
||
Процедура ОбновитьLinuxПутьКПрограмме()
|
||
|
||
ТекущиеДанные = Элементы.Программы.ТекущиеДанные;
|
||
|
||
ПутьПоУмолчанию = "";
|
||
Если ТекущиеДанные <> Неопределено Тогда
|
||
Отбор = Новый Структура("Программа", ТекущиеДанные.Ссылка);
|
||
Строки = ПутиКПрограммамПоУмолчанию.НайтиСтроки(Отбор);
|
||
Если Строки.Количество() > 0 Тогда
|
||
ПутьПоУмолчанию = Строки[0].Путь;
|
||
КонецЕсли;
|
||
КонецЕсли;
|
||
|
||
Элементы.ПрограммыLinuxПутьКПрограмме.КнопкаВыпадающегоСписка = ЗначениеЗаполнено(ПутьПоУмолчанию);
|
||
Элементы.ПрограммыLinuxПутьКПрограмме.ПодсказкаВвода = ПутьПоУмолчанию;
|
||
|
||
СписокВыбораПутей = Элементы.ПрограммыLinuxПутьКПрограмме.СписокВыбора;
|
||
СписокВыбораПутей.Очистить();
|
||
Если ЗначениеЗаполнено(ПутьПоУмолчанию) Тогда
|
||
Если ОбщегоНазначенияКлиент.ЭтоLinuxКлиент() Тогда
|
||
СписокВыбораПутей.Добавить("ПутьLinux", НСтр("ru = 'Стандартный путь для Linux'"));
|
||
Иначе
|
||
СписокВыбораПутей.Добавить("ПутьMac", НСтр("ru = 'Стандартный путь для Mac OS'"));
|
||
КонецЕсли;
|
||
КонецЕсли;
|
||
|
||
КонецПроцедуры
|
||
|
||
&НаСервере
|
||
Процедура УстановитьВидимостьГруппаВебКлиентРасширениеНеУстановлено(Знач ВидимостьЭлемента)
|
||
|
||
Элементы.ГруппаВебКлиентРасширениеНеУстановлено.Видимость = ВидимостьЭлемента;
|
||
|
||
КонецПроцедуры
|
||
|
||
&НаКлиенте
|
||
Процедура ПриИзмененииСоставаИлиНастроекПрограмм()
|
||
|
||
ЗаполнитьПрограммыИНастройки();
|
||
|
||
ОпределитьУстановленныеПрограммы();
|
||
|
||
КонецПроцедуры
|
||
|
||
&НаСервере
|
||
Процедура ЗаполнитьПрограммыИНастройки(ОбновитьПовтИсп = Ложь)
|
||
|
||
Если ОбновитьПовтИсп Тогда
|
||
ОбновитьПовторноИспользуемыеЗначения();
|
||
КонецЕсли;
|
||
|
||
ПерсональныеНастройки = ЭлектроннаяПодпись.ПерсональныеНастройки();
|
||
|
||
ДействияПриСохраненииСЭП = ПерсональныеНастройки.ДействияПриСохраненииСЭП;
|
||
РасширениеДляЗашифрованныхФайлов = ПерсональныеНастройки.РасширениеДляЗашифрованныхФайлов;
|
||
РасширениеДляФайловПодписи = ПерсональныеНастройки.РасширениеДляФайловПодписи;
|
||
ПутиКПрограммам = ПерсональныеНастройки.ПутиКПрограммамЭлектроннойПодписиИШифрования;
|
||
СохранятьСертификатВместеСПодписью = ПерсональныеНастройки.СохранятьСертификатВместеСПодписью;
|
||
|
||
Запрос = Новый Запрос;
|
||
Запрос.Текст =
|
||
"ВЫБРАТЬ
|
||
| Программы.Ссылка,
|
||
| Программы.Наименование КАК Наименование,
|
||
| Программы.ИмяПрограммы,
|
||
| Программы.ТипПрограммы,
|
||
| Программы.АлгоритмПодписи,
|
||
| Программы.АлгоритмХеширования,
|
||
| Программы.АлгоритмШифрования,
|
||
| Программы.ПометкаУдаления КАК ПометкаУдаления,
|
||
| Программы.ЭтоВстроенныйКриптопровайдер,
|
||
| 1 КАК ТипРазмещения
|
||
|ИЗ
|
||
| Справочник.ПрограммыЭлектроннойПодписиИШифрования КАК Программы
|
||
|ГДЕ
|
||
| НЕ Программы.ЭтоВстроенныйКриптопровайдер
|
||
|
|
||
|ОБЪЕДИНИТЬ ВСЕ
|
||
|
|
||
|ВЫБРАТЬ
|
||
| Программы.Ссылка,
|
||
| Программы.Наименование,
|
||
| Программы.ИмяПрограммы,
|
||
| Программы.ТипПрограммы,
|
||
| Программы.АлгоритмПодписи,
|
||
| Программы.АлгоритмХеширования,
|
||
| Программы.АлгоритмШифрования,
|
||
| Программы.ПометкаУдаления,
|
||
| Программы.ЭтоВстроенныйКриптопровайдер,
|
||
| 4
|
||
|ИЗ
|
||
| Справочник.ПрограммыЭлектроннойПодписиИШифрования КАК Программы
|
||
|ГДЕ
|
||
| Программы.ЭтоВстроенныйКриптопровайдер
|
||
| И &ИспользоватьЭлектроннуюПодписьВМоделиСервиса
|
||
|
|
||
|УПОРЯДОЧИТЬ ПО
|
||
| Наименование";
|
||
|
||
Запрос.УстановитьПараметр("ИспользоватьЭлектроннуюПодписьВМоделиСервиса",
|
||
ЭлектроннаяПодписьСлужебный.ИспользоватьЭлектроннуюПодписьВМоделиСервиса());
|
||
|
||
ТаблицаВыборки = Запрос.Выполнить().Выгрузить();
|
||
|
||
Если ЭлектроннаяПодписьСлужебный.ИспользоватьСервисОблачнойПодписи() Тогда
|
||
МодульСервисКриптографииDSSСлужебный = ОбщегоНазначения.ОбщийМодуль("СервисКриптографииDSSСлужебный");
|
||
МодульСервисКриптографииDSSСлужебный.ДополнитьВыборкуПрограмм(ТаблицаВыборки);
|
||
КонецЕсли;
|
||
|
||
ОбработанныеСтроки = Новый Соответствие;
|
||
Индекс = 0;
|
||
|
||
Для каждого СтрокаВыборки Из ТаблицаВыборки Цикл
|
||
Если Не Пользователи.ЭтоПолноправныйПользователь() И СтрокаВыборки.ПометкаУдаления Тогда
|
||
Продолжить;
|
||
КонецЕсли;
|
||
Строки = Программы.НайтиСтроки(Новый Структура("Ссылка", СтрокаВыборки.Ссылка));
|
||
Если Строки.Количество() = 0 Тогда
|
||
Если Программы.Количество()-1 < Индекс Тогда
|
||
Строка = Программы.Добавить();
|
||
Иначе
|
||
Строка = Программы.Вставить(Индекс);
|
||
КонецЕсли;
|
||
Иначе
|
||
Строка = Строки[0];
|
||
ИндексСтроки = Программы.Индекс(Строка);
|
||
Если ИндексСтроки <> Индекс Тогда
|
||
Программы.Сдвинуть(ИндексСтроки, Индекс - ИндексСтроки);
|
||
КонецЕсли;
|
||
КонецЕсли;
|
||
// Обновление только измененных значений, чтобы таблица формы не обновлялась лишний раз.
|
||
ОбновитьЗначение(Строка.Ссылка, СтрокаВыборки.Ссылка);
|
||
ОбновитьЗначение(Строка.ПометкаУдаления, СтрокаВыборки.ПометкаУдаления);
|
||
ОбновитьЗначение(Строка.Наименование, СтрокаВыборки.Наименование);
|
||
ОбновитьЗначение(Строка.ИмяПрограммы, СтрокаВыборки.ИмяПрограммы);
|
||
ОбновитьЗначение(Строка.ТипПрограммы, СтрокаВыборки.ТипПрограммы);
|
||
ОбновитьЗначение(Строка.АлгоритмПодписи, СтрокаВыборки.АлгоритмПодписи);
|
||
ОбновитьЗначение(Строка.АлгоритмХеширования, СтрокаВыборки.АлгоритмХеширования);
|
||
ОбновитьЗначение(Строка.АлгоритмШифрования, СтрокаВыборки.АлгоритмШифрования);
|
||
ОбновитьЗначение(Строка.LinuxПутьКПрограмме, ПутиКПрограммам.Получить(СтрокаВыборки.Ссылка));
|
||
ОбновитьЗначение(Строка.НомерКартинки, ?(СтрокаВыборки.ПометкаУдаления, 4, 3));
|
||
ОбновитьЗначение(Строка.ЭтоВстроенныйКриптопровайдер, СтрокаВыборки.ЭтоВстроенныйКриптопровайдер);
|
||
ОбновитьЗначение(Строка.ТипРазмещения, СтрокаВыборки.ТипРазмещения + ?(СтрокаВыборки.ПометкаУдаления, 4, 0));
|
||
Если Строка.ЭтоВстроенныйКриптопровайдер И Не Строка.ПометкаУдаления Тогда
|
||
ОбновитьЗначение(Строка.РезультатПроверки, НСтр("ru = 'Доступен.'"));
|
||
ОбновитьЗначение(Строка.Установлена, Истина);
|
||
ИначеЕсли ЭлектроннаяПодписьСлужебныйКлиентСервер.РазмещениеСертификата(СтрокаВыборки.ТипРазмещения) = "ОблачнаяПодпись"
|
||
И Не Строка.ПометкаУдаления Тогда
|
||
ОбновитьЗначение(Строка.РезультатПроверки, НСтр("ru = 'Доступен.'"));
|
||
ОбновитьЗначение(Строка.Установлена, Истина);
|
||
КонецЕсли;
|
||
|
||
ОбработанныеСтроки.Вставить(Строка, Истина);
|
||
Индекс = Индекс + 1;
|
||
КонецЦикла;
|
||
|
||
Индекс = Программы.Количество()-1;
|
||
Пока Индекс >=0 Цикл
|
||
Строка = Программы.Получить(Индекс);
|
||
Если ОбработанныеСтроки.Получить(Строка) = Неопределено Тогда
|
||
Программы.Удалить(Индекс);
|
||
КонецЕсли;
|
||
Индекс = Индекс-1;
|
||
КонецЦикла;
|
||
|
||
КонецПроцедуры
|
||
|
||
&НаКлиентеНаСервереБезКонтекста
|
||
Процедура ОбновитьЗначение(СтароеЗначение, НовоеЗначение)
|
||
|
||
Если СтароеЗначение <> НовоеЗначение Тогда
|
||
СтароеЗначение = НовоеЗначение;
|
||
КонецЕсли;
|
||
|
||
КонецПроцедуры
|
||
|
||
&НаКлиенте
|
||
Процедура СохранитьНастройки()
|
||
|
||
СохраняемыеНастройки = Новый Структура;
|
||
СохраняемыеНастройки.Вставить("ДействияПриСохраненииСЭП", ДействияПриСохраненииСЭП);
|
||
СохраняемыеНастройки.Вставить("РасширениеДляЗашифрованныхФайлов", РасширениеДляЗашифрованныхФайлов);
|
||
СохраняемыеНастройки.Вставить("РасширениеДляФайловПодписи", РасширениеДляФайловПодписи);
|
||
СохраняемыеНастройки.Вставить("СохранятьСертификатВместеСПодписью", СохранятьСертификатВместеСПодписью);
|
||
СохранитьНастройкиНаСервере(СохраняемыеНастройки);
|
||
|
||
КонецПроцедуры
|
||
|
||
&НаСервереБезКонтекста
|
||
Процедура СохранитьНастройкиНаСервере(СохраняемыеНастройки)
|
||
|
||
ПерсональныеНастройки = ЭлектроннаяПодпись.ПерсональныеНастройки();
|
||
ЗаполнитьЗначенияСвойств(ПерсональныеНастройки, СохраняемыеНастройки);
|
||
ЭлектроннаяПодписьСлужебный.СохранитьПерсональныеНастройки(ПерсональныеНастройки);
|
||
|
||
// Требуется для обновления персональных настроек на клиенте.
|
||
ОбновитьПовторноИспользуемыеЗначения();
|
||
|
||
КонецПроцедуры
|
||
|
||
&НаСервереБезКонтекста
|
||
Процедура СохранитьПутьLinuxНаСервере(Программа, ПутьLinux)
|
||
|
||
ПерсональныеНастройки = ЭлектроннаяПодпись.ПерсональныеНастройки();
|
||
ПерсональныеНастройки.ПутиКПрограммамЭлектроннойПодписиИШифрования.Вставить(Программа, ПутьLinux);
|
||
ЭлектроннаяПодписьСлужебный.СохранитьПерсональныеНастройки(ПерсональныеНастройки);
|
||
|
||
// Требуется для обновления персональных настроек на клиенте.
|
||
ОбновитьПовторноИспользуемыеЗначения();
|
||
|
||
КонецПроцедуры
|
||
|
||
&НаСервереБезКонтекста
|
||
Процедура УстановитьПроверкуПодписейНаСервере(ПроверятьПодписиНаСервере)
|
||
|
||
Если Не ПравоДоступа("Изменение", Метаданные.Константы.ПроверятьЭлектронныеПодписиНаСервере)
|
||
Или Константы.ПроверятьЭлектронныеПодписиНаСервере.Получить() = ПроверятьПодписиНаСервере Тогда
|
||
|
||
Возврат;
|
||
КонецЕсли;
|
||
|
||
Константы.ПроверятьЭлектронныеПодписиНаСервере.Установить(ПроверятьПодписиНаСервере);
|
||
|
||
// Требуется для обновления общих настроек на сервере и на клиенте.
|
||
ОбновитьПовторноИспользуемыеЗначения();
|
||
|
||
КонецПроцедуры
|
||
|
||
&НаСервереБезКонтекста
|
||
Процедура УстановитьПодписаниеНаСервере(ПодписыватьНаСервере)
|
||
|
||
Если Не ПравоДоступа("Изменение", Метаданные.Константы.СоздаватьЭлектронныеПодписиНаСервере)
|
||
Или Константы.СоздаватьЭлектронныеПодписиНаСервере.Получить() = ПодписыватьНаСервере Тогда
|
||
|
||
Возврат;
|
||
КонецЕсли;
|
||
|
||
Константы.СоздаватьЭлектронныеПодписиНаСервере.Установить(ПодписыватьНаСервере);
|
||
|
||
// Требуется для обновления общих настроек на сервере и на клиенте.
|
||
ОбновитьПовторноИспользуемыеЗначения();
|
||
|
||
КонецПроцедуры
|
||
|
||
&НаКлиенте
|
||
Процедура СохранитьПутьКПрограмме()
|
||
|
||
ТекущиеДанные = Элементы.Программы.ТекущиеДанные;
|
||
Если БезПраваСохранениеДанныхПользователя Тогда
|
||
ТекущиеДанные.LinuxПутьКПрограмме = LinuxПутьКТекущейПрограмме;
|
||
ПоказатьПредупреждение(,
|
||
НСтр("ru = 'Невозможно сохранить путь к программе. Отсутствует право сохранения данных.
|
||
|Обратитесь к администратору.'"));
|
||
Иначе
|
||
СохранитьПутьLinuxНаСервере(ТекущиеДанные.Ссылка, ТекущиеДанные.LinuxПутьКПрограмме);
|
||
ОпределитьУстановленныеПрограммы();
|
||
КонецЕсли;
|
||
|
||
КонецПроцедуры
|
||
|
||
&НаКлиенте
|
||
Процедура УстановитьПодключитьСообщитьВерсиюКомпоненты(ПредложитьЗагрузить)
|
||
|
||
ПараметрыПодключения = ОбщегоНазначенияКлиент.ПараметрыПодключенияКомпоненты();
|
||
ПараметрыПодключения.ТекстПояснения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
|
||
НСтр("ru = 'Требуется установка компоненты %1'"), "ExtraCryptoAPI");
|
||
ПараметрыПодключения.ПредложитьЗагрузить = ПредложитьЗагрузить;
|
||
ПараметрыПодключения.ПредложитьУстановить = Истина;
|
||
|
||
ОписаниеКомпоненты = ЭлектроннаяПодписьСлужебныйКлиентСервер.ОписаниеКомпоненты();
|
||
|
||
ОбщегоНазначенияКлиент.ПодключитьКомпонентуИзМакета(
|
||
Новый ОписаниеОповещения("СообщитьРезультатПодключенияКомпоненты", ЭтотОбъект),
|
||
ОписаниеКомпоненты.ИмяОбъекта,
|
||
ОписаниеКомпоненты.ПолноеИмяМакета,
|
||
ПараметрыПодключения);
|
||
|
||
КонецПроцедуры
|
||
|
||
&НаКлиенте
|
||
Процедура СообщитьРезультатПодключенияКомпоненты(Результат, ДополнительныеПараметры) Экспорт
|
||
|
||
Если Результат.Подключено Тогда
|
||
Попытка
|
||
ОповещениеПослеПолученияВерсии = Новый ОписаниеОповещения("СообщитьВерсиюКомпонентыПослеПодключения", ЭтотОбъект);
|
||
Результат.ПодключаемыйМодуль.НачатьВызовПолучитьВерсию(ОповещениеПослеПолученияВерсии);
|
||
Возврат;
|
||
Исключение
|
||
ТекстОшибки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
|
||
НСтр("ru = 'Не удалось определить версию компоненты.
|
||
| %1'"), КраткоеПредставлениеОшибки(ИнформацияОбОшибке()));
|
||
ПоказатьПредупреждение(, ТекстОшибки);
|
||
КонецПопытки;
|
||
Иначе
|
||
Если ПустаяСтрока(Результат.ОписаниеОшибки) Тогда
|
||
// Пользователь отказался от установки.
|
||
ТекстОшибки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
|
||
НСтр("ru = 'Компонента %1 не установлена.'"), "ExtraCryptoAPI");
|
||
ПоказатьПредупреждение(, ТекстОшибки);
|
||
Иначе
|
||
// Установка не удалась, описание ошибки в Результат.ОписаниеОшибки.
|
||
ТекстОшибки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
|
||
НСтр("ru = 'Компонента %1 не установлена (%2).'"), "ExtraCryptoAPI", Результат.ОписаниеОшибки);
|
||
ПоказатьПредупреждение(, ТекстОшибки);
|
||
КонецЕсли;
|
||
КонецЕсли;
|
||
|
||
КонецПроцедуры
|
||
|
||
&НаКлиенте
|
||
Процедура СообщитьВерсиюКомпонентыПослеПодключения(Результат, Параметры, ДополнительныеПараметры) Экспорт
|
||
|
||
ТекстСообщения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
|
||
НСтр("ru = 'Установлена компонента %1 версии %2.'"), "ExtraCryptoAPI", Результат);
|
||
ПоказатьПредупреждение(, ТекстСообщения);
|
||
|
||
КонецПроцедуры
|
||
|
||
#КонецОбласти
|