В начало

Ограничения в документе «Взаимодействия»

 

Есть документ «Взаимодействия». Нужно для сотрудников с правами «ОграничитьСотрудникаУК» установить ограничения на все элементы формы документа, кроме «ВидВзаимодействия» и кнопки «ЗаписатьИЗакрыть».

 

            Сначала устанавливаем свойства элемента «ВидВзаимодействия», чтобы через историю взаимодействий нельзя было выбрать другие элементы справочника «ВидыВзаимодействий».

Рис. Свойства элемента «ВидВзаимодействия»

 

            Потом в процедуре «ПриСозданииНаСервере» устанавливаем доступность элементов формы, кроме элемента «ВидВзаимодействия» и кнопки «ЗаписатьИЗакрыть» при условии, что роль «ОграничитьСотрудниковУК» доступна.

            Далее в элементе «ВидВзаимодействия» пишем обработчик «НачалоВыбора», в котором заменяем стандартную обработку в том случае, если доступна роль «ОграничитьСотрудникаУК».

 

Листинг. Модуль формы документа «Взаимодействия»

&НаСервере

Процедура ДоступностьЭлементовДляСотрудникаУК() 

            //Недоступны

            Для Каждого Эл Из ЭтаФорма.Элементы Цикл

                        Если ТипЗнч(Эл) <> Тип("ДекорацияФормы") Тогда

                                    Эл.Доступность = Ложь;                       

                        КонецЕсли;

            КонецЦикла;                                    

           

            //Доступны     

            ЭтаФорма.Элементы.ГруппаВидСостояние.Доступность = Истина;

            ЭтаФорма.Элементы.ГруппаФормаЛевая.Доступность = Истина;

            ЭтаФорма.Элементы.ГруппаФорма.Доступность = Истина; 

            ЭтаФорма.Элементы.ГруппаШапка.Доступность = Истина;

                                        

            ЭтаФорма.Элементы.ВидВзаимодействия.Доступность = Истина;

            ЭтаФорма.Элементы.Найти("ЗаписатьИЗакрыть").Доступность = Истина;

 

КонецПроцедуры    

           

&НаСервере

Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)

 

            Если ДоступнаРоль("ОграничитьСотрудникаУК") Тогда

                        ДоступностьЭлементовДляСотрудникаУК();

            КонецЕсли;

           

КонецПроцедуры

 

&НаСервере

Функция ДоступнаРоль(Знач стрРольНаСервере)

            Если РольДоступна(стрРольНаСервере) Тогда

                        Возврат Истина;

            Иначе

                        Возврат Ложь;          

            КонецЕсли;   

КонецФункции

 

&НаСервере

Функция СписокВидовВзаимодействийДляСотрудникаУК()

            СЗ = Новый СписокЗначений;

            СЗ.Добавить(Справочники.CRM_ВидыВзаимодействий.НайтиПоНаименованию("Отключение ресурса", Истина));

           

            Возврат СЗ;

КонецФункции        

 

&НаКлиенте

Процедура ВидВзаимодействияНачалоВыбора(Элемент, ДанныеВыбора, ВыборДобавлением, СтандартнаяОбработка)

           

            Если ДоступнаРоль("ОграничитьСотрудникаУК") Тогда

            СтандартнаяОбработка = Ложь;

 

            ПФ = Новый Структура;

            НК = Новый НастройкиКомпоновкиДанных;

            Отбор = НК.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));

            Отбор.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Ссылка");

            Отбор.ВидСравнения = ВидСравненияКомпоновкиДанных.ВСписке;

            Отбор.ПравоеЗначение = СписокВидовВзаимодействийДляСотрудникаУК();

            Отбор.Использование = Истина;

            Отбор.РежимОтображения = РежимОтображенияЭлементаНастройкиКомпоновкиДанных.Недоступный;

            ПФ.Вставить("ФиксированныеНастройки", НК);

            ОткрытьФорму("Справочник.CRM_ВидыВзаимодействий.ФормаВыбора", ПФ);      

            КонецЕсли;

           

КонецПроцедуры

 

            Проверяем результат в тонком клиенте на управляемых формах.

Рис. Форма документа без ограничений на поля формы и элементы справочника «Виды взаимодействий»

 

            Далее создаем профиль групп доступа «ОграничитьСотрудникаУК», добавляем в него роль «ОграничитьСотрудникаУК».

Рис. Создание профиля групп доступа «ОграничитьСотрудникаУК»

 

            Затем создаем группу доступа, в которую добавляем пользователя для тестирования.

Рис. Создание группы доступа «Ограничить сотрудника УК»

 

            Для проверки включаем себя в группу «Ограничить сотрудника УК» и смотрим как теперь выглядит документ «Взаимодействия».

 

Рис. Вид документа «Взаимодействие» с группой прав доступа «Ограничить сотрудника УК»

 

            ВЫВОД: элементы формы недоступны, кроме элемента формы «Вид взаимодействия» и кнопки «ЗаписатьИЗакрыть». В справочнике «Виды взаимодействий» при выборе значений на форме выбора доступен только элемент «Отключение ресурса».