Недавно была поставлена задача закрытия изменений в документе реализации всеми, кроме автора документа.
Не стал лезть в распределение ролей, настройки прав и т.п., т.к. заказчик сам это поддерживать и настраивать не будет. Нужно было что то по проще....
Устроило решение закрыть возможность открытия документа при активации в документе необходимого флага всеми пользователями, кроме автора.
Реализовано на примере документа РеализацияТоваровУслуг, это решение можно использовать в любом документе.
1. Создаем новый реквизит документа, присваиваем ему тип Булево.
2. На форме документа размещаем флаг, данные = созданному ранее реквизиту.
3. В модуле документа в процедуре ПередОткрытием в начале вставляем код (у меня так), у вас свои названия вероятно..
флагЗапрета = ЭтаФорма.ЭлементыФормы.ЗакрытьОтРедактирования.Значение;
Тек_Польз = ПараметрыСеанса.ТекущийПользователь;
Автор = ЭтаФорма.ЭлементыФормы.Ответственный.Значение;
Если флагЗапрета = Истина Тогда
Если Тек_Польз = Автор Тогда
ЭтаФорма.Открыть();
Иначе
Если Тек_Польз <> Автор Тогда
ОпределитьДоступностьВозможностьИзмененияДокументаПоАвтору();
ЭтаФорма.Закрыть();
КонецЕсли;
КонецЕсли;
КонецЕсли;
и добавляем процедуру для вывода сообщения:
Процедура ОпределитьДоступностьВозможностьИзмененияДокументаПоАвтору()
Сообщить("Документ закрыт для редактирования!"+Символы.ПС+ "Пользователь"+" "+Ответственный+" "+"закончил оформление документа!"+Символы.ПС+"Для открытия документа обратитесь к Автору.");
Предупреждение("Документ закрыт для редактирования!"+Символы.ПС+ "Пользователь"+" "+Ответственный+" "+"закончил оформление документа!"+Символы.ПС+"Для открытия документа обратитесь к Автору.");
КонецПроцедуры
Если вывод сообщений не нужен, не вставляйте. Тогда закомментируйте или удалите вызов этой процедуры в первом куске кода.