Имя: Пароль:
1C
 
Запрет редактирования поля Ответственный
0 pro3ri
 
15.09.15
13:09
Добрый день!
Написал код чтобы определен пользователи не могли менять ответственных в чужих документах:

    Если Не ЭтоНовый() И глТекущийПользователь = Справочники.Пользователи.НайтиПоКоду("1C")
        Или глТекущийПользователь = Справочники.Пользователи.НайтиПоКоду("ХХХ") Тогда
    
        Если Автор <> глТекущийПользователь Или Не ЗначениеЗаполнено(Ответственный) И Ответственный<>Ссылка.Ответственный Тогда
        
            Отказ = Истина;
            Сообщить("Вам запрещено изменять ответственного в документах чужого!");
        
        КонецЕсли;        
        
    КонецЕсли;

Все ли правильно? Я так понимаю Система доходит до выражения в условии истина, и если далее идет Или не продолжает выполнять код а идет в условие Отказ.
1 pro3ri
 
15.09.15
13:11
кого Ответственный, того и деньги.
2 Nuobu
 
15.09.15
13:12
(0) Жаль, что нельзя менять документы чужого.
https://encrypted-tbn2.gstatic.com/images?q=tbn:ANd9GcQf5G4-Na6LckNUiOCLwPYlscByLc8hwmh9rBpCRXVTYlZifSTheA
3 mehfk
 
15.09.15
13:13
Лучше сделай роль "ЗапретИзмененияОтветственного"
4 mistеr
 
15.09.15
13:14
"1C" и "ХХХ" это дурной тон. Нужно роль проверять.
5 Апош
 
15.09.15
13:17
какое такое условие отказ?
6 pro3ri
 
15.09.15
13:17
(3) а как это реализовать https://s.mail.ru/3ximypfvqUB4/img-2015-09-15-15-23-12.png
если я закрою доступ по стрелке этого не добиться, нужно делать ограничение доступа к данным и указывать поля?
7 pro3ri
 
15.09.15
13:18
(5) не твой счет, не трогай это поле
8 Nuobu
 
15.09.15
13:18
(6) Тебе говорят "вместо  Справочники.Пользователи.НайтиПоКоду("ХХХ") нужно писать "РольДоступна("МожноМенятьОтветственного")
9 Nuobu
 
15.09.15
13:19
(7) Тоесть, ты - ответственный, поменял ответственного на другого и теперь не можешь вернуть на себя?
10 Апош
 
15.09.15
13:19
(7) такое впечатление, что ты не знаком с условными операторами
11 Звездец
 
15.09.15
13:21
даже если таким способом, то лучше просто забрать доступ к полю и не надо никаких сообщений
12 pro3ri
 
15.09.15
13:22
(8) ну тогда уж красивее будет в настройки пользователя занести галку НельзяМенятьОтветственного
13 Звездец
 
15.09.15
13:23
(9) ну хочется велосипед, пусть делает
14 oslokot
 
15.09.15
13:23
(0) всё в топку.

Элементы.Ответственный.Доступность = РольДоступна("ПолныеПрава");
15 Nuobu
 
15.09.15
13:24
(12) Это твой выбор.
16 Апош
 
15.09.15
13:29
(14) элементы...
17 Nuobu
 
15.09.15
13:29
(16) А что не так с Элементами?
18 Апош
 
15.09.15
13:30
(17) задача ограничения доступа к данным решается интерфейсно
19 Nuobu
 
15.09.15
13:33
(18) Предложи своё решение.
20 Апош
 
15.09.15
13:36
(19) в общем случае отказ перед записью
21 Nuobu
 
15.09.15
13:39
(20) Возможно, что задачи разные.
Вставлять проверку на то, что Ссылка.Реквизит <> Объект.Реквизит муторнее, а, бывает, неудобнее, нежели поставить Элементы.Реквизит.ТолькоЧтение = Истина.
22 Nuobu
 
15.09.15
13:40
(20) Та же красота. Ты открываешь документ и видишь, что можешь отредактировать только два поля из двадцати.
Можно это всё организовать и другими ф-и, но суть та же - обращение к элементам.
23 Апош
 
15.09.15
13:48
(22) я никаких элементов сейчас не предлагал
24 pro3ri
 
15.09.15
14:01
вопрос решен всем спасибо, (21) так не пойдет, при копировании чужого счета нужно заполнять это поле.
25 Апош
 
15.09.15
14:02
(24) заполнять для неновых?
26 Nuobu
 
15.09.15
14:03
(25) Это следующий уровень. Не торопи события.
27 pro3ri
 
15.09.15
14:05
(26) (25) ок вот воздал менеджер счет, по ошибке оставил не себе а пупкина, что ему теперь программиста просить разморозить элемент формы?
28 Апош
 
15.09.15
14:07
(27) ему теперь спокойно и вдумчиво материть того, кто придумал не ставить ответственного автоматом
29 pro3ri
 
15.09.15
15:04
(28) нет служебки - нет реализации тз
30 qwerty
 
15.09.15
15:08
31 Апош
 
15.09.15
15:38
(29) нет ветки на мисте
Есть два вида языков, одни постоянно ругают, а вторыми никто не пользуется.