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