Платформа 8.2.15
Для конкретного пользователя необходимо дать возможность изменять только 1 реквизит из всех в справочнике.
Сделал отдельную роль, в которой добавил редактирование для всего справочника, но только для одного реквизита проставил галочку Редактирование. В итоге - все элементы доступны для редактирования (запись происходит так же нормально).
Если у справочника снять галку Редактирование, и проставить только для элемента - все элементы не доступны для редактирования (запись так же не доступна).
Подскажите как сделать права для записи, но редактировать только один реквизит?
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
СообщениеОшибки = "";
Если (НЕ (РольДоступна("Бухгалтер") ИЛИ РольДоступна("ГлавныйБухгалтер") ИЛИ РольДоступна("ПолныеПрава") ИЛИ (Объект.Дата>=НачалоДня(ТекущаяДата()) И Объект.Дата<=КонецДня(ТекущаяДата())))) И ЗначениеЗаполнено(Объект.Ссылка) Тогда
//ЭтаФорма.ТолькоПросмотр = Истина;
Для каждого ЭлементФормы Из ЭтаФорма.Элементы Цикл
Если (ЭлементФормы.Имя = "ФлагОплачен")
ИЛИ(ЭлементФормы.Имя = "Авторизовал")
ИЛИ(ЭлементФормы.Имя = "ФормаДокументРеализацияАвиабилетовПечать")
ИЛИ(ЭлементФормы.Имя = "КнопкаОбновитьКарточки")
ИЛИ(Найти(ЭлементФормы.Имя, "Провести") > 0)Тогда
ЭлементФормы.Доступность = Истина;
ИначеЕсли(ТипЗнч(ЭлементФормы)=Тип("ГруппаФормы")) Тогда
ЭлементФормы.Доступность = Истина;
Иначе
ЭлементФормы.Доступность = Ложь;
КонецЕсли;
КонецЦикла;
Сообщение = Новый СообщениеПользователю;
Сообщение.Текст = "Редактирование документа запрещено. Документ открыт в режиме только просмотр";
Сообщение.УстановитьДанные(Объект);
Сообщение.Сообщить();
ИначеЕсли (НЕ (РольДоступна("Бухгалтер") ИЛИ РольДоступна("ГлавныйБухгалтер") ИЛИ РольДоступна("ПолныеПрава"))) Тогда
Элементы.Дата.ТолькоПросмотр = Истина;
КонецЕсли;
Требовать и эффективности, и гибкости от одной и той же программы — все равно, что искать очаровательную и скромную жену... по-видимому, нам следует остановиться на чем-то одном из двух. Фредерик Брукс-младший