Документооборот 8 КОРП, платформа 8.3.
Как ограничить доступ к некоторым реквизитам документа для определённой роли исполнителя?

Почитала форум, сделала так, но не работает конечно же.

```1c
    Если РольДоступна ("НачальникОтделаСбыта") Тогда
    Элементы.Элемент1.Видимость = Ложь;
    Элементы.Элемент2.Видимость = Ложь;
    иначе
    Элементы.Элемент1.Видимость = Истина;
    Элементы.Элемент2.Видимость = Истина;
    КонецЕсли;
```
---
```1c
    Роль_НачальникОтделаСбыта = Справочники.РолиИсполнителей.НайтиПоНаименованию("Начальник отдела сбыта");

    Запрос = Новый Запрос;
    Запрос.Текст = "ВЫБРАТЬ РАЗЛИЧНЫЕ
    | ИсполнителиРолейИДелегаты.ИсполнительДелегат
    |ИЗ
    | РегистрСведений.ИсполнителиРолейИДелегаты КАК ИсполнителиРолейИДелегаты
    | ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.РолиИсполнителей КАК РолиИсполнителей
    | ПО ИсполнителиРолейИДелегаты.РольПользователь.Владелец = РолиИсполнителей.Ссылка
    | И (ИсполнителиРолейИДелегаты.РольПользователь.Владелец =&РолиПользователя)
    |ГДЕ
    | ИсполнителиРолейИДелегаты.ИсполнительДелегат = &ИсполнительДелегат" ;
    Запрос.УстановитьПараметр("ИсполнительДелегат",Пользователь); //Тут Пользователь - для кого проверяем доступ
    Запрос.УстановитьПараметр("РолиПользователя",Роль_НачальникОтделаСбыта );

    РезультатЗапроса = Запрос.Выполнить();
    Если РезультатЗапроса.Пустой() тогда //Роли исполнителя нет
    Элементы.Элемент1.Видимость = Ложь;
    Элементы.Элемент2.Видимость = Ложь;
    Иначе
    Элементы.Элемент1.Видимость = Истина;
    Элементы.Элемент2.Видимость = Истина;
    КонецЕсли;
```
---
ОФ или УФ ?
---
УФ
---
Если РольДоступна("НачальникОтделаСбыта") Тогда
   ЭлементыФормы.ТвойРеквизит.Доступность(Видимость) = Истина;
  Иначе
   ЭлементыФормы.ТвойРеквизит.Доступность(Видимость) = Ложь;
  КонецЕсли;

Надо только через отладчик смотреть, тогда всё станет понятно
---
Про Документооборот вопрос был и про роли исполнителя, РольДоступна тут не подходит.
---
я с документооборотом не работал, но по правам и ролям сталкивался много...и не обязательно всё это дело пихать в запрос....
---
```1c
    Роль_НачальникОтделаСбыта = Справочники.РолиИсполнителей.НайтиПоНаименованию("Начальник отдела сбыта");

    Запрос = Новый Запрос;
    Запрос.Текст = "ВЫБРАТЬ РАЗЛИЧНЫЕ
    | ИсполнителиРолейИДелегаты.ИсполнительДелегат
    |ИЗ
    | РегистрСведений.ИсполнителиРолейИДелегаты КАК ИсполнителиРолейИДелегаты
    | ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.РолиИсполнителей КАК РолиИсполнителей
    | ПО ИсполнителиРолейИДелегаты.РольПользователь.Владелец = РолиИсполнителей.Ссылка
    | И (ИсполнителиРолейИДелегаты.РольПользователь.Владелец =&РолиПользователя)
    |ГДЕ
    | ИсполнителиРолейИДелегаты.ИсполнительДелегат = &ИсполнительДелегат" ;
    Запрос.УстановитьПараметр("ИсполнительДелегат",Пользователь); //Тут Пользователь - для кого проверяем доступ
    Запрос.УстановитьПараметр("РолиПользователя",Роль_НачальникОтделаСбыта );

    РезультатЗапроса = Запрос.Выполнить();
    Если РезультатЗапроса.Пустой() тогда //Роли исполнителя нет
    Элементы.Элемент1.Видимость = Ложь;
    Элементы.Элемент2.Видимость = Ложь;
    Иначе
    Элементы.Элемент1.Видимость = Истина;
    Элементы.Элемент2.Видимость = Истина;
    КонецЕсли;
```
---
```1c
    //Тут Пользователь - для кого проверяем доступ
```

Т.е. уникальный код пользователя?
---
Нет, ссылка на справочник Пользователи. Скорее всего текущий пользователь ( ПользователиКлиентСервер.ТекущийПользователь() )
---
Код в целом правильный, если имена корректные. Проблема может быть в другом, видимость/доступность элементов определяется типовым кодом и тут надо выполнять Ваш код, после типового, если до, то просто видимость переопределяется типовым кодом.
UPD не внимательно прочитал, в документообороте, действительно все сложно с ролями.
---
Если и проверять роль доступна - то только на права администратора, чтобы админ видел все.

```1c
    Если Не РольДоступна("ПолныеПрава") тогда
    тут проверяем уже роли исполнителя и ограничиваем видимость/доступность
    КонецЕсли;
```
---
Вместо "РольДоступна()" одинэсами уже давно рекомендуется использовать "ПравоДоступно()" :-)
---
А вообще ограничение к реквизитам следует делать через функциональную опцию, привязанную к константе, доступ к которой ограничен ролями или что-то в таком духе.
---
Вотакуот делать не надо: "Роль_НачальникОтделаСбыта = Справочники.РолиИсполнителей.НайтиПоНаименованию("Начальник отдела сбыта"); ". Если очень хочется такое наколбасить, можно предопределённым элементом роль сделать и обращаться через точку. А вообще в коде условия по конкретным значениям справочника ставить очень не комильфо.
---
Если очень хочется такое наколбасить, можно предопределённым элементом роль сделать и обращаться через точку.
Это 7 ролей в итоге.

Всем спасибо за участие.
Подумали и решили, проще скрыть реквизиты в настройках формы этих пользователей и запретить им менять настройки форм.
Чтобы конфигуратор сильно не колхозить.
---
Пожалуйста! :-)
---
Можно, например, доработать на ограничение реквизиты в самой роли, если позволяет платформа
---
Если вам необходимо ограничение доступа, то возможно использовать стандартный функционал "Настройка доступности по состоянию". Делайте запрет для всех состояний для определенной роли. В конфигураторе ничего менять не надо.
---
не вариант совсем.
Документ имеет несколько реквизитов. Эти реквизиты, по ходу рассмотрения документа, заполняют адресаты.

Например, реквизит 1 заполняет адресат 1, далее реквизит 2 заполняет адресат 2. Причем адресат 2 не должен иметь возможности редактировать реквизит 1. В стандартных настройках доступа дополнительных реквизитов нет возможности ограничить доступ к реквизиту по роли или пользователю. Поэтому приходится извращаться.
---
В шапке вашей просьбы нигде не указано, что все реализовано через дополнительные реквизиты. При стандартных реквизитах все работает замечательно.
---
работает, не спорю :) Но в данном случает мне не подходит. Даже для стандартных реквизитов. Т.к. документ на согласовании может находиться у 4 человек (у 4 ролей) одновременно и у каждого из реквизитов свой доступ для каждой роли. Всё сложно)
---
У дополнительных реквизитов есть условия "видимости/доступности" по значению реквизитов объекта. Если у вас предмет процесса "заполняемый", то возможно использовать этот механизм.
---
всё пробовала, это не то, что мне нужно. Встроенного функционала недостаточно для нужд нашего предприятия, к сожалению :(
---
Здравствуйте, подскажите, где в системе поставить запрет на удаление процесса в Документооборот 8 КОРП, редакция 2.1, когда процесс уже запущен создателем?