| 
    
            
         
         | 
    
  | 
Права на редактирование документа | ☑ | ||
|---|---|---|---|---|
| 
    0
    
        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 
 | 
         
        Как-то так делай...
 
        Если НЕ РольДоступна("ПолныеПрава") тогда Если Проведен и (НЕ РольДоступна("ИзменениеКонтрагентаОплаты")) тогда Если НЕ Контрагент=Константы.НеизвестныйКонтрагент.Получить() Тогда ЭтаФорма.ТолькоПросмотр=Истина; ИначеЕсли Контрагент=Константы.НеизвестныйКонтрагент.Получить() Тогда ТвоеУсловие; КонецЕсли; ИначеЕсли Проведен и РольДоступна("ИзменениеКонтрагентаОплаты") Тогда Если Контрагент=Константы.НеизвестныйКонтрагент.Получить() Тогда Для каждого Элф из ЭтаФорма.ЭлементыФормы Цикл Если Элф.Имя="Док_Основание" или Элф.Имя="Закрыть" или Элф.Имя="КНДолги" Тогда Продолжить; КонецЕсли; Если (Элф.Имя="Контрагент" или Элф.Имя="ОК") и НЕ Правка тогда Продолжить; КонецЕсли; Попытка Элф.ТолькоПросмотр=Истина; Исключение Элф.Доступность=Ложь; КонецПопытки; КонецЦикла; ИначеЕсли НЕ Контрагент=Константы.НеизвестныйКонтрагент.Получить() Тогда ТвоеУсловие; КонецЕсли; КонецЕсли; КонецЕсли;  | 
|||
| 
    4
    
        prilforreal    
     15.02.18 
            ✎
    20:10 
 | 
         
        (3) Пробую     
         | 
|||
| 
    5
    
        prilforreal    
     15.02.18 
            ✎
    20:27 
 | 
         
        (3) Спасибо большое очень помогло, но не до конца, с таким кодом:
 
        Если НЕ РольДоступна("ПолныеПрава") тогда Если Проведен и (РольДоступна("ИзменениеКонтрагентаОплаты")) тогда Если НЕ Контрагент=Константы.НеизвестныйКонтрагент.Получить() Тогда ЭтаФорма.ТолькоПросмотр=Истина; КонецЕсли; ИначеЕсли Контрагент=Константы.НеизвестныйКонтрагент.Получить() Тогда Для каждого Элф из ЭтаФорма.ЭлементыФормы Цикл Если Элф.Имя="Док_Основание" или Элф.Имя="Закрыть" или Элф.Имя="КНДолги" Тогда Продолжить; КонецЕсли; Если (Элф.Имя="Контрагент" или Элф.Имя="ОК") и НЕ Правка тогда Продолжить; КонецЕсли; Попытка Элф.ТолькоПросмотр=Истина; Исключение Элф.Доступность=Ложь; КонецПопытки; КонецЦикла; КонецЕсли; КонецЕсли; В документах на неизвестного контрагента доступны все поля вместо одного поля- контрагент.  | 
|||
| 
    6
    
        prilforreal    
     15.02.18 
            ✎
    20:56 
 | 
         
        Аж смешно.....Убрал первое не в первой строке и все заработало как нужно     
         | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |