Гибкое администрирование прав пользователей на редактирование реквизитов


Если вам необходимо для каждого пользователя 1С установить персональные права на редактирование определенного реквизита формы справочника (документа), то данная технология возможно станет для вас отправной точкой.

Предполагается, что у вас есть Справочник.Пользователи

Создайте подчиненный Справочник.ЗабаненныйРеквизиты

В нем создайте два реквизита:

1. ИдентификаторФормы (Строка) //сюда вписываем Вид() справочника или документа

2. Реквизит (Строка)

Принцип работы такой:

Если для пользователя Маша, создать элемент справочника  ЗабаненныйРеквизиты

в котором

ИдентификаторФормы = «Контрагенты»

а Реквизит = «ПочтовыйАдрес»,

то при открытии Машей карточки любого Контрагента

реквизит ПочтовыйАдрес будет для нее недоступен для редактирования.

 

В конце модуля каждого справочника и документа вызываем функцию из глобального модуля

УправлениеДоступностьюРеквизитов(Контекст)

 

 

Теперь в глобальном модуле размещаем нашу функцию:

 

Функция УправлениеДоступностьюРеквизитов(Конт) Экспорт
СпрПольз=СоздатьОбъект("Справочник.Пользователи");
СпрПольз.НайтиПоКоду(СокрЛП(ИмяПользователя()));
ТекВладелец=СпрПольз.ТекущийЭлемент();
Спр=СоздатьОбъект("Справочник.ЗабаненныеРеквизиты");
Спр.ИспользоватьВладельца(ТекВладелец);

Контекст_ИдентификаторФормы=СокрЛП(Конт.Вид());

Спр.ВыбратьЭлементы();
Пока Спр.ПолучитьЭлемент()=1 цикл
Если СокрЛП(Спр.ИдентификаторФормы)=Контекст_ИдентификаторФормы Тогда
ЗабаненныйРеквизитФормы=Конт.Форма.ПолучитьАтрибут(СокрЛП(Спр.Реквизит));
ЗабаненныйРеквизитФормы.Доступность(0);
КонецЕсли;
КонецЦикла;
КонецФункции

и всё.

 

 

Теперь чтоб заблокировать любой реквизит любого справочника для любого пользователя…

достаточно открыть подчиненный справочник ЗабаненныеРеквизиты

и в нем прописать в каком справочнике какой реквизит заблокировать для этого пользователя.

Отдельное спасибо поиску и Царькову Валерию

 

 

 

 

5 Comments

  1. Ёпрст

    (0) Погляди в сторону …

    http://infostart.ru/projects/1034/

    Хотя, баловство всё это.

    Reply
  2. tdr1225

    (0) Почти во всем формах имеются УправлениеВидимостью() и УправлениеДоступностью(), работа которых перебивает действие команды «ЗабаненныйРеквизитФормы.Доступность(0)»

    Reply
  3. Alav

    А почему

    Спр.ВыбратьЭлементы();

    а не

    Спр.ВыбратьЭлементыПоРеквизиту(«ИдентификаторФормы»,Контекст_ИдентификаторФормы)

    Reply
  4. mdbm

    Я ж говорю, этот метод — отправная точка, а не пункт назначения.

    Reply

Leave a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *