- 000000001
+
+
+
+
@@ -1199,6 +1205,12 @@
+
+
+
@@ -1265,31 +1277,6 @@
-
-
-
-
-
-
-
-
-
-
-
- Необходима для того, чтобы передать получателям их пароли к рассылке отчетов. Для связи с получателем можно выбрать любой доступный вид контактной информации (например, телефон, предназначенный для SMS-рассылки).
+После
+отправки SMS с паролями, отображается результат с комментариями. В случае возникновения
+ошибок при отправке, рядом с Получателем появляется символ предупреждения например, предупреждает, что не указан номер телефона или не доступен.
См. также:
+Рассылка отчетов, которая содержит какую-либо конфиденциальную информацию, может проходить по открытым (незащищенным) каналам электронной почты и может быть небезопасна для получателей.
+Чтобы защитить данную рассылку, нужно зашифровать отчет с помощью Сертификата электронной подписи (сертификат открытого ключа) получателя, если он существует для соответствующего физического лица. В таком случае, только +получатель рассылки сможет расшифровать и посмотреть отчеты (с помощью закрытого ключа).
+При отправке Своего отчета для каждого получателя и при формировании Личной +рассылки автора, если архивация включена, можно установить как пароли, так и +сертификаты. При включении архивации сертификатом шифруется архив, а при +отключении шифруется каждый файл отчёта. В случае, если шифрование не используется, то будет доступна установка паролей на архивы для каждого получателя.
+Если установить флажок в поле Пароль установлен или Сертификат указан и выбрать значение Да, то в данном случае отобразятся получатели с уже установленным паролем или сертификатом. Если выбрать значение Нет, то будет сделан отбор получателей без установленного пароля или сертификата.
Если установить флажок в поле Пароль изменен или Сертификат изменен и выбрать значение Да, то отобразятся получатели с измененным паролем или сертификатом. Если выбрать значение Нет, то отобразятся те получатели, у которых пароль и сертификат не менялся.
Нажмите:
+Для информирования получателей об установке паролей можно воспользоваться SMS-рассылкой , также возможна печать
списка паролей , чтобы передать пароль лично.
Пароли не рекомендуется передавать по незащищенным каналам связи.
+Данные настройки сохранятся для всех последующих рассылок, в которых участвуют выбранные получатели.
+ + + + \ No newline at end of file diff --git a/SSL/src/Catalogs/РассылкиОтчетов/Forms/ПаролиШифрование/Module.bsl b/SSL/src/Catalogs/РассылкиОтчетов/Forms/ПаролиШифрование/Module.bsl new file mode 100644 index 000000000..f131a702f --- /dev/null +++ b/SSL/src/Catalogs/РассылкиОтчетов/Forms/ПаролиШифрование/Module.bsl @@ -0,0 +1,764 @@ +/////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 2023, ООО 1С-Софт +// Все права защищены. Эта программа и сопроводительные материалы предоставляются +// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) +// Текст лицензии доступен по ссылке: +// https://creativecommons.org/licenses/by/4.0/legalcode +/////////////////////////////////////////////////////////////////////////////////////////////////////// + +#Область ОписаниеПеременных + +&НаКлиенте +Перем ИзмененыПаролиСертификаты; + +#КонецОбласти + +#Область ОбработчикиСобытийФормы + +&НаСервере +Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) + + ТипПолучателейРассылки = Параметры.ТипПолучателейРассылки; + ВидПочтовогоАдресаПолучателей = Параметры.ВидПочтовогоАдресаПолучателей; + НаименованиеРассылки = Параметры.НаименованиеРассылки; + Ссылка = Параметры.Ссылка; + + ЗаполнитьСведенияОТипеПолучателей(Отказ); + ПодготовитьВидимостьЭлементов(Параметры.Архивировать); + ЗаполнитьОтборыПоУмолчанию(); + + Если ЭтоАдресВременногоХранилища(Параметры.АдресПолучателей) Тогда + ЗаполнитьПолучателейРассылкиСАдресомЭлектроннойПочты(ПолучитьИзВременногоХранилища(Параметры.АдресПолучателей)); + УдалитьИзВременногоХранилища(Параметры.АдресПолучателей); + КонецЕсли; + + ТаблицаПолучатели = РеквизитФормыВЗначение("Получатели"); + ЗначениеВРеквизитФормы(ТаблицаПолучатели, "ПолучателиБезОтборов"); + + Если ОбщегоНазначения.ЭтоМобильныйКлиент() Тогда + ПоложениеКоманднойПанели = ПоложениеКоманднойПанелиФормы.Верх; + Элементы.ЗаписатьИЗакрыть.Отображение = ОтображениеКнопки.Картинка; + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура ПриОткрытии(Отказ) + + ИзмененыПаролиСертификаты = Ложь; + +КонецПроцедуры + +&НаКлиенте +Процедура ПередЗакрытием(Отказ, ЗавершениеРаботы, ТекстПредупреждения, СтандартнаяОбработка) + + Если ИзмененыПаролиСертификаты Тогда + Отказ = Истина; + ТекстВопроса = СтроковыеФункцииКлиент.ФорматированнаяСтрока(НСтр( + "ru = 'Для получателей рассылки были изменены пароли и сертификаты для шифрования. Сохранить изменения? + | + |• Нажмите Да, чтобы сохранить изменения. + |• Нажмите Нет, чтобы закрыть без сохранения.'")); + + ПоказатьВопрос(Новый ОписаниеОповещения("ОтветСохранениеИзмененийПаролейСертификатов", ЭтотОбъект), ТекстВопроса, + РежимДиалогаВопрос.ДаНетОтмена, , КодВозвратаДиалога.Да); + КонецЕсли; + +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиСобытийЭлементовШапкиФормы + +&НаКлиенте +Процедура ИспользоватьОтборПарольУстановленПриИзменении(Элемент) + УстановитьОтборы(); +КонецПроцедуры + +&НаКлиенте +Процедура ОтборПарольУстановленПриИзменении(Элемент) + УстановитьОтборы(); +КонецПроцедуры + +&НаКлиенте +Процедура ИспользоватьОтборПарольИзмененПриИзменении(Элемент) + УстановитьОтборы(); +КонецПроцедуры + +&НаКлиенте +Процедура ОтборПарольИзмененПриИзменении(Элемент) + УстановитьОтборы(); +КонецПроцедуры + +&НаКлиенте +Процедура ИспользоватьОтборСертификатУказанПриИзменении(Элемент) + УстановитьОтборы(); +КонецПроцедуры + +&НаКлиенте +Процедура ОтборСертификатУказанПриИзменении(Элемент) + УстановитьОтборы(); +КонецПроцедуры + +&НаКлиенте +Процедура ИспользоватьОтборСертификатИзмененПриИзменении(Элемент) + УстановитьОтборы(); +КонецПроцедуры + +&НаКлиенте +Процедура ОтборСертификатИзмененПриИзменении(Элемент) + УстановитьОтборы(); +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиСобытийЭлементовТаблицыФормыПолучатели + +&НаКлиенте +Процедура ПолучателиПередНачаломДобавления(Элемент, Отказ, Копирование, Родитель, ЭтоГруппа, Параметр) + Отказ = Истина; +КонецПроцедуры + +&НаКлиенте +Процедура ПолучателиВыбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка) + + Получатель = Элементы.Получатели.ТекущиеДанные.Получатель; + + Если Элемент.ТекущийЭлемент = Элементы.ПолучателиПолучатель Или Элемент.ТекущийЭлемент = Элементы.ПолучателиАдресЭлектроннойПочты Тогда + Если ЗначениеЗаполнено(Получатель) Тогда + ПоказатьЗначение( , Получатель); + КонецЕсли; + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура ПолучателиПередУдалением(Элемент, Отказ) + Отказ = Истина; +КонецПроцедуры + +&НаКлиенте +Процедура ПолучателиПарольАрхиваПриИзменении(Элемент) + + СтрокаПолучатели = Элементы.Получатели.ТекущиеДанные; + СтрокаПолучатели.ПарольИзменен = Истина; + + ПараметрыОтбора = Новый Структура; + ПараметрыОтбора.Вставить("Получатель", СтрокаПолучатели.Получатель); + + СтрокиПолучателиБезОтбора = ПолучателиБезОтборов.НайтиСтроки(ПараметрыОтбора); + Если СтрокиПолучателиБезОтбора.Количество() > 0 Тогда + СтрокиПолучателиБезОтбора[0].ПарольАрхива = СтрокаПолучатели.ПарольАрхива; + СтрокиПолучателиБезОтбора[0].ПарольИзменен = Истина; + КонецЕсли; + + ИзмененыПаролиСертификаты = Истина; + + ОбновитьОтборы(); + +КонецПроцедуры + +&НаКлиенте +Процедура Подключаемый_ПолучателиСертификатДляШифрованияПриИзменении(Элемент) + + СтрокаПолучатели = Элементы.Получатели.ТекущиеДанные; + СтрокаПолучатели.СертификатИзменен = Истина; + + ПараметрыОтбора = Новый Структура; + ПараметрыОтбора.Вставить("Получатель", СтрокаПолучатели.Получатель); + + СтрокиПолучателиБезОтбора = ПолучателиБезОтборов.НайтиСтроки(ПараметрыОтбора); + Если СтрокиПолучателиБезОтбора.Количество() > 0 Тогда + СтрокаПолучателиБезОтбора = СтрокиПолучателиБезОтбора[0]; + СтрокаПолучателиБезОтбора["СертификатДляШифрования"] = СтрокаПолучатели["СертификатДляШифрования"]; + СтрокаПолучателиБезОтбора.СертификатИзменен = Истина; + КонецЕсли; + + ИзмененыПаролиСертификаты = Истина; + + ОбновитьОтборы(); + +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиКомандФормы + +&НаКлиенте +Процедура ЗаполнитьСертификаты(Команда) + + ТекстВопроса = СтроковыеФункцииКлиент.ФорматированнаяСтрока(НСтр( + "ru = 'Для получателей рассылки будут заполнены сертификаты для шифрования, если они существуют для соответствующего физического лица. + | + |• Нажмите Да, чтобы перезаполнить сертификаты, даже если они уже были указаны. + |• Нажмите Нет, чтобы заполнить только отсутствующие сертификаты.'")); + + ПоказатьВопрос( + Новый ОписаниеОповещения("ПередЗаполнениемСертификатов", ЭтотОбъект), ТекстВопроса, + РежимДиалогаВопрос.ДаНетОтмена, , КодВозвратаДиалога.Нет); + +КонецПроцедуры + +&НаКлиенте +Процедура УстановитьПароли(Команда) + + ТекстВопроса = СтроковыеФункцииКлиент.ФорматированнаяСтрока(НСтр( + "ru = 'Для получателей рассылки будут установлены пароли. + | + |• Нажмите Да, чтобы устанавливать новые пароли, даже если они уже были установлены. + |• Нажмите Нет, чтобы установить пароли, только при их отсутствии.'")); + + ПоказатьВопрос( + Новый ОписаниеОповещения("ПередУстановкойПаролей", ЭтотОбъект), ТекстВопроса, + РежимДиалогаВопрос.ДаНетОтмена, , КодВозвратаДиалога.Нет); + +КонецПроцедуры + +&НаКлиенте +Процедура СкрытьПоказатьПароли(Команда) + + Если Элементы.ПолучателиПарольАрхива.Видимость Тогда + Элементы.ПолучателиПарольАрхива.Видимость = Ложь; + Элементы.ПолучателиПарольАрхива2.Видимость = Истина; + Элементы.СкрытьПоказатьПароли.Картинка = БиблиотекаКартинок.ВводимыеСимволыСкрыты; + Иначе + Элементы.ПолучателиПарольАрхива.Видимость = Истина; + Элементы.ПолучателиПарольАрхива2.Видимость = Ложь; + Элементы.СкрытьПоказатьПароли.Картинка = БиблиотекаКартинок.ВводимыеСимволыВидны; + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура ПечатьСпискаПаролей(Команда) + + МассивПолучателей = Новый Массив; + Для Каждого Строка Из Получатели Цикл + ИнформацияПолучателя = Новый Структура; + ИнформацияПолучателя.Вставить("Получатель", Строка.Получатель); + ИнформацияПолучателя.Вставить("АдресЭлектроннойПочты", Строка.АдресЭлектроннойПочты); + ИнформацияПолучателя.Вставить("ПарольАрхива", Строка.ПарольАрхива); + МассивПолучателей.Добавить(ИнформацияПолучателя); + КонецЦикла; + + ПараметрыПечати = Новый Структура; + ПараметрыПечати.Вставить("Получатели", МассивПолучателей); + ПараметрыПечати.Вставить("ТипПолучателейРассылки", ТипПолучателейРассылки); + ПараметрыПечати.Вставить("ИдентификаторОбъектаМетаданных", ИдентификаторОбъектаМетаданных); + ПараметрыПечати.Вставить("НаименованиеРассылки", НаименованиеРассылки); + ПараметрыПечати.Вставить("Ссылка", Ссылка); + + ПараметрКоманды = Новый Массив; + ПараметрКоманды.Добавить(Ссылка); + + МодульУправлениеПечатьюКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("УправлениеПечатьюКлиент"); + МодульУправлениеПечатьюКлиент.ВыполнитьКомандуПечати("Справочник.РассылкиОтчетов", "ПаролиРассылокОтчетов", + ПараметрКоманды, ЭтотОбъект, ПараметрыПечати); + +КонецПроцедуры + +&НаКлиенте +Процедура ОтправитьПаролиПоSMS(Команда) + + ПараметрыФормы = Новый Структура; + ПараметрыФормы.Вставить("АдресПолучателей", ПоместитьПолучателейВХранилище()); + ПараметрыФормы.Вставить("ТипПолучателейРассылки", ТипПолучателейРассылки); + ПараметрыФормы.Вставить("Ссылка", Ссылка); + ПараметрыФормы.Вставить("НаименованиеРассылки", НаименованиеРассылки); + ПараметрыФормы.Вставить("ИдентификаторОбъектаМетаданных", ИдентификаторОбъектаМетаданных); + ОткрытьФорму("Справочник.РассылкиОтчетов.Форма.SMSРассылкаПаролей", ПараметрыФормы, ЭтотОбъект, , , , , + РежимОткрытияОкнаФормы.БлокироватьОкноВладельца); + +КонецПроцедуры + +&НаКлиенте +Процедура ЗаписатьИЗакрыть(Команда) + ЗаписатьПаролиИСертификатыДляШифрованияВБезопасноеХранилище(); + ИзмененыПаролиСертификаты = Ложь; + Закрыть(); +КонецПроцедуры + +#КонецОбласти + +#Область СлужебныеПроцедурыИФункции + +&НаКлиенте +Процедура ОбновитьОтборы() + + Если ИспользоватьОтборПарольУстановлен Или ИспользоватьОтборПарольИзменен Или ИспользоватьОтборСертификатУказан + Или ИспользоватьОтборСертификатИзменен Тогда + УстановитьОтборы(); + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура ПередЗаполнениемСертификатов(Результат, Параметры) Экспорт + + Если Результат = КодВозвратаДиалога.Да Тогда + ЗаполнитьСертификатыПолучателейНаСервере(Истина); + ИзмененыПаролиСертификаты = Истина; + ИначеЕсли Результат = КодВозвратаДиалога.Нет Тогда + ЗаполнитьСертификатыПолучателейНаСервере(Ложь); + ИзмененыПаролиСертификаты = Истина; + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура ПередУстановкойПаролей(Результат, Параметры) Экспорт + + Если Результат = КодВозвратаДиалога.Да Тогда + УстановитьПаролиПолучателейНаСервере(Истина); + ИзмененыПаролиСертификаты = Истина; + ИначеЕсли Результат = КодВозвратаДиалога.Нет Тогда + УстановитьПаролиПолучателейНаСервере(Ложь); + ИзмененыПаролиСертификаты = Истина; + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура ОтветСохранениеИзмененийПаролейСертификатов(Результат, Параметры) Экспорт + + Если Результат = КодВозвратаДиалога.Да Тогда + ЗаписатьПаролиИСертификатыДляШифрованияВБезопасноеХранилище(); + ИзмененыПаролиСертификаты = Ложь; + ИначеЕсли Результат = КодВозвратаДиалога.Нет Тогда + ИзмененыПаролиСертификаты = Ложь; + Закрыть(); + КонецЕсли; + +КонецПроцедуры + +&НаСервере +Процедура ЗаполнитьСертификатыПолучателейНаСервере(ПерезаполнятьСертификаты) + + ТаблицаПолучатели = РеквизитФормыВЗначение("Получатели"); + + Если НЕ ПерезаполнятьСертификаты Тогда + МассивПолучателей = Новый Массив; + Для Каждого СтрокаПолучатели Из ТаблицаПолучатели Цикл + Если НЕ ЗначениеЗаполнено(СтрокаПолучатели.СертификатДляШифрования) Тогда + МассивПолучателей.Добавить(СтрокаПолучатели.Получатель); + КонецЕсли; + КонецЦикла; + Иначе + // Очистка сертификатов + СертификатыПустаяСсылка = Новый (ТаблицаПолучатели.Колонки["СертификатДляШифрования"].ТипЗначения.Типы()[0]); + Для Каждого СтрокаПолучатели Из Получатели Цикл + Если ЗначениеЗаполнено(СтрокаПолучатели.СертификатДляШифрования) Тогда + СтрокаПолучатели.СертификатИзменен = Истина; + СтрокаПолучатели["СертификатДляШифрования"] = СертификатыПустаяСсылка; + + ПараметрыОтбора = Новый Структура; + ПараметрыОтбора.Вставить("Получатель", СтрокаПолучатели.Получатель); + + СтрокиПолучателиБезОтбора = ПолучателиБезОтборов.НайтиСтроки(ПараметрыОтбора); + Если СтрокиПолучателиБезОтбора.Количество() > 0 Тогда + СтрокаПолучателиБезОтбора = СтрокиПолучателиБезОтбора[0]; + СтрокаПолучателиБезОтбора["СертификатДляШифрования"] = СертификатыПустаяСсылка; + СтрокаПолучателиБезОтбора.СертификатИзменен = Истина; + КонецЕсли; + КонецЕсли; + КонецЦикла; + + МассивПолучателей = ТаблицаПолучатели.ВыгрузитьКолонку("Получатель"); + КонецЕсли; + + МодульЭлектроннаяПодписьСлужебный = ОбщегоНазначения.ОбщийМодуль("ЭлектроннаяПодписьСлужебный"); + + МассивТипов = Новый Массив; + МассивТипов.Добавить(Тип("СправочникСсылка.Пользователи")); + МассивТипов.Добавить(Тип("СправочникСсылка.ГруппыПользователей")); + + ВыборкаФизическихЛиц = Ложь; + Если ТипПолучателейРассылки = Метаданные.ОпределяемыеТипы.ФизическоеЛицо.Тип Тогда + Выборка = МодульЭлектроннаяПодписьСлужебный.СертификатыФизическихЛиц(МассивПолучателей); + ВыборкаФизическихЛиц = Истина; + ИначеЕсли ТипПолучателейРассылки = Новый ОписаниеТипов(МассивТипов) Тогда + Выборка = МодульЭлектроннаяПодписьСлужебный.СертификатыФизическихЛицПользователей(МассивПолучателей); + Иначе + Возврат; + КонецЕсли; + + Пока Выборка.Следующий() Цикл + ПараметрыОтбора = Новый Структура; + ПараметрыОтбора.Вставить("Получатель", ?(ВыборкаФизическихЛиц, Выборка.ФизическоеЛицо, Выборка.Пользователь)); + + СтрокиПолучателиБезОтбора = ПолучателиБезОтборов.НайтиСтроки(ПараметрыОтбора); + Если СтрокиПолучателиБезОтбора.Количество() > 0 Тогда + СтрокаПолучателиБезОтбора = СтрокиПолучателиБезОтбора[0]; + СтрокаПолучателиБезОтбора["СертификатДляШифрования"] = Выборка.Сертификат; + СтрокаПолучателиБезОтбора.СертификатИзменен = Истина; + КонецЕсли; + КонецЦикла; + + УстановитьОтборы(); + +КонецПроцедуры + +&НаСервере +Процедура УстановитьПаролиПолучателейНаСервере(ПереустанавливатьПароли) + + СвойстваПароля = Пользователи.СвойстваПароля(); + СвойстваПароля.НаименьшаяДлина = 8; + СвойстваПароля.Сложный = Истина; + СвойстваПароля.УчестьНастройки = "ДляПользователей"; + + Для Каждого СтрокаПолучатели Из Получатели Цикл + + Если НЕ ПереустанавливатьПароли И ЗначениеЗаполнено(СтрокаПолучатели.ПарольАрхива) Тогда + Продолжить; + КонецЕсли; + + СтрокаПолучатели.ПарольАрхива = Пользователи.СоздатьПароль(СвойстваПароля); + СтрокаПолучатели.ПарольИзменен = Истина; + + ПараметрыОтбора = Новый Структура; + ПараметрыОтбора.Вставить("Получатель", СтрокаПолучатели.Получатель); + + СтрокиПолучателиБезОтбора = ПолучателиБезОтборов.НайтиСтроки(ПараметрыОтбора); + Если СтрокиПолучателиБезОтбора.Количество() > 0 Тогда + ЗаполнитьЗначенияСвойств(СтрокиПолучателиБезОтбора[0], СтрокаПолучатели); + КонецЕсли; + + КонецЦикла; + + УстановитьОтборы(); + +КонецПроцедуры + +&НаСервере +Процедура УстановитьОтборы() + + ТаблицаПолучателиБезОтборов = РеквизитФормыВЗначение("ПолучателиБезОтборов"); + + Построитель = Новый ПостроительЗапроса; + Построитель.ИсточникДанных = Новый ОписаниеИсточникаДанных(ТаблицаПолучателиБезОтборов); + + Отбор = Построитель.Отбор; + + УстановленПароль = Отбор.Добавить("ПарольАрхива"); + УстановленПароль.ВидСравнения = ?(ОтборПарольУстановлен, ВидСравнения.НеРавно, ВидСравнения.Равно); + УстановленПароль.Значение = ""; + УстановленПароль.Использование = ИспользоватьОтборПарольУстановлен; + + НовыйПароль = Отбор.Добавить("ПарольИзменен"); + НовыйПароль.ВидСравнения = ВидСравнения.Равно; + НовыйПароль.Значение = ОтборПарольИзменен; + НовыйПароль.Использование = ИспользоватьОтборПарольИзменен; + + Если РассылкаОтчетов.ДоступноШифрованиеВложений() Тогда + ЗаполненСертификат = Отбор.Добавить("СертификатДляШифрования"); + ЗаполненСертификат.ВидСравнения = ?(ОтборСертификатУказан, ВидСравнения.НеРавно, ВидСравнения.Равно); + ЗаполненСертификат.Значение = Новый (ТаблицаПолучателиБезОтборов.Колонки["СертификатДляШифрования"].ТипЗначения.Типы()[0]); + ЗаполненСертификат.Использование = ИспользоватьОтборСертификатУказан; + + НовыйСертификат = Отбор.Добавить("СертификатИзменен"); + НовыйСертификат.ВидСравнения = ВидСравнения.Равно; + НовыйСертификат.Значение = ОтборСертификатИзменен; + НовыйСертификат.Использование = ИспользоватьОтборСертификатИзменен; + КонецЕсли; + + Построитель.Выполнить(); + ТаблицаРезультат = Построитель.Результат.Выгрузить(); + + ЗначениеВРеквизитФормы(ТаблицаРезультат, "Получатели"); + +КонецПроцедуры + +&НаСервере +Процедура ЗаполнитьПолучателейРассылкиСАдресомЭлектроннойПочты(ТаблицаПолучателей) + + ПолучателиМетаданные = ОбщегоНазначения.ОбъектМетаданныхПоИдентификатору(ИдентификаторОбъектаМетаданных, Ложь); + ТипПолучателей = ИдентификаторОбъектаМетаданных.КлючОбъектаМетаданных.Получить(); + + Запрос = Новый Запрос; + + Если ТипПолучателей = Тип("СправочникСсылка.Пользователи") Тогда + + ТекстЗапроса = + "ВЫБРАТЬ + | ТаблицаПолучателей.Получатель, + | ТаблицаПолучателей.Исключен + |ПОМЕСТИТЬ ТаблицаПолучателей + |ИЗ + | &ТаблицаПолучателей КАК ТаблицаПолучателей + |; + | + |//////////////////////////////////////////////////////////////////////////////// + |ВЫБРАТЬ РАЗРЕШЕННЫЕ РАЗЛИЧНЫЕ + | Пользователь.Ссылка КАК Получатель, + | МАКСИМУМ(ТаблицаПолучателей.Исключен) КАК Исключен, + | Пользователи.Наименование + |ПОМЕСТИТЬ Получатели + |ИЗ + | ТаблицаПолучателей КАК ТаблицаПолучателей + | ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.СоставыГруппПользователей КАК СоставыГруппПользователей + | ПО СоставыГруппПользователей.ГруппаПользователей = ТаблицаПолучателей.Получатель + | ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Пользователи КАК Пользователи + | ПО Пользователи.Ссылка = СоставыГруппПользователей.Пользователь + |ГДЕ + | НЕ Пользователи.ПометкаУдаления + | И НЕ Пользователи.Недействителен + | И НЕ Пользователи.Служебный + |СГРУППИРОВАТЬ ПО + | Пользователь.Ссылка, + | Пользователи.Наименование + |; + | + |//////////////////////////////////////////////////////////////////////////////// + |ВЫБРАТЬ РАЗРЕШЕННЫЕ РАЗЛИЧНЫЕ + | Получатели.Получатель КАК Получатель, + | Контакты.Представление КАК EMail, + | Получатели.Наименование КАК Наименование + |ИЗ + | Получатели КАК Получатели + | ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Пользователи.КонтактнаяИнформация КАК Контакты + | ПО Контакты.Ссылка = Получатели.Получатель + | И Контакты.Вид = &ВидПочтовогоАдресаПолучателей + |ГДЕ + | НЕ Получатели.Исключен + | + |УПОРЯДОЧИТЬ ПО + | Наименование + |ИТОГИ + | МАКСИМУМ(Наименование) КАК Наименование + |ПО + | Получатель"; + + Иначе + + ТекстЗапроса = + "ВЫБРАТЬ + | ТаблицаПолучателей.Получатель, + | ТаблицаПолучателей.Исключен + |ПОМЕСТИТЬ ТаблицаПолучателей + |ИЗ + | &ТаблицаПолучателей КАК ТаблицаПолучателей + |; + | + |//////////////////////////////////////////////////////////////////////////////// + |ВЫБРАТЬ РАЗРЕШЕННЫЕ РАЗЛИЧНЫЕ + | Получатели.Ссылка КАК Получатель, + | Контакты.Представление КАК EMail, + | Получатели.Наименование КАК Наименование + |ИЗ + | Справочник.Пользователи КАК Получатели + | ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Пользователи.КонтактнаяИнформация КАК Контакты + | ПО Контакты.Ссылка = Получатели.Ссылка + | И Контакты.Вид = &ВидПочтовогоАдресаПолучателей + |ГДЕ + | Получатели.Ссылка В ИЕРАРХИИ + | (ВЫБРАТЬ + | Получатель + | ИЗ + | ТаблицаПолучателей + | ГДЕ + | НЕ Исключен) + | И НЕ Получатели.Ссылка В ИЕРАРХИИ + | (ВЫБРАТЬ + | Получатель + | ИЗ + | ТаблицаПолучателей + | ГДЕ + | Исключен) + | И НЕ Получатели.ПометкаУдаления + | И &ЭтоНеГруппа + | + |УПОРЯДОЧИТЬ ПО + | Наименование + |ИТОГИ + | МАКСИМУМ(Наименование) КАК Наименование + |ПО + | Получатель"; + + Если Не ПолучателиМетаданные.Иерархический Тогда + // Не иерархический + ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "В ИЕРАРХИИ", "В"); + ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "И &ЭтоНеГруппа", ""); + ИначеЕсли ПолучателиМетаданные.ВидИерархии = Метаданные.СвойстваОбъектов.ВидИерархии.ИерархияЭлементов Тогда + // Иерархия элементов + ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "И &ЭтоНеГруппа", ""); + Иначе + // Иерархия групп + ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "И &ЭтоНеГруппа", "И НЕ Получатели.ЭтоГруппа"); + КонецЕсли; + + ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "Справочник.Пользователи", ПолучателиМетаданные.ПолноеИмя()); + + КонецЕсли; + + Запрос.УстановитьПараметр("ТаблицаПолучателей", ТаблицаПолучателей); + Если ЗначениеЗаполнено(ВидПочтовогоАдресаПолучателей) Тогда + Запрос.УстановитьПараметр("ВидПочтовогоАдресаПолучателей", ВидПочтовогоАдресаПолучателей); + Иначе + ТекстЗапроса = СтрЗаменить(ТекстЗапроса, ".Вид = &ВидПочтовогоАдресаПолучателей", ".Тип = &ТипПочтовогоАдреса"); + Запрос.УстановитьПараметр("ТипПочтовогоАдреса", Перечисления.ТипыКонтактнойИнформации.АдресЭлектроннойПочты); + КонецЕсли; + Запрос.Текст = ТекстЗапроса; + + Попытка + РезультатЗапроса = Запрос.Выполнить(); + ВыборкаПолучатели = РезультатЗапроса.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам); + Исключение + Возврат; + КонецПопытки; + + МассивПолучателей = Новый Массив; + Пока ВыборкаПолучатели.Следующий() Цикл + Выборка = ВыборкаПолучатели.Выбрать(); + СтрокаПолучатели = Получатели.Добавить(); + СтрокаПолучатели.Получатель = ВыборкаПолучатели.Получатель; + МассивПолучателей.Добавить(СтрокаПолучатели.Получатель); + Пока Выборка.Следующий() Цикл + ТекущийАдрес = ?(ПустаяСтрока(СтрокаПолучатели.АдресЭлектроннойПочты), "", + СтрокаПолучатели.АдресЭлектроннойПочты + "; "); + СтрокаПолучатели.АдресЭлектроннойПочты = ТекущийАдрес + Выборка.EMail; + КонецЦикла; + КонецЦикла; + + ЗаполнитьПаролиАрхиваИСертификатыДляШифрования(МассивПолучателей); + +КонецПроцедуры + +&НаСервере +Процедура ЗаполнитьСведенияОТипеПолучателей(Отказ) + ТаблицаТиповПолучателей = РассылкаОтчетовПовтИсп.ТаблицаТиповПолучателей(); + Найденные = ТаблицаТиповПолучателей.НайтиСтроки(Новый Структура("ТипПолучателей", ТипПолучателейРассылки)); + Если Найденные.Количество() = 1 Тогда + СтрокаПолучатель = Найденные[0]; + ИдентификаторОбъектаМетаданных = СтрокаПолучатель.ИдентификаторОбъектаМетаданных; + Иначе + Отказ = Истина; + КонецЕсли; +КонецПроцедуры + +&НаСервере +Процедура ЗаполнитьПаролиАрхиваИСертификатыДляШифрования(СписокПолучателей) + + УстановитьПривилегированныйРежим(Истина); + ПолучателиПароли = ОбщегоНазначения.ПрочитатьДанныеВладельцевИзБезопасногоХранилища(СписокПолучателей, "ПарольАрхива"); + УстановитьПривилегированныйРежим(Ложь); + + Для Каждого Получатель Из ПолучателиПароли Цикл + СтрокиПолучатели = Получатели.НайтиСтроки(Новый Структура("Получатель", Получатель.Ключ)); + Если СтрокиПолучатели.Количество() > 0 Тогда + СтрокиПолучатели[0].ПарольАрхива = Получатель.Значение; + КонецЕсли; + КонецЦикла; + + Если РассылкаОтчетов.ДоступноШифрованиеВложений() Тогда + ПолучателиСертификаты = РассылкаОтчетов.ПолучитьСертификатыШифрованияПолучателейРассылки(СписокПолучателей); + Для Каждого СтрокаПолучатели Из ПолучателиСертификаты Цикл + СтрокиПолучатели = Получатели.НайтиСтроки(Новый Структура("Получатель", СтрокаПолучатели.ПолучательРассылки)); + Если СтрокиПолучатели.Количество() > 0 Тогда + ЗаполнитьЗначенияСвойств(СтрокиПолучатели[0], СтрокаПолучатели); + КонецЕсли; + КонецЦикла; + КонецЕсли; + +КонецПроцедуры + +&НаСервере +Процедура ЗаписатьПаролиИСертификатыДляШифрованияВБезопасноеХранилище() + + ДоступноШифрованиеВложений = РассылкаОтчетов.ДоступноШифрованиеВложений(); + + Для Каждого Строка Из ПолучателиБезОтборов Цикл + Если Строка.ПарольИзменен Тогда + УстановитьПривилегированныйРежим(Истина); + ОбщегоНазначения.ЗаписатьДанныеВБезопасноеХранилище(Строка.Получатель, Строка.ПарольАрхива, "ПарольАрхива"); + УстановитьПривилегированныйРежим(Ложь); + КонецЕсли; + Если ДоступноШифрованиеВложений И Строка.СертификатИзменен Тогда + РегистрыСведений.СертификатыПолучателейРассылкиОтчетов.СохранитьСертификатДляПолучателяРассылки( + Строка.Получатель, Строка.СертификатДляШифрования); + КонецЕсли; + КонецЦикла; + +КонецПроцедуры + +&НаСервере +Процедура ПодготовитьВидимостьЭлементов(Архивировать) + + АвтоЗаголовок = Ложь; + + Если РассылкаОтчетов.ДоступноШифрованиеВложений() Тогда + МассивДобавляемыхРеквизитов = Новый Массив; + МассивДобавляемыхРеквизитов.Добавить(Новый РеквизитФормы("СертификатДляШифрования", + Новый ОписаниеТипов("СправочникСсылка.СертификатыКлючейЭлектроннойПодписиИШифрования"), "Получатели", НСтр( + "ru = 'Сертификат для шифрования'"))); + МассивДобавляемыхРеквизитов.Добавить(Новый РеквизитФормы("СертификатДляШифрования", + Новый ОписаниеТипов("СправочникСсылка.СертификатыКлючейЭлектроннойПодписиИШифрования"), "ПолучателиБезОтборов", НСтр( + "ru = 'Сертификат для шифрования'"))); + + ИзменитьРеквизиты(МассивДобавляемыхРеквизитов); + + Элемент = Элементы.Добавить("ПолучателиСертификатДляШифрования", Тип("ПолеФормы"), Элементы.Получатели); + Элемент.Заголовок = НСтр("ru = 'Сертификат для шифрования'"); + Элемент.ПутьКДанным = "Получатели.СертификатДляШифрования"; + Элемент.Вид = ВидПоляФормы.ПолеВвода; + Элемент.РежимРедактирования = РежимРедактированияКолонки.ВходПриВводе; + Элемент.Ширина = 30; + Элемент.КартинкаШапки = БиблиотекаКартинок.Изменить; + Элемент.ЦветФона = ЦветаСтиля.ФонУправляющегоПоля; + Элемент.УстановитьДействие("ПриИзменении", "Подключаемый_ПолучателиСертификатДляШифрованияПриИзменении"); + + МассивТипов = Новый Массив; + МассивТипов.Добавить(Тип("СправочникСсылка.Пользователи")); + МассивТипов.Добавить(Тип("СправочникСсылка.ГруппыПользователей")); + + ОписаниеТиповФизическоеЛицо = Метаданные.ОпределяемыеТипы.ФизическоеЛицо.Тип; + Если ОписаниеТиповФизическоеЛицо.Типы()[0] = Тип("Строка") Или (ТипПолучателейРассылки + <> ОписаниеТиповФизическоеЛицо И ТипПолучателейРассылки <> Новый ОписаниеТипов(МассивТипов)) Тогда + Элементы.ЗаполнитьСертификаты.Видимость = Ложь; + КонецЕсли; + + Заголовок = ?(Архивировать, НСтр("ru = 'Пароли и шифрование для рассылки отчетов'"), НСтр( + "ru = 'Шифрование для рассылки отчетов'")); + + Иначе + Элементы.ГруппаОтборыСертификат.Видимость = Ложь; + Элементы.ЗаполнитьСертификаты.Видимость = Ложь; + Заголовок = НСтр("ru = 'Пароли для рассылки отчетов'"); + КонецЕсли; + + Если НЕ ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.Печать") Тогда + Элементы.ПечатьСпискаПаролей.Видимость = Ложь; + КонецЕсли; + + Если НЕ ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.ОтправкаSMS") Тогда + Элементы.ОтправитьПаролиПоSMS.Видимость = Ложь; + КонецЕсли; + + Если НЕ Архивировать Тогда + Элементы.ГруппаОтборыПароль.Видимость = Ложь; + Элементы.УстановитьПароли.Видимость = Ложь; + Элементы.ПечатьСпискаПаролей.Видимость = Ложь; + Элементы.ОтправитьПаролиПоSMS.Видимость = Ложь; + Элементы.СкрытьПоказатьПароли.Видимость = Ложь; + Элементы.ПолучателиПарольАрхива.Видимость = Ложь; + ИначеЕсли НЕ ПравоДоступа("Изменение", Метаданные.Справочники.РассылкиОтчетов) Тогда + Элементы.СкрытьПоказатьПароли.Видимость = Ложь; + КонецЕсли; + +КонецПроцедуры + +&НаСервере +Процедура ЗаполнитьОтборыПоУмолчанию() + + ОтборПарольУстановлен = Истина; + ОтборПарольИзменен = Истина; + ОтборСертификатУказан = Истина; + ОтборСертификатИзменен = Истина; + +КонецПроцедуры + +&НаСервере +Функция ПоместитьПолучателейВХранилище() + Возврат ПоместитьВоВременноеХранилище(Получатели.Выгрузить( , "Получатель, ПарольАрхива"), УникальныйИдентификатор); +КонецФункции + +#КонецОбласти diff --git a/SSL/src/Catalogs/РассылкиОтчетов/Forms/ПолучателиРассылки/Form.form b/SSL/src/Catalogs/РассылкиОтчетов/Forms/ПолучателиРассылки/Form.form index 10f53d7d8..6ccfaff5d 100644 --- a/SSL/src/Catalogs/РассылкиОтчетов/Forms/ПолучателиРассылки/Form.form +++ b/SSL/src/Catalogs/РассылкиОтчетов/Forms/ПолучателиРассылки/Form.form @@ -81,9 +81,7 @@Для контроля результатов рассылки можно использовать:
Предназначен для подготовки рассылок с целью автоматического формирования отчетов и доставки сформированных отчетов получателям.
Открывается по команде Рассылки отчетов из раздела Сервисные подсистемы.
-Программа содержит большое количество отчетов. Зачастую пользователям нужно периодически получать один и тот же отчет. Например, в начале каждого рабочего дня менеджеру нужно видеть текущее состояние взаиморасчетов со своими клиентами. Или в конце каждой недели директор хочет видеть состояние основных финансовых показателей фирмы.
-Рассылка отчетов позволяет автоматизировать этот процесс так, что, не открывая программу, можно получить в нужное время готовый отчет на свою электронную почту или в определенный каталог в виде файла.
-Возможность создать несколько рассылок упрощает работу. Каждая отдельная рассылка, как правило, объединяет несколько отчетов, или несколько получателей, или имеет особенную периодичность доставки.
-Например, одна рассылка может быть предназначена исключительно для директора и руководства фирмы. Другая рассылка может содержать отчеты, которые ежедневно отправляются некоторым сотрудникам. Третья рассылка может содержать отчеты, формируемые для контрагентов по их требованию.
+Нередко у пользователей возникает потребность в получении +того или иного отчета в определенный момент времени. Например, в начале каждого рабочего дня +менеджеру нужно узнать информацию о текущем состоянии взаиморасчетов со своими клиентами. +Или в конце каждой недели директор хочет видеть состояние основных финансовых +показателей фирмы, но редко заходит в программу. Также, при выплате заработной +платы, работодатель обязан извещать в письменной форме каждого сотрудника.
+Рассылка отчетов позволяет автоматизировать этот
+процесс так, что, не открывая программу, можно получить в нужное время готовый
+отчет на свою электронную почту или в определенный каталог в виде файла.
Возможность создать несколько разных рассылок упрощает
+работу. Каждая отдельная рассылка, как правило, логически объединяет несколько
+отчетов, или несколько получателей, или имеет особенную периодичность доставки.
+ + + + + + + +
+Например, одна рассылка может быть
+предназначена исключительно для директора и руководства фирмы. Другая рассылка
+может содержать отчеты, которые отправляются сотрудникам. Третья рассылка может
+содержать отчеты, формируемые для контрагентов по их требованию.
Подготовленные рассылки отчетов могут выполняться автоматически по расписанию с помощью регламентного задания "Рассылка отчетов" или запускаться вручную.
В списке выводится:
Русский
+ | Примечание Для использования томов, расположенных на сетевых дисках, сервер 1С:Предприятия 8 нужно запускать от лица доменного пользователя вида domain1\user1, имеющего права доступа к тому, указанному в виде UNC пути. Этот пользователь должен входить в группу Users локального компьютера,иметь права "Run as service" и "Run as batch job" и права на каталоги, в которых сервер 1С:Предприятия 8 хранит служебные файлы - журнал регистрации, каталог временных файлов и пр. |
Предназначена для настройки кнопки запуска приложения для связи со специалистом онлайн-поддержки (1С-Коннект) на начальной странице. Настройки хранятся для каждого пользователя с привязкой к рабочему месту.
-Открывается по команде Настройка онлайн-поддержки в разделе Администрирование - Интернет-поддержка и сервисы - Онлайн-поддержка.
-Запуск одной и той же базы под веб-клиентом и тонким клиентом потребует две процедуры настройки.
-На первом шаге предлагается скачать исполняемый файл с сайта компании. При нажатии на ссылку Скачать приложение будет произведено скачивание программы в браузере, установленном по умолчанию. Полученный архив распакуйте в удобное для вас место.
-Также необходимо получить регистрацию на сайте 1С-Коннект. Для этого воспользуйтесь ссылкой Зарегистрироваться в сервисе онлайн-поддержки (1С-Коннект).
-На втором шаге задайте настройки:
-На третьем шаге задайте настройки:
-Нажмите Сохранить, для того чтобы внесенные изменения вступили в силу.
-Для вашего удобства выведены ссылки на сайт компании для получения помощи. Для того чтобы ознакомиться с требованиями к компьютеру и списком необходимых настроек, перейдите по ссылке Технические требования.
\ No newline at end of file diff --git a/SSL/src/CommonForms/НастройкаОнлайнПоддержки/Module.bsl b/SSL/src/CommonForms/НастройкаОнлайнПоддержки/Module.bsl deleted file mode 100644 index 52b6ff4d6..000000000 --- a/SSL/src/CommonForms/НастройкаОнлайнПоддержки/Module.bsl +++ /dev/null @@ -1,149 +0,0 @@ -/////////////////////////////////////////////////////////////////////////////////////////////////////// -// Copyright (c) 2023, ООО 1С-Софт -// Все права защищены. Эта программа и сопроводительные материалы предоставляются -// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0) -// Текст лицензии доступен по ссылке: -// https://creativecommons.org/licenses/by/4.0/legalcode -/////////////////////////////////////////////////////////////////////////////////////////////////////// - -#Область ОбработчикиСобытийФормы - -&НаСервере -Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) - - // Заполнение элементов формы согласно предыдущих настроек текущего пользователя. - Результат = ВызовОнлайнПоддержкиВызовСервера.НастройкиУчетнойЗаписиПользователя(); - ВидимостьКнопки = Результат.ВидимостьКнопкиВызовОнлайнПоддержки; - СохранитьЛогинПароль = Результат.ИспользоватьЛП; - Элементы.Логин.Доступность = Результат.ИспользоватьЛП; - Элементы.Пароль.Доступность = Результат.ИспользоватьЛП; - Логин = Результат.Логин; - Пароль = Результат.Пароль; - СистемнаяИнформация = Новый СистемнаяИнформация; - ИдентификаторКлиента = СистемнаяИнформация.ИдентификаторКлиента; - ПутьКФайлу = ВызовОнлайнПоддержкиВызовСервера.РасположениеИсполняемогоФайла(ИдентификаторКлиента); - - ИнициализироватьЭлементыФормы(ЭтотОбъект); - -КонецПроцедуры - -&НаКлиенте -Процедура ПриОткрытии(Отказ) - Если НЕ ОбщегоНазначенияКлиент.ЭтоWindowsКлиент() Тогда - ПоказатьПредупреждение(,НСтр("ru = 'Для работы с приложением необходима операционная система Microsoft Windows.'")); - Отказ = Истина; - КонецЕсли; - Если ПутьКФайлу="" Тогда - ПутьКФайлу = ВызовОнлайнПоддержкиКлиент.ПутьКИсполняемомуФайлуИзРеестраWindows(); - КонецЕсли; -КонецПроцедуры - -#КонецОбласти - -#Область ОбработчикиСобытийЭлементовШапкиФормы - -&НаКлиенте -Процедура СохранитьЛогинПарольПриИзменении(Элемент) - - Доступ = СохранитьЛогинПароль; - Элементы.Логин.Доступность = Доступ; - Элементы.Пароль.Доступность = Доступ; - -КонецПроцедуры - -&НаКлиенте -Процедура ВидимостьКнопкиПриИзменении(Элемент) - ИнициализироватьЭлементыФормы(ЭтотОбъект); -КонецПроцедуры - -&НаКлиенте -Процедура ПутьКФайлуНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка) - Оповещение = Новый ОписаниеОповещения("ПутьКФайлуНачалоВыбораЗавершение", ЭтотОбъект); - ВызовОнлайнПоддержкиКлиент.ВыбратьФайлВызовОнлайнПоддержки(Оповещение, ПутьКФайлу); -КонецПроцедуры - -#КонецОбласти - -#Область ОбработчикиКомандФормы - -&НаКлиенте -Процедура Сохранить(Команда) - - ИдентификаторКлиента = ВызовОнлайнПоддержкиКлиент.ИдентификаторКлиента(); - СохранитьНастройкиПользователяВХранилище(Логин, Пароль, СохранитьЛогинПароль, ВидимостьКнопки); - НовыйПутьКИсполняемомуФайлу(ИдентификаторКлиента, ПутьКФайлу); - // Оповестим форму кнопки для управления видимостью кнопки. - Оповестить("СохранениеНастроекВызовОнлайнПоддержки"); - ПриИзмененииНастроек(); - ОбновитьИнтерфейс(); - Закрыть(); - -КонецПроцедуры - -&НаКлиенте -Процедура ПолучитьАккаунтВызовОнлайнПоддержки(Команда) - - ФайловаяСистемаКлиент.ОткрытьНавигационнуюСсылку("http://buhphone.com/clients/be-client/"); - -КонецПроцедуры - -&НаКлиенте -Процедура ТехническиеТребования(Команда) - - ФайловаяСистемаКлиент.ОткрытьНавигационнуюСсылку("http://buhphone.com/require/#anchor_1"); - -КонецПроцедуры - -&НаКлиенте -Процедура СкачатьПриложение(Команда) - - ФайловаяСистемаКлиент.ОткрытьНавигационнуюСсылку("http://distribs.buhphone.com/current"); - -КонецПроцедуры - -#КонецОбласти - -#Область СлужебныеПроцедурыИФункции - -&НаСервереБезКонтекста -Процедура НовыйПутьКИсполняемомуФайлу(ИдентификаторКлиента, ПутьКФайлу) - ВызовОнлайнПоддержки.СохранитьРасположениеИсполняемогоФайлаВызовОнлайнПоддержки(ИдентификаторКлиента, ПутьКФайлу); -КонецПроцедуры - -&НаСервереБезКонтекста -Процедура СохранитьНастройкиПользователяВХранилище(Логин, - Пароль, - СохранитьЛогинПароль, - ВидимостьКнопки) - - ВызовОнлайнПоддержки.СохранитьНастройкиПользователяВХранилище(Логин, Пароль, СохранитьЛогинПароль, ВидимостьКнопки); - -КонецПроцедуры - -&НаСервереБезКонтекста -Процедура ПриИзмененииНастроек() - ВызовОнлайнПоддержкиПереопределяемый.ПриИзмененииНастроек(); -КонецПроцедуры - -// Выполняет инициализацию элементов формы в зависимости от -// настроек приложения. -// -&НаКлиентеНаСервереБезКонтекста -Процедура ИнициализироватьЭлементыФормы(Форма) - - Форма.Элементы.ГруппаПараметрыЗапуска.Доступность = Форма.ВидимостьКнопки; - -КонецПроцедуры - -&НаКлиенте -Процедура ПутьКФайлуНачалоВыбораЗавершение(НовыйПутьКФайлу, ДополнительныеПараметры) Экспорт - Если НовыйПутьКФайлу <> "" Тогда - ПутьКФайлу = НовыйПутьКФайлу; - КонецЕсли; -КонецПроцедуры - -#КонецОбласти - - - - diff --git a/SSL/src/CommonForms/НастройкаОтправкиSMS/Form.form b/SSL/src/CommonForms/НастройкаОтправкиSMS/Form.form index 42f41d5c8..9b8848c2d 100644 --- a/SSL/src/CommonForms/НастройкаОтправкиSMS/Form.form +++ b/SSL/src/CommonForms/НастройкаОтправкиSMS/Form.form @@ -97,7 +97,6 @@Предназначена для настройки параметров входа в программу раздельно для внутренних и внешних пользователей.
-Предназначена для настройки параметров входа в программу для внутренних и внешних пользователей.
+Для защиты от несанкционированного доступа к программе укажите с помощью флажков:
Можно установить Отдельные настройки для внешних пользователей.
+На вкладке Дополнительно отображается настройка списка выбора пользователей в окне 1С:Предприятие при начале работы с программой:
+Если в настройках программы включен флажок Разрешить доступ внешним пользователям, то настройка Показывать в списке выбора на вкладке Дополнительно станет недоступной.
+В случае клиент-серверного варианта работы на вкладке Дополнительно также можно указать Количество попыток ввода пароля до блокировки (по умолчанию 3 попытки) и Длительность блокировки ввода пароля (по умолчанию 5 мин.).
+Для того чтобы подписывать данные, нужно включить флажок Электронная подпись, а для шифрования нужно включить флажок Шифрование в разделе Администрирование - Общие настройки. После этого становятся доступными соответствующие команды в программе.
Электронная подпись - реквизит электронного документа, с помощью которого можно удостовериться в неизменности электронного документа с момента его подписи. Для установки подписи необходимо иметь сертификат ключа электронной подписи. Сертификат можно получить в удостоверяющем центре. Например, в удостоверяющем центре фирмы 1С http://ca.1c.ru/. Только удостоверяющий центр может выдать юридически значимый (квалифицированный сертификат).
В случае использования распределенной информационной базы большую часть настроек можно изменить только в главном узле.
+Для автоматического определения программы для работы с сертификатом может понадобиться установка компоненты ExtraCryptoAPI. Установить компоненту можно через меню Еще - Установить компоненту ExtraCryptoAPI.