Имя: Пароль:
1C
1С v8
Доступность одного реквизита
0 palima
 
19.12.18
14:26
Всем привет, помогите пожалуйста понять логику работы ролей, чтобы научиться решать следующую проблему: доступность реквизитов формы элемента и списка справочника ограничена ролью, в которой весь справочник помечен только на чтение. Но один из реквизитов должен быть доступен для редактирования для всех. Конструкция ЭлементыФормы.СправочникСписок.Колонки.МойРеквизит.Доступность = Истина;
в данном случае не работает.
Растолкуйте пожалуйста как нужно делать и как не делать когда возникают такие вопросы, буду очень благодарна. Спасибо.
1 spiller26
 
19.12.18
14:58
(0) Роль не ограничивает элементы формы, она может только ограничить к реквизитам объекта доступ.
Смотрите что происходит при открытии формы и в какой момент происходит переход доступности из "Истина" в "Ложь".
2 Fedor-1971
 
19.12.18
15:35
(1) Обманщик, если роль только чтение - то и форма получит те же ограничения

(0) Суть следующая:
Раскрываем права роли на этот справочник,
выставляем право Редактирование для всего (!!!) справочника
выделяем Реквизиты - ставим право "чтение" и снимаем "редактирование"
дальше находим нужный реквизит и даём ему право "Редактирование"

Придёт к тебе счастье - пользователь с такой ролью будет иметь возможность изменить только один (или сколько нужно) реквизит
3 Fedor-1971
 
19.12.18
15:59
2+ Учитывай ещё один момент права по ролям определяются по ИЛИ!
Т.е. ограничить доступ к реквизиту пользователю с полными правами на справочник другой ролью (с ограничением доступа) уже не получится, нужно будет создать отдельную роль, а вот выдать дополнительную к Просмотру, вполне себе можно

Ну, с моментом попытки записи в модуле объекта в недоступные поля пользователем с ограничением доступа методом УстановитьПривилегированныйРежим(Истина) как-нить разберёшься самостоятельно
4 palima
 
19.12.18
16:21
(3) к сожалению после миллиона попыток так и не получилось реализовать 2... Поэтому пришлось для всей просто открыть весь справочник на редактирование а в форме в ПриОткрытии() для этой же роли позакрывать доступ всем реквизитам кроме одного.. такой вот нехороший способ пока не придет озарение...
5 Fedor-1971
 
19.12.18
16:41
(4) Проведи чистый эксперимент:
Сначала отбираешь все права на данный справочник, а потом выдаёшь роль, настроенную так, как я написал.
Дальше пытаешься сохраниться, если получаешь ошибку прав доступа, значит в модуле есть процедуры передЗаписью или ПроверкЗаполнения, в которых есть программное заполнение реквизитов, недоступных данной роли, решается через УстановитьПривилегированныйРежим(Истина)

Собственно всё