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