Запрет на запись документов/справочников/РегистрСведений (ТолькоПросмотр)
Частенько приходится слушать от руководства: "запретить этому пользователю, запись этого документа\справочника"… А через какое-то время, почему тот-то не может записать справочник/документ. Вот и родилась идея оперативного запрета/разрешения записи документа/справочника/рс.
- Описание
- Подробнее
Описание
Навеяно: Простой доступ только для чтения.
Данное решение работоспособно в типовых решениях, где присутсвует справочник «ГруппыПользователей».
Алгоритм механизма следующий:
1. Создаются подписки на событие ПередЗаписью на все документы/справочники/рс (в чем есть необходимость).
2. В справочнике «ГруппыПользователей» создается элемент, например: «Запрет на запись документа«.
3. Далее, в эту группу («Запрет на запись документа«) добавляются элементы, для которых необходимо запретить запись, с именем = Имя справочника/документа/рс .
4. В обработчтике подписки на событие вставляем код:
ИмяОбъекта = Источник.Метаданные().Имя;
ГруппаЗапрета = Справочники.ГруппыПользователей.НайтиПоНаименованию(«Запрет на запись документов», Истина);
ОбъектЗапрета = Справочники.ГруппыПользователей.НайтиПоНаименованию(ИмяОбъекта, Истина, ГруппаЗапрета);
Если НЕ ОбъектЗапрета = Справочники.ГруппыПользователей.ПустаяСсылка() Тогда
Запрос = Новый Запрос;
Запрос.Текст = «ВЫБРАТЬ
| ГруппыПользователейПользователиГруппы.Ссылка
|ИЗ
| Справочник.ГруппыПользователей.ПользователиГруппы КАК ГруппыПользователейПользователиГруппы
|ГДЕ
| ГруппыПользователейПользователиГруппы.Пользователь = &Пользователь
| И ГруппыПользователейПользователиГруппы.Ссылка = &Ссылка»;
Запрос.УстановитьПараметр(«Пользователь», ПараметрыСеанса.ТекущийПользователь);
Запрос.УстановитьПараметр(«Ссылка», ОБъектЗапрета);
Результат = Запрос.Выполнить();
Если НЕ Результат.Пустой() Тогда
Отказ = Истина
КонецЕсли;
КонецЕсли;
В итоге имеем механизм, оперативного запрета/разрешения записи любого документа/справочника/РегистраСведений.
P.S. У данного решения остается вопрос с производительность при большом докуметообороте и включенном РЛС. Протестировать пока не представляется возможным.

