andreydv87 @ Сегодня, 10:36
,
Слишком много ролей прийдется создавать для различных отчетов.
Сейчас сделал в процедуре ПередОткрытием вызов функции поиска справочника с реквизитом имени отчета, смотрю есть ли там открывающий отчет пользователь и возвращаю Ложь или Истина. Минус в том, что для всех отчетов нужно прописывать процедуру перед открытием. Что то типа такого.
Процедура ПередОткрытием(Отказ, СтандартнаяОбработка)
Отказ = УправлениеОтчетами.ОграничениеДоступаПользоватем(ЭтотОбъект);
Если Отказ Тогда
Предупреждение("Отказано в доступе!")
КонецЕсли;
КонецПроцедуры
Функция ОграничениеДоступаПользоватем(Объект) Экспорт
Отчет = Объект.Метаданные().Имя;
Доступ = Справочники.ДоступыКОтчетам.НайтиПоРеквизиту("Отчет",Отчет);
ТекПользователь = ПараметрыСеанса.ТекущийПользователь;
Если НЕ Доступ.Пустая() Тогда
Для каждого ЗапП Из Доступ.Пользователи Цикл
Если ЗапП.Пользователь = ТекПользователь Тогда
Возврат Ложь;
КонецЕсли;
КонецЦикла;
Возврат Истина;
КонецЕсли;
Возврат Ложь;
КонецФункции //