Как ограничить доступ к некоторым реквизитам документа для определённой роли исполнителя?
Документооборот 8 КОРП, платформа 8.3.
Как ограничить доступ к некоторым реквизитам документа для определённой роли исполнителя?
Почитала форум, сделала так, но не работает конечно же.
Как ограничить доступ к некоторым реквизитам документа для определённой роли исполнителя?
Почитала форум, сделала так, но не работает конечно же.
Если РольДоступна ("НачальникОтделаСбыта") Тогда
Элементы.Элемент1.Видимость = Ложь;
Элементы.Элемент2.Видимость = Ложь;
иначе
Элементы.Элемент1.Видимость = Истина;
Элементы.Элемент2.Видимость = Истина;
КонецЕсли;
Найденные решения
Роль_НачальникОтделаСбыта = Справочники.РолиИсполнителей.НайтиПоНаименованию("Начальник отдела сбыта");
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ РАЗЛИЧНЫЕ
| ИсполнителиРолейИДелегаты.ИсполнительДелегат
|ИЗ
| РегистрСведений.ИсполнителиРолейИДелегаты КАК ИсполнителиРолейИДелегаты
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.РолиИсполнителей КАК РолиИсполнителей
| ПО ИсполнителиРолейИДелегаты.РольПользователь.Владелец = РолиИсполнителей.Ссылка
| И (ИсполнителиРолейИДелегаты.РольПользователь.Владелец =&РолиПользователя)
|ГДЕ
| ИсполнителиРолейИДелегаты.ИсполнительДелегат = &ИсполнительДелегат" ;
Запрос.УстановитьПараметр("ИсполнительДелегат",Пользователь); //Тут Пользователь - для кого проверяем доступ
Запрос.УстановитьПараметр("РолиПользователя",Роль_НачальникОтделаСбыта );
РезультатЗапроса = Запрос.Выполнить();
Если РезультатЗапроса.Пустой() тогда //Роли исполнителя нет
Элементы.Элемент1.Видимость = Ложь;
Элементы.Элемент2.Видимость = Ложь;
Иначе
Элементы.Элемент1.Видимость = Истина;
Элементы.Элемент2.Видимость = Истина;
КонецЕсли;
ПоказатьОстальные ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
Роль_НачальникОтделаСбыта = Справочники.РолиИсполнителей.НайтиПоНаименованию("Начальник отдела сбыта");
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ РАЗЛИЧНЫЕ
| ИсполнителиРолейИДелегаты.ИсполнительДелегат
|ИЗ
| РегистрСведений.ИсполнителиРолейИДелегаты КАК ИсполнителиРолейИДелегаты
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.РолиИсполнителей КАК РолиИсполнителей
| ПО ИсполнителиРолейИДелегаты.РольПользователь.Владелец = РолиИсполнителей.Ссылка
| И (ИсполнителиРолейИДелегаты.РольПользователь.Владелец =&РолиПользователя)
|ГДЕ
| ИсполнителиРолейИДелегаты.ИсполнительДелегат = &ИсполнительДелегат" ;
Запрос.УстановитьПараметр("ИсполнительДелегат",Пользователь); //Тут Пользователь - для кого проверяем доступ
Запрос.УстановитьПараметр("РолиПользователя",Роль_НачальникОтделаСбыта );
РезультатЗапроса = Запрос.Выполнить();
Если РезультатЗапроса.Пустой() тогда //Роли исполнителя нет
Элементы.Элемент1.Видимость = Ложь;
Элементы.Элемент2.Видимость = Ложь;
Иначе
Элементы.Элемент1.Видимость = Истина;
Элементы.Элемент2.Видимость = Истина;
КонецЕсли;
Показать
Код в целом правильный, если имена корректные. Проблема может быть в другом, видимость/доступность элементов определяется типовым кодом и тут надо выполнять Ваш код, после типового, если до, то просто видимость переопределяется типовым кодом.
UPD не внимательно прочитал, в документообороте, действительно все сложно с ролями.
UPD не внимательно прочитал, в документообороте, действительно все сложно с ролями.
Если и проверять роль доступна - то только на права администратора, чтобы админ видел все.
Если Не РольДоступна("ПолныеПрава") тогда
тут проверяем уже роли исполнителя и ограничиваем видимость/доступность
КонецЕсли;
Вотакуот делать не надо: "Роль_НачальникОтделаСбыта = Справочники.РолиИсполнителей.НайтиПоНаименованию("Начальник отдела сбыта"); ". Если очень хочется такое наколбасить, можно предопределённым элементом роль сделать и обращаться через точку. А вообще в коде условия по конкретным значениям справочника ставить очень не комильфо.
(11)
Это 7 ролей в итоге.
Всем спасибо за участие.
Подумали и решили, проще скрыть реквизиты в настройках формы этих пользователей и запретить им менять настройки форм.
Чтобы конфигуратор сильно не колхозить.
Если очень хочется такое наколбасить, можно предопределённым элементом роль сделать и обращаться через точку.
Это 7 ролей в итоге.
Всем спасибо за участие.
Подумали и решили, проще скрыть реквизиты в настройках формы этих пользователей и запретить им менять настройки форм.
Чтобы конфигуратор сильно не колхозить.
Если вам необходимо ограничение доступа, то возможно использовать стандартный функционал "Настройка доступности по состоянию". Делайте запрет для всех состояний для определенной роли. В конфигураторе ничего менять не надо.
(15) не вариант совсем.
Документ имеет несколько реквизитов. Эти реквизиты, по ходу рассмотрения документа, заполняют адресаты.
Например, реквизит 1 заполняет адресат 1, далее реквизит 2 заполняет адресат 2. Причем адресат 2 не должен иметь возможности редактировать реквизит 1. В стандартных настройках доступа дополнительных реквизитов нет возможности ограничить доступ к реквизиту по роли или пользователю. Поэтому приходится извращаться.
Документ имеет несколько реквизитов. Эти реквизиты, по ходу рассмотрения документа, заполняют адресаты.
Например, реквизит 1 заполняет адресат 1, далее реквизит 2 заполняет адресат 2. Причем адресат 2 не должен иметь возможности редактировать реквизит 1. В стандартных настройках доступа дополнительных реквизитов нет возможности ограничить доступ к реквизиту по роли или пользователю. Поэтому приходится извращаться.
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот