Нюансы Fresh-аудита по извещению пользователей об отправке данных

У Fresh есть необычное требование:

Если определить ресурсы сети Интернет, к которым будет выполняться обращение, невозможно, то:

•  для дополнительных обработок, содержащих формы, перед выполнением операции следует запрашивать разрешение у пользователя (возможно, с сохранением полученного ответа). При запросе разрешения следует явно указывать, к каким ресурсам сети Интернет будет осуществляться обращение;

У меня была обработка, где отправлялись файлы по E-mail. Я переписал отправку писем с сервера на клиент. Можно было запросить разрешение на использование e-mail, но там нужно было указывать конкретные адреса e-mail ресурсов, что лишает обработку универсальности:

Разрешение = РаботаВБезопасномРежиме.РазрешениеНаИспользованиеИнтернетРесурса("SMTP","mail.ru",,"Отправка электронной почты");
ПараметрыРегистрации.Разрешения.Добавить(Разрешение);

В принципе, из названия кнопки в форме «Отправить по почте» очевидно, что речь идет об отправке писем.

Но следуя букве законов аудита Fresh, я создал подтверждение, которое сохраняется после первого ответа да:

Сохраняю подтверждение прямо в системной учетной записи:

Функция ПрочитатьДанныеИзБезопасногоХранилища(Владалец, Ключи)                            
	Возврат ОбщегоНазначения.ПрочитатьДанныеИзБезопасногоХранилища(Владалец, Ключи);
КонецФункции    

Процедура ЗаписатьДанныеВБезопасноеХранилище(Владалец, Данные, Ключ)                            
	ОбщегоНазначения.ЗаписатьДанныеВБезопасноеХранилище(Владалец, Данные, Ключ);
КонецПроцедуры

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

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

UPD 25-03-27: записывать в безопасное хранилище нельзя в безопасном режиме. Аудит проходит, но не работает, поэтому для проверки использую функции записи/чтения настройки пользователей. Они работают в безопасном режиме и не требуют привилегированного доступа:

Функция ПолучитьНастройкуПрограммыТекущегоПользователя(ИмяНастройки) Экспорт
    Возврат ХранилищеОбщихНастроек.Загрузить("ОбщаяНастройкаПрограммы", ИмяНастройки);
КонецФункции

Процедура СохранитьНастройкуПрограммыТекущегоПользователя(ИмяНастройки, Значение) Экспорт
    ХранилищеОбщихНастроек.Сохранить("ОбщаяНастройкаПрограммы", ИмяНастройки, Значение);
КонецПроцедуры

fixin

Программирую на 1С с 1999 года. В 1С просто Гений. В 2020 году ушел из офиса на вольные хлеба фриланса. Принимаю заказы.

Читайте также:

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *