Нюансы Fresh-аудита по извещению пользователей об отправке данных
У Fresh есть необычное требование:
Если определить ресурсы сети Интернет, к которым будет выполняться обращение, невозможно, то:
• для дополнительных обработок, содержащих формы, перед выполнением операции следует запрашивать разрешение у пользователя (возможно, с сохранением полученного ответа). При запросе разрешения следует явно указывать, к каким ресурсам сети Интернет будет осуществляться обращение;
У меня была обработка, где отправлялись файлы по E-mail. Я переписал отправку писем с сервера на клиент. Можно было запросить разрешение на использование e-mail, но там нужно было указывать конкретные адреса e-mail ресурсов, что лишает обработку универсальности:
Разрешение = РаботаВБезопасномРежиме.РазрешениеНаИспользованиеИнтернетРесурса("SMTP","mail.ru",,"Отправка электронной почты"); ПараметрыРегистрации.Разрешения.Добавить(Разрешение);
В принципе, из названия кнопки в форме «Отправить по почте» очевидно, что речь идет об отправке писем.
Но следуя букве законов аудита Fresh, я создал подтверждение, которое сохраняется после первого ответа да:


Сохраняю подтверждение прямо в системной учетной записи:
Функция ПрочитатьДанныеИзБезопасногоХранилища(Владалец, Ключи) Возврат ОбщегоНазначения.ПрочитатьДанныеИзБезопасногоХранилища(Владалец, Ключи); КонецФункции Процедура ЗаписатьДанныеВБезопасноеХранилище(Владалец, Данные, Ключ) ОбщегоНазначения.ЗаписатьДанныеВБезопасноеХранилище(Владалец, Данные, Ключ); КонецПроцедуры &НаКлиенте Процедура ОтправитьПоПочте(Команда) УчПочта = ПредопределенноеЗначение("Справочник.УчетныеЗаписиЭлектроннойПочты.СистемнаяУчетнаяЗаписьЭлектроннойПочты"); ПодтверждениеПользователя = ПрочитатьДанныеИзБезопасногоХранилища(УчПочта, "ПодтверждениеПользователя"); Если ПодтверждениеПользователя <> "yes" Тогда //Аудиту - важно Запрашиваем разрешение пользователя на отправку ОО = Новый ОписаниеОповещения("ОтправитьПоПочтеПослеПодтверждения", ЭтаФорма); ПоказатьВопрос(ОО, "Обработка будет отправлять данные поставщикам через учетную запись электронной почты. Разрешаете?", РежимДиалогаВопрос.ДаНетОтмена,, КодВозвратаДиалога.Отмена); Иначе ОтправитьПоПочтеПослеПодтверждения(КодВозвратаДиалога.Да, Неопределено); КонецЕсли; КонецПроцедуры &НаКлиенте Процедура ОтправитьПоПочтеПослеПодтверждения(Результат, ДП) Экспорт Если Результат <> КодВозвратаДиалога.Да Тогда Возврат; КонецЕсли; УчПочта = ПредопределенноеЗначение("Справочник.УчетныеЗаписиЭлектроннойПочты.СистемнаяУчетнаяЗаписьЭлектроннойПочты"); ЗаписатьДанныеВБезопасноеХранилище(УчПочта, "yes", "ПодтверждениеПользователя"); //Осипов - общая функция отправки ОтправитьЗаказыПоПочте(ЭтоТест); ... КонецПроцедуры
UPD 25-03-27: записывать в безопасное хранилище нельзя в безопасном режиме. Аудит проходит, но не работает, поэтому для проверки использую функции записи/чтения настройки пользователей. Они работают в безопасном режиме и не требуют привилегированного доступа:
Функция ПолучитьНастройкуПрограммыТекущегоПользователя(ИмяНастройки) Экспорт Возврат ХранилищеОбщихНастроек.Загрузить("ОбщаяНастройкаПрограммы", ИмяНастройки); КонецФункции Процедура СохранитьНастройкуПрограммыТекущегоПользователя(ИмяНастройки, Значение) Экспорт ХранилищеОбщихНастроек.Сохранить("ОбщаяНастройкаПрограммы", ИмяНастройки, Значение); КонецПроцедуры

Свежие комментарии