Имя: Пароль:
1C
1С v8
Закрыть доступ к универсальному отчёту рядовым сотрудникам.
0 Godunov
 
02.06.16
17:04
Приветствую ГУРУ 1С, возник вопрос, как для простых "смертных", для примера МенеджерПоЗакупкам закрыть доступ в универсальный отчёт?
http://savepic.ru/10012098.png
То есть надо, чтобы в процедуре при открытии проверялись права и либо открывать отчёт либо нет.

Делал так как показано в следующем рисунке.
http://savepic.ru/9968081.png
Пользователю не позволяет открыть универсальный отчёт, но тогда не позволяет открыть другие взаимосвязанные отчёты...
http://savepic.ru/9972176.png
http://savepic.ru/10010067.png

Сам новичок в 1С, не программист, всего лишь сисадмин, изучаю с нуля, куча вопросов у меня.

Может кто сталкивался с подобным, можете подсказать?
1 Nuobu
 
02.06.16
17:09
(0) У универсального отчета есть форма. Поставь запрет там.
2 Михаил Козлов
 
02.06.16
17:10
Интерфейсом.
3 Godunov
 
02.06.16
17:11
(1) (2) Гляну.
4 mehfk
 
02.06.16
17:13
(0) Галку использование оставь, а просмотр убери.
5 Godunov
 
02.06.16
17:24
(4) Вроде помогло, позже более глубже взаимосвязанные отчёты проверю.
6 Nuobu
 
02.06.16
17:24
(5) А в настройки пускает?
7 Godunov
 
02.06.16
17:27
(6) Щас вот так вот
http://savepic.ru/9970134.jpg
Сделал по совету (4)
Но мне надо проверить будет позже другие отчёты, вдруг там косяки всплывут...
8 Godunov
 
03.06.16
09:47
В общем решение с галочками не решает моей задачи, если попытаться открыть отчёт, который показан на рисунке
http://savepic.ru/10009950.png
и зайти в "Настройки", то выдаст окошко "Нарушение прав доступа!"
http://savepic.ru/9998686.png
А мне надо туда попасть.
Поэтому думаю нужно прописывать код в процедуре с нужными правами, кто-нить делал подобное?
9 Nuobu
 
03.06.16
09:50
(8) Если НЕ РольДоступна("ПолныеПрава") И НЕ РольДоступна("ПользовательДляУниверсальногоОтчета") Тогда
Отказ = Истина;
КонецЕсли;

Это в "Перед открытием" в форме универсального отчета. А доступ к отчету оставь.
10 Godunov
 
03.06.16
09:55
(9) Проверю.
11 mehfk
 
03.06.16
10:08
В общем, убирай из интерфейса. При использовании как (4), так и (9) перестанут работать расшифровки.
12 Nuobu
 
03.06.16
10:33
(11) В смысле не будет, если будет? Универсальный отчет, ведь, не свою расшифровку открывает, а форму отчета, из которой он открыт.
13 mehfk
 
03.06.16
10:38
(12) Теоретик?
14 Lama12
 
03.06.16
10:40
(10) А консоль отчетов не беспокоит? А табло?
Может ограничивать доступ к объектам метаданных у которых хранится информация которую не следует показывать? Или РЛС воспользоваться.
Если у меня есть доступ к табло, и доступ к данным,то эти данные я всегда смогу получить через табло.
15 Godunov
 
03.06.16
10:42
(9) Доступ вернул. В общем не нашёл я "Перед открытием" в форме УО.
http://savepic.ru/10012009.png
Прописал код в модуле формы.
http://savepic.ru/9997673.png
Результат никакой...
http://savepic.ru/9986409.png
16 Godunov
 
03.06.16
10:44
(14) А можно по-подробнее? Новичок потому что...
17 Lama12
 
03.06.16
11:03
(16) Зачем ограничивать доступ к отчету, если у пользователя есть доступ к данным? Ну вот если пользователь может открыть регистр паспортные данные и посмотреть что там записано, то нафига закрывать отчет по этому регистру? Если пользователь может вносить элементы в справочник "Контрагенты", то зачем закрывать возможность построить отчет по этому справочнику?
К тому, все говорю, что лучше продумать доступ к данным, а не к отчету.
18 Godunov
 
03.06.16
11:44
(17) Позже уточню.
19 Godunov
 
03.06.16
13:21
(17) К сожалению надо реализовать задачу именно так, как описано мной выше, прорабатывать данные более подробно никто не готов.
20 Nuobu
 
06.06.16
09:48
(15) Так добавь. Только не к табличному документу, а к форме.
21 Godunov
 
06.06.16
10:08
(20) К форме и добавляю, вот такой код прописал в форме, всё равно не работает, открывается отчёт у того пользователя с правами, что написаны в коде...
http://savepic.ru/9997176.png
22 Godunov
 
06.06.16
16:43
Вопрос закрыт, просто не надо было мне писать "НЕ", тогда всё работает как мне надо, разобрался с синтаксисом.

Процедура ПередОткрытием(Отказ, СтандартнаяОбработка)
            Если (РольДоступна(Метаданные.Роли.МенеджерПоЗакупкам) Или РольДоступна(Метаданные.Роли.МенеджерПоПродажам) Или
             РольДоступна(Метаданные.Роли.ЗаведующийСкладом))Тогда  
             Отказ = истина;    
                        Возврат;            
            КонецЕсли;            

КонецПроцедуры
23 Nuobu
 
06.06.16
16:48
(22) Ну, на будущее - делай не так, как ты здесь описал, а наоборот - прописывай все роли, кому можно пользоваться отчетом.
Лучше было бы сделать отдельную роль "ПользовательКомуМожноПользоватьсяОтчетом" и раздать эту роль конкретным пользователям.

И проверять так:
Если НЕ (РольДоступна("ПолныеПрава") ИЛИ РольДоступна("ПользовательКомуМожноПользоватьсяОтчетом") Тогда
Отказ = Истина;
КонецЕсли;

А в твоём случае - если у пользователя с полными правами будет роль "МенеджерПоЗакупкам", то он универсальным отчетом воспользоваться не сможет.