Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
22 ноя 2024, 01:06

Настройка прав доступа

Автор Павел Сухоруков, 31 окт 2016, 14:17

0 Пользователей и 1 гость просматривают эту тему.

Павел Сухоруков

Здравствуйте форумчане.

немного предыстории:

Такой вопрос, УПП конфигурация, создана роль для просмотра некоторых документов (В обход роли "Пользователь"), дописаны ограничения в справочники и документы, например:

ЗаказПоставщику ИЗ Документ.ЗаказПоставщику КАК ЗаказПоставщику
ЛЕВОЕ СОЕДИНЕНИЕ Документ.ЗаказПоставщику.Товары КАК ЗаказПоставщикуТовары
ПО ЗаказПоставщику.Ссылка = ЗаказПоставщикуТовары.Ссылка
ЛЕВОЕ СОЕДИНЕНИЕ Документ.ЗаказПоставщику.Услуги КАК ЗаказПоставщикуУслуги
ПО ЗаказПоставщику.Ссылка = ЗаказПоставщикуУслуги.Ссылка
ЛЕВОЕ СОЕДИНЕНИЕ Документ.ЗаказПоставщику.Оборудование КАК ЗаказПоставщикуОборудование
ПО ЗаказПоставщику.Ссылка = ЗаказПоставщикуОборудование.Ссылка
ЛЕВОЕ СОЕДИНЕНИЕ Документ.ЗаказПоставщику.Материалы КАК ЗаказПоставщикуМатериалы
ПО ЗаказПоставщику.Ссылка = ЗаказПоставщикуМатериалы.Ссылка
ГДЕ (ЗаказПоставщику.Подразделение = &Подразделение
ИЛИ ЗаказПоставщикуМатериалы.Подразделение = &Подразделение
ИЛИ ЗаказПоставщикуОборудование.Подразделение = &Подразделение
ИЛИ ЗаказПоставщикуТовары.Подразделение = &Подразделение
ИЛИ ЗаказПоставщикуУслуги.Подразделение = &Подразделение)


Всё отображается в зависимости от пользователя, точнее его подразделения, т.к. был создан параметр сеанса и используется в запросе выше.
Все хорошо до дех пор, пока не натыкаюсь на документ, где используется конструкция вида:

ПолеФормы = ДоговорКонтрагента.Реквизит... и тд (В донном документа доступ к  договору контрагента закрыт)

Вопрос, как бороться с этим?  или может быть что-то не так делаю?

Изначально боролся использованием конструкции:
Попытка
ПолеФормы = ДоговорКонтрагента.Реквизит
Исключение
    //ОписаниеОшибки()
КонецПопытки;


Срабатывало, но мне кажется это "Костыль".

Подскажите что не так, буду признателен




ilyay

В зависимости от ситуации есть несколько вариантов решения:
1. Можно дать право на чтение без просмотра. Либо его не хватает, либо код хочет лишнего,
2. Переделывать, чтобы реквизит получался в модуле с полными правами,
3. Устанавливать привилегированный режим, а потом снимать его сразу после получения реквизита.
4. Сделать функцию по получению реквизита, где реквизит будет вытаскиваться запросом с опцией РАЗРЕШЕННЫЕ. И обрабатывать ситуацию, если запрос будет пустой.

Павел Сухоруков

Цитата: ilyay от 31 окт 2016, 15:11
В зависимости от ситуации есть несколько вариантов решения:
1. Можно дать право на чтение без просмотра. Либо его не хватает, либо код хочет лишнего,
2. Переделывать, чтобы реквизит получался в модуле с полными правами,
3. Устанавливать привилегированный режим, а потом снимать его сразу после получения реквизита.
4. Сделать функцию по получению реквизита, где реквизит будет вытаскиваться запросом с опцией РАЗРЕШЕННЫЕ. И обрабатывать ситуацию, если запрос будет пустой.

Спасибо за ответ! Буду что-то думать.

Дело в том, что обращений к недоступному нам договору контрагента достаточно много, и в основном это не в моем коде, а в коде самой конфигурации, вот я и поднял вопрос, может что-то не так делаю...

пример:

УстановитьВидимость()
...
Если ЗначениеЗаполнено(ДоговорКонтрагента) Тогда
Если ДоговорКонтрагента.ВедениеВзаиморасчетов = Перечисления.ВедениеВзаиморасчетовПоДоговорам.ПоДоговоруВЦелом Тогда
АвтоОтметка = Ложь;
...
:dfbsdfbsdf:

ilyay

Если речь про интерфейс, тогда еще можно регулировать доступ к реквизитам функциональными опциями.

Павел Сухоруков

Цитата: ilyay от 31 окт 2016, 15:41
Если речь про интерфейс, тогда еще можно регулировать доступ к реквизитам функциональными опциями.

Про интерфейс в том числе, формы не управляемые. Суть заключается в том чтобы пользователь мог смотреть документы, договора и заказы только в разрезе своего подразделения. Классическая реализация - шаблон ограничения RLS в УПП не работает так как надо.

Писать под каждую форму отбор и условие?
Есть ли возможность оставить,к примеру, чтение для договоров без ограничений и поставить ограничения на просмотр?

ilyay

В самой роли дайте право на чтение, не давайте права на просмотр.
Добавлено: 31 окт 2016, 16:11


Разделение данных по подразделениям?

Павел Сухоруков

Цитата: ilyay от 31 окт 2016, 16:08
В самой роли дайте право на чтение, не давайте права на просмотр.
Добавлено: 31 окт 2016, 16:11


Разделение данных по подразделениям?

Да, пользователь должен видеть договоры, документы и заказы своего подразделения.
Если я сделаю чтение договоров контрагента без ограничений, то пользователь сможет увидеть договора других подразделений. А мне надо граничить доступ.

ilyay

Вот так с RLS, например, люди делают: http://infostart.ru/public/380599/

Я спросил про то, что кроме RLS можно воспользоваться разделителями: http://v8.1c.ru/overview/Term_000000788.htm


Павел Сухоруков

Цитата: ilyay от 31 окт 2016, 16:35Вот так с RLS, например, люди делают: http://infostart.ru/public/380599/
Грубо говоря так и сделано

Добавлено: 31 окт 2016, 16:52


Цитата: ilyay от 31 окт 2016, 16:35
Вот так с RLS, например, люди делают: http://infostart.ru/public/380599/

Я спросил про то, что кроме RLS можно воспользоваться разделителями: http://v8.1c.ru/overview/Term_000000788.htm


В УПП нет возможности создания общих реквизитов
Добавлено: 31 окт 2016, 16:57


Всё упирается в справочник "ДоговорыКотрагентов", которому как и остальным документам прописано ограничение в RLS. В загвоздка в том, что при открытии некоторых документов, в коде идет обращение ,допустим, к реквизиту этого элемента справочника, а он недоступен, и в итоге документ не открывается. Таких мест обращения к  недоступному договору контрагентов много, причем код написан не мной. Вот в чем проблема.
=( Идей нет

ilyay

Если не переписывать код, тогда надо запрещать использовать внешние обработки и отчеты, разрешать доступ к реквизиту, отключать видимость договора в форме.

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

Теги: RLS доступ 

Похожие темы (5)

Рейтинг@Mail.ru

Поиск