Имя: Пароль:
1C
1C 7.7
v7: Запрет пользователям править не свои документы
0 msk-07
 
14.09.12
22:47
Хочу спросить возможно ли пользователям запретить править не свои документы. Я понимаю, что в модуле документа при открытии необходимо сделать проверку


Если ИмяПользователя() <> Автор Тогда
    Форма.ТолькоПросмотр(1);
    КонецЕсли;

Как сделать так чтобы "Автор" брался из формы данного документа, то есть не пойму как передать значение.
1 msk-07
 
14.09.12
22:48
или так Если Пол ИмяПользователя()<> ИмяПользователя(ПолучитьСтроку(Автор))
2 Aleksey
 
14.09.12
22:49
Что за бредовое желание?
3 msk-07
 
14.09.12
22:51
а как надо?
4 msk-07
 
14.09.12
22:52
Я совета спрашиваю и буду благодарен за любые подсказки
5 shag008
 
14.09.12
22:53
Автор - это что в твоем случае?
6 msk-07
 
14.09.12
22:54
Это в табличной части высвечивается, а вообще мне надо получить  имя автора документа.

Думаю, что так Если  ИмяПользователя()<> ТекущийДокумент().Автор Тогда
7 shag008
 
14.09.12
22:55
(6) в табличной части? это как? в каждой строке?
8 iamnub
 
14.09.12
22:55
(2)
Что за идиотский комментарий?
9 shag008
 
14.09.12
22:57
(6) обычно делают так: Автор - элемент справочника Пользователи и делаю его общим реквизитом для документов
10 msk-07
 
14.09.12
22:57
я не знаю как лучше сделать
11 msk-07
 
14.09.12
22:58
Процедура ПриОткрытии()
       
   Если  ИмяПользователя() <> ТекущийДокумент().Автор Тогда
   
Форма.ТолькоПросмотр(1);  
Иначе
   Форма.ТолькоПросмотр(0)
КонецЕсли;
12 iamnub
 
14.09.12
22:59
(0)
В документе должен быть сохранен автор. В виде реквизита "автор", с типом "сотрудники", например.

При входе в систему - из этого справочника определяют пользователя и сохраняют в глобальной переменной.

При открытии формы документа сравнивают значение глобальной переменной и значения "автор" в документе.

И устанавливают например Форма.ТолькоПросмотр(1); (точно не помню)
13 ЗомбиТ1С
 
14.09.12
23:00
Можно использовать глПользователь, если это ТИС.
14 msk-07
 
14.09.12
23:01
у меня код выше и так не доступна правка документа, но для всех
15 AlexNew
 
14.09.12
23:03
Веселая ветка.
16 ЗомбиТ1С
 
14.09.12
23:03
Если  глПользователь <> Автор
Этого хватит
17 msk-07
 
14.09.12
23:03
мне не весело, как то это можно сделать или нет?
18 iamnub
 
14.09.12
23:04
(14)
ИмяПользователя() - возвращает строку (скорее всего)
Автор - это элемент справочника.

Они никогда равны не будут.
19 iamnub
 
14.09.12
23:05
СокрЛП(ИмяПользователя()) <> СокрЛП(Автор.Наименование)

Так попробуй.
20 AlexNew
 
14.09.12
23:06
Да посмотрите хотя бы тип реквизита.
21 msk-07
 
14.09.12
23:06
(19) Спасибо!!!!!
22 iamnub
 
14.09.12
23:08
(21)
Но правильно в (16)
23 КонецЦикла
 
14.09.12
23:12
Если  глПользователь <> глПользователь Тогда
Предупреждение("Что-то не так!!!", 60);
СтатусВозврата(0);
...
24 ЗомбиТ1С
 
14.09.12
23:32
(23) Ваше предупреждение миру никогда не наступит
25 NS
 
14.09.12
23:36
Если это Тис, то есть такая глобальная функция
Функция глПроверкаРазрешенияРедактирования(Конт) Экспорт
...
в ней дописываешь

   Если Конт.Выбран() > 0  Тогда
       Если конт.Автор<>глПользователь Тогда
           Предупреждение("Разрешен только просмотр документа!",4);
           Возврат 0;
       КонецЕсли;
   КонецЕсли;
Чтобы обнаруживать ошибки, программист должен иметь ум, которому доставляет удовольствие находить изъяны там, где, казалось, царят красота и совершенство. Фредерик Брукс-младший