Вход | Регистрация

1С:Предприятие ::

Метки: 

Права на редактирование документа

Я
   prilforreal
 
15.02.18 - 19:41
Добренько, волшебники!
Столкнулся с такой проблемой:
Нужно было позволить одному пользователю редактировать одно поле в проведенном документе и только один раз, создал роль для него, поставил в роли галку интерактивное изменение проведенных, в процедуре при открытии написал код:

Если НЕ РольДоступна("ПолныеПрава") тогда
        Если Проведен и (НЕ РольДоступна("ИзменениеКонтрагентаОплаты")) и НЕ Контрагент=Константы.НеизвестныйКонтрагент.Получить() тогда    
            ЭтаФорма.ТолькоПросмотр=Истина;
        ИначеЕсли Проведен и РольДоступна("ИзменениеКонтрагентаОплаты") и Контрагент=Константы.НеизвестныйКонтрагент.Получить() тогда
            Для каждого Элф из ЭтаФорма.ЭлементыФормы Цикл
                Если Элф.Имя="Док_Основание" или Элф.Имя="Закрыть" или Элф.Имя="КНДолги" Тогда
                    Продолжить;
                КонецЕсли;    
                Если (Элф.Имя="Контрагент" или Элф.Имя="ОК") и НЕ Правка тогда
                    Продолжить;
                КонецЕсли;
                Попытка
                    Элф.ТолькоПросмотр=Истина;
                Исключение
                    Элф.Доступность=Ложь;
                КонецПопытки;    
            КонецЦикла;    
        КонецЕсли;
    КонецЕсли;    

В итоге получаю такое, документы, в которых стоит контрагент "НЕИЗВЕСТНЫЙ" выглядят как надо, то есть доступно только одно поле контрагента, но во всех остальных документах доступны все поля! И неограниченное число раз можно его проводить и редактировать, помогите прошу вас найти ошибки)
 
  Рекламное место пустует
   _Дайвер_
 
1 - 15.02.18 - 19:47
(0) ИначеЕсли Проведен и РольДоступна("ИзменениеКонтрагентаОплаты") Тогда Если Контрагент=Константы.НеизвестныйКонтрагент.Получить() тогда
 ТвоеУсловие;
Иначе
 ТвоеУсловие;
КонецЕсли;
КонецЕсли;
   _Дайвер_
 
2 - 15.02.18 - 19:47
(1) Контрагент=Константы.НеизвестныйКонтрагент.Получить()
В отдельное условие выведи
   _Дайвер_
 
3 - 15.02.18 - 19:54
Как-то так делай...
Если НЕ РольДоступна("ПолныеПрава") тогда 
    Если Проведен и (НЕ РольДоступна("ИзменениеКонтрагентаОплаты")) тогда
        Если  НЕ Контрагент=Константы.НеизвестныйКонтрагент.Получить() Тогда
            ЭтаФорма.ТолькоПросмотр=Истина;
        ИначеЕсли Контрагент=Константы.НеизвестныйКонтрагент.Получить() Тогда
            ТвоеУсловие;
        КонецЕсли;
    ИначеЕсли Проведен и РольДоступна("ИзменениеКонтрагентаОплаты") Тогда
        Если  Контрагент=Константы.НеизвестныйКонтрагент.Получить() Тогда 
            Для каждого Элф из ЭтаФорма.ЭлементыФормы Цикл
                Если Элф.Имя="Док_Основание" или Элф.Имя="Закрыть" или Элф.Имя="КНДолги" Тогда
                    Продолжить;
                КонецЕсли;    
                Если (Элф.Имя="Контрагент" или Элф.Имя="ОК") и НЕ Правка тогда
                    Продолжить;
                КонецЕсли;
                Попытка
                    Элф.ТолькоПросмотр=Истина;
                Исключение
                    Элф.Доступность=Ложь;
                КонецПопытки;    
            КонецЦикла;
        ИначеЕсли НЕ Контрагент=Константы.НеизвестныйКонтрагент.Получить() Тогда
            ТвоеУсловие;
        КонецЕсли;
    КонецЕсли;
КонецЕсли;
   prilforreal
 
4 - 15.02.18 - 20:10
(3) Пробую
   prilforreal
 
5 - 15.02.18 - 20:27
(3) Спасибо большое очень помогло, но не до конца, с таким кодом:

    Если НЕ РольДоступна("ПолныеПрава") тогда 
    Если Проведен и (РольДоступна("ИзменениеКонтрагентаОплаты")) тогда
        Если  НЕ Контрагент=Константы.НеизвестныйКонтрагент.Получить() Тогда
            ЭтаФорма.ТолькоПросмотр=Истина;
        КонецЕсли;
    ИначеЕсли Контрагент=Константы.НеизвестныйКонтрагент.Получить() Тогда
        Для каждого Элф из ЭтаФорма.ЭлементыФормы Цикл
                Если Элф.Имя="Док_Основание" или Элф.Имя="Закрыть" или Элф.Имя="КНДолги" Тогда
                    Продолжить;
                КонецЕсли;    
                Если (Элф.Имя="Контрагент" или Элф.Имя="ОК") и НЕ Правка тогда
                    Продолжить;
                КонецЕсли;
                Попытка
                    Элф.ТолькоПросмотр=Истина;
                Исключение
                    Элф.Доступность=Ложь;
                КонецПопытки;    
            КонецЦикла;    

    КонецЕсли;
    КонецЕсли;

В документах на неизвестного контрагента доступны все поля вместо одного поля- контрагент.
   prilforreal
 
6 - 15.02.18 - 20:56
Аж смешно.....Убрал первое не в первой строке и все заработало как нужно


Список тем форума
 
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Тема не обновлялась длительное время, и была помечена как архивная. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.
Рекламное место пустует