|
Права на редактирование документа | ☑ | ||
---|---|---|---|---|
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
|
Аж смешно.....Убрал первое не в первой строке и все заработало как нужно
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |