Ограничение к документам по пользователю на просмотр или редактирование

1. webresurs 209 12.06.17 09:37 Сейчас в теме
Как ограничь доступ к документу по пользователю?

Бухгалтерия 3.0 - Документ - Перемещение товаров не сколько складов.
Надо ограничить доступ к документу по пользователю(ответственный в документе), т.е. тот кто создал документ может редактировать и пере проводить, другие только просматривать, но пользователь ПетровАС и ИвановИИ имеют полный доступ к документам?

Полагаю надо добавить ПриОткрытии формы документа процедуру определения пользователя и установить права, но как?
По теме из базы знаний
Найденные решения
11. webresurs 209 13.06.17 08:47 Сейчас в теме
(2) (10) - не пользовался подписками... Спасибо, вопрос решен!

- пока оставлю в Документ - МодельОбъекта
Процедура ПередЗаписью(Отказ, РежимЗаписи, РежимПроведения)
	Если (Ответственный <> ПараметрыСеанса.ТекущийПользователь) И НЕ ЭтоНовый() И (НЕ РольДоступна("ПолныеПрава")) Тогда 
		Сообщить("У вас нет прав редактировать этот Документ.Ответственный: "+Ссылка.Ответственный);
		Отказ = Истина;
	КонецЕсли;

КонецПроцедуры
Показать
user1090556; +1 Ответить
12. webresurs 209 13.06.17 09:25 Сейчас в теме
Через подпись на событие

1. Добавить в Общие - Общие модули - с наименованием, к примеру "Свое_ПередЗаписьюДокумента"
вставить код:

Процедура ПередЗаписью(Объект, Отказ, РежимЗаписи, РежимПроведения) Экспорт 
	
    Если РежимЗаписи = РежимЗаписиДокумента.Проведение и Объект.ЭтотОбъект.Проведен тогда
        Отказ = Истина;
        Сообщить("Нельзя перепровести проведенный ранее документ!");
	КонецЕсли;
	
	Если (Объект.Ответственный <> ПараметрыСеанса.ТекущийПользователь) И НЕ Объект.ЭтоНовый() И (НЕ РольДоступна("ПолныеПрава")) Тогда 
		Сообщить("У вас нет прав редактировать этот Документ.Ответственный: "+Объект.Ссылка.Ответственный);
		Отказ = Истина;
	КонецЕсли;
	

КонецПроцедуры
Показать




2. Добавить в Общие - Подписка на событие - с наименованием, к примеру "Свое_ПередЗаписьюДокумента" выбрать:

- Источник - Составной тип - выбрать нужные Документы для защиты
- Событие - ПередЗаписью
- Обработчик - "Свое_ПередЗаписьюДокумента"
14. webresurs 209 15.06.17 05:21 Сейчас в теме
(13)
запретить создание и редактирование в справочниках

Решение:

0. Создаем роль пустую , называем "ЗапретНаРедактированиеСправочника"
1. В общем модуле было создан объект: ЗапретНаРедактированиеСправочника (рис1) с кодом:

Процедура ЗапретНаРедактированиеСправочникаПриЗаписи(Источник, Отказ) Экспорт	

Отказ = РольДоступна("ЗапретНаРедактированиеСправочника"); 
Если РольДоступна("ЗапретНаРедактированиеСправочника") Тогда 
Сообщить ("У вас нет прав, обратитесь к руководителю отдела!"); 
КонецЕсли; 

КонецПроцедуры 


2. В подписках на события создаем объект "ЗапретНаРедактированиеСправочника" свойствах в:
- "Источниках" указываем объекты справочника которые будут запрещены для редактирования и добавления,
- Событие - ПриЗаписи
- Обработчик - выбираем свой

3.Добавляем пользователю ЧЕРЕЗ КОНФИГуРАТОР роль "ЗапретНаРедактированиеСправочника"
4.Радуемся жизни :)
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. Dream_kz 129 12.06.17 09:44 Сейчас в теме
(1) Если велосипед изобретать, то что-то типа такого
Если НЕ ТекущийПользователь = Ответственный Тогда
ЭтаФорма.ТолькоПросмотр = Истина;
КонецЕсли;


Но лучше сделать в подписке ПередЗаписью, пусть открывают и редактируют, но не запишут.
А вообще же должны быть типовые механизмы, БСП же как никак.
3. Xershi 1484 12.06.17 11:32 Сейчас в теме
(2) а про какой механизм БСП идет речь? То что автор говорит это не роли, это отдельный кастомный механизм настроек документа, в БСП такого не видел. В УПП делал через доп свойства.
6. webresurs 209 12.06.17 13:39 Сейчас в теме
(2)
вообще же должны быть типовые механизмы, БСП же как никак


- не вижу к сожалению...

- проблема в том, что с документом работают разные пользователи с разных складов одной организации.
Есть отбор по пользователю или складу, но нет защиты документа созданного этим пользователем.
11. webresurs 209 13.06.17 08:47 Сейчас в теме
(2) (10) - не пользовался подписками... Спасибо, вопрос решен!

- пока оставлю в Документ - МодельОбъекта
Процедура ПередЗаписью(Отказ, РежимЗаписи, РежимПроведения)
	Если (Ответственный <> ПараметрыСеанса.ТекущийПользователь) И НЕ ЭтоНовый() И (НЕ РольДоступна("ПолныеПрава")) Тогда 
		Сообщить("У вас нет прав редактировать этот Документ.Ответственный: "+Ссылка.Ответственный);
		Отказ = Истина;
	КонецЕсли;

КонецПроцедуры
Показать
user1090556; +1 Ответить
5. Dream_kz 129 12.06.17 11:45 Сейчас в теме
(3) RLS например, хотя слишком тяжелый механизм. В БП 2,0 было "доступ к документам других пользователей", открыть можно, редактировать нельзя, некоторым пользователям по галочке можно было и редактировать. БП 3 для РФ не знаю.
7. Dream_kz 129 12.06.17 13:45 Сейчас в теме
(6) На Форме элемента справочника пользователи, нет ссылки "Права доступа к документам других пользователей" ? По идее стандартный механизм, чужие документы открыть можно, редактировать нельзя. Если конечно полных прав везде не стоит.
8. Xershi 1484 12.06.17 13:52 Сейчас в теме
(5) да РЛС это можно сделать, но в БСП этого нет, там можно ограничить на конкретный элемент(группу).
4. Xershi 1484 12.06.17 11:35 Сейчас в теме
(1) екарек видел писала любые проверки через расширение. Думаю БП 3.0 уже подняло режим совместимости до нужного уровня.
9. webresurs 209 13.06.17 06:46 Сейчас в теме
(2) -почти решение, остается добавить ПетровАС и ИвановИИ имеют полный доступ к документам

вставил в ФормуДокумента - работает...
    
Процедура ПередЗаписью(Отказ, РежимЗаписи, РежимПроведения)

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


КонецПроцедуры

Показать
10. Dream_kz 129 13.06.17 07:33 Сейчас в теме
(9) Сделай лучше подписку на событие, и свой общий модуль, проблем при обновлении меньше будет, да и смысл будет тот же.

До проверки на пользователя, вставь это:

Если РольДоступна("ЛюбаяРольНапримерПолныеПрава") Тогда
Возврат; 
КонецЕсли;
12. webresurs 209 13.06.17 09:25 Сейчас в теме
Через подпись на событие

1. Добавить в Общие - Общие модули - с наименованием, к примеру "Свое_ПередЗаписьюДокумента"
вставить код:

Процедура ПередЗаписью(Объект, Отказ, РежимЗаписи, РежимПроведения) Экспорт 
	
    Если РежимЗаписи = РежимЗаписиДокумента.Проведение и Объект.ЭтотОбъект.Проведен тогда
        Отказ = Истина;
        Сообщить("Нельзя перепровести проведенный ранее документ!");
	КонецЕсли;
	
	Если (Объект.Ответственный <> ПараметрыСеанса.ТекущийПользователь) И НЕ Объект.ЭтоНовый() И (НЕ РольДоступна("ПолныеПрава")) Тогда 
		Сообщить("У вас нет прав редактировать этот Документ.Ответственный: "+Объект.Ссылка.Ответственный);
		Отказ = Истина;
	КонецЕсли;
	

КонецПроцедуры
Показать




2. Добавить в Общие - Подписка на событие - с наименованием, к примеру "Свое_ПередЗаписьюДокумента" выбрать:

- Источник - Составной тип - выбрать нужные Документы для защиты
- Событие - ПередЗаписью
- Обработчик - "Свое_ПередЗаписьюДокумента"
13. webresurs 209 14.06.17 14:40 Сейчас в теме
До кучи как запретить создание и редактирование в справочниках?
14. webresurs 209 15.06.17 05:21 Сейчас в теме
(13)
запретить создание и редактирование в справочниках

Решение:

0. Создаем роль пустую , называем "ЗапретНаРедактированиеСправочника"
1. В общем модуле было создан объект: ЗапретНаРедактированиеСправочника (рис1) с кодом:

Процедура ЗапретНаРедактированиеСправочникаПриЗаписи(Источник, Отказ) Экспорт	

Отказ = РольДоступна("ЗапретНаРедактированиеСправочника"); 
Если РольДоступна("ЗапретНаРедактированиеСправочника") Тогда 
Сообщить ("У вас нет прав, обратитесь к руководителю отдела!"); 
КонецЕсли; 

КонецПроцедуры 


2. В подписках на события создаем объект "ЗапретНаРедактированиеСправочника" свойствах в:
- "Источниках" указываем объекты справочника которые будут запрещены для редактирования и добавления,
- Событие - ПриЗаписи
- Обработчик - выбираем свой

3.Добавляем пользователю ЧЕРЕЗ КОНФИГуРАТОР роль "ЗапретНаРедактированиеСправочника"
4.Радуемся жизни :)
15. webresurs 209 15.06.17 06:27 Сейчас в теме
2.5. Первый запуск необходимо провести с параметром "ЗапуститьОбновлениеИнформационнойБазы". В конфигураторе Сервис - Параметры - Запуск 1С:Предприятия - Основные - Параметры запуска добавить ЗапуститьОбновлениеИнформационнойБазы - Ок - Сохранить и запустить в режиме отладки (в дальнейшем параметр надо убрать)
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот