Имя: Пароль:
1C
1С v8
Запретить изменять Ответственного
0 geka-geka
 
13.02.12
14:21
Как запретить менять ответственного всем кроме пользователей с полными правами?
1 Анатоль
 
13.02.12
14:23
Взять и запрограммировать
Попробуй программировать через подписки на события
2 Shurjk
 
13.02.12
14:24
(1) А в подписке это как сделать?
3 Поpyчик-4
 
13.02.12
14:30
Подписка ПередЗаписью для всех документов

Если ОбщегоНазначения.ЕстьРеквизитДокумента("Ответственный", Источник.Метаданные()) Тогда

    Проверям роль полные права
    сравниваем значение реквизита источника со значением реквизита в базе.

КонецЕсли;
4 Поpyчик-4
 
13.02.12
14:31
Подписка на событие лучше, так как не требует вторжения в штатные формы документов.
5 geka-geka
 
13.02.12
15:50
Есть ли подписка, которая отрабатывает перед открытием формы документа?
6 Scooter
 
13.02.12
15:51
(5)а зачем тебе ПерезЗакрытием формы?
7 geka-geka
 
13.02.12
15:54
Хочу убрать свойство доступность у ответственного
8 BuHu
 
13.02.12
15:55
(6) не перед закрытием , а перед открытием , доступность убрать
9 geka-geka
 
13.02.12
15:56
(8) именно перед открытием
10 BuHu
 
13.02.12
15:57
(9) нет вроде такого события
11 AndreYAN
 
13.02.12
15:57
Лучше оставить доступность, а добавить подписку на событие перед записью документов, проверять наличие реквизита "Ответственный" и если нет нужных прав, делать следующее
Источник.Ответственный = Источник.Ссылка.Ответственный;
12 Scooter
 
13.02.12
15:57
(7)см(3)
13 BuHu
 
13.02.12
15:58
+(10) погляди где устанавливается доступность\видимость , чето типа УправлениеВидимостью
14 BuHu
 
13.02.12
15:59
(12) а где там про доступность ?
15 geka-geka
 
13.02.12
16:00
А если нужно посмотреть кто создал документ?
16 Scooter
 
13.02.12
16:02
(14)а где в (0) про доступность
17 geka-geka
 
13.02.12
16:07
(11) А если нужно посмотреть кто создал документ, то

Источник.Ответственный = Источник.Ссылка.Ответственный;

Затрет создателя.
18 echo77
 
13.02.12
16:14
В свое время запрещал таким кодом менять требование-накладную НЕавтору документа:

Процедура у_ПередЗаписьюТребованиеНакладнойПередЗаписью(Источник, Отказ, РежимЗаписи, РежимПроведения) Экспорт
   // Если это новый документ, то ничего не проверяем
   Если Источник.ЭтоНовый() Тогда
       Возврат
   КонецЕсли;
   
   // Если у пользователя Полные права, то ничего не проверяем
   Если (РольДоступна("ПолныеПрава")) ИЛИ (РольДоступна("у_ПолныеПраваСокр")) ИЛИ (РольДоступна("у_Бухгалтер_матсектор")) Тогда
       Возврат
   КонецЕсли;
       
   // Берем Источник.Ссылка по скольку нас интересует документ сохраненный в БД, а не документ-объект, который мы редактируем
   Если Источник.Ссылка.Ответственный <> ПараметрыСеанса.ТекущийПользователь Тогда
       ТелАБД = "33-46";
       # Если Клиент Тогда
           Предупреждение("Вы не являетесь автором данного документа, его изменение для вас !"
                           + Символы.ПС + "Вопросы? Звоните " + ТелАБД,
                           ,"Нарушение доступа");
       # КонецЕсли

       // Пишем в журнал регистрации, что кто-то пытается накосячить
       Если Источник.ПометкаУдаления = Истина Тогда
           Комментарий = "Попытка пометить на удаление"
       ИначеЕсли РежимЗаписи = РежимЗаписиДокумента.Проведение Тогда
           Комментарий = "Попытка провести документ"
       ИначеЕсли РежимЗаписи = РежимЗаписиДокумента.ОтменаПроведения Тогда
           Комментарий = "Попытка отменить проведение документа"
       КонецЕсли;            
           
       ЗаписьЖурналаРегистрации("Нарушение доступа",
                               УровеньЖурналаРегистрации.Информация,
                               Источник.Метаданные(),
                               Источник.Ссылка,
                               Комментарий,
                               РежимТранзакцииЗаписиЖурналаРегистрации.Транзакционная);
       Отказ = Истина;
   КонецЕсли;
КонецПроцедуры
19 Sandy_S
 
13.02.12
16:44
я бы использовал бы функцию типа МеханизмНумерацииОбъектов.УстановитьДоступностьПоляВводаНомера(Метаданные(), ЭтаФорма, ЭлементыФормы.ДействияФормы.Кнопки.Подменю1,ЭлементыФормы.Номер);
в ней добавил бы если на форме есть ответственный, тогда доступность этого поля равно РольДоступна("ПолныеПрава").
Нужна глобальная функция которая есть в большинстве документов и срабатывает при открытии.
20 Sandy_S
 
13.02.12
16:50
вот шикарная функция есть думаю практический у всех документов    РаботаСДиалогами.УстановитьЗаголовокФормыДокумента(Строка(ВидОперации), ЭтотОбъект, ЭтаФорма);
21 geka-geka
 
13.02.12
16:55
(20) надо попробовать
22 Вуглускр1991
 
13.02.12
17:06
Автор работает в роторе?
23 geka-geka
 
15.02.12
16:17
Пока сделал так:

Если ДокументОбъект.Метаданные().Реквизиты.Найти("Ответственный" ) <> Неопределено Тогда
   ФормаДокумента.ЭлементыФормы.Ответственный.Доступность = Ложь;
КонецЕсли;
24 geka-geka
 
15.02.12
16:17
Спасибо.