Заказы на доработку 1С (сервис удаленной работы)

Хранилище

База знаний
Неназначенных незавершенных заказов: 1
Бесплатные отчеты, обработки, конфигурации, внешние компоненты для 1С Статьи, описание работы, методики по работе с 1С

Здравствуйте, гость ( Вход | Зарегистрироваться )



> Права на уровне записей , Контроль прав доступа к регистру на уровне записей          
maxst22 Подменю пользователя
сообщение 06.11.12, 18:15
Сообщение #1

Общительный
**
Группа: Пользователи
Сообщений: 48
Спасибо сказали: 0 раз
Рейтинг: 0

Конфигурация: Управление торговлей.

Всем доброе время суток.
Помогите с запросом в правах доступа к регистру "ДенежныеСредства"
На данный момент есть следующий запрос:
ДенежныеСредства ГДЕ (ДенежныеСредства.БанковскийСчетКасса.Ссылка В
                (ВЫБРАТЬ
                    БанковскиеСчета.Ссылка
                ИЗ
                    Справочник.БанковскиеСчета КАК БанковскиеСчета ПРАВОЕ СОЕДИНЕНИЕ
РегистрСведений.ПраваДоступаПользователей КАК ПраваДоступаПользователей
                        ПО
                            БанковскиеСчета.Ссылка = ПраваДоступаПользователей.ОбъектДоступа
                ГДЕ
                    ПраваДоступаПользователей.Пользователь В (&ТекущийПользователь))
            ИЛИ ДенежныеСредства.БанковскийСчетКасса.Ссылка В
                (ВЫБРАТЬ
                    Кассы.Ссылка
                ИЗ
                    Справочник.Кассы КАК Кассы ПРАВОЕ СОЕДИНЕНИЕ РегистрСведений.ПраваДоступаПользователей КАК
ПраваДоступаПользователей
                        ПО
                            Кассы.Ссылка = ПраваДоступаПользователей.ОбъектДоступа
                ГДЕ
                    ПраваДоступаПользователей.Пользователь В (&ТекущийПользователь)))


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


Соответственно отчет "Ведомость по денежным средствам", если детализировать по "Документ движения регистратор" выдает:


Глюк состоит в следующем: в регистре есть ограничение по кассе/банковскому счету, но нет ограничения по контрагенту
соответственно те документы, к которым есть доступ по кассе, но нет доступа по клиенту, - выдает "Объект не найден"
Помогите дописать этот запрос так , чтобы накладывались ограничения на контрагента.

Сообщение отредактировал Vofka - 06.11.12, 19:34

kivals Подменю пользователя
сообщение 20.11.12, 14:28
Сообщение #2

Завсегдатай
Иконка группы
Группа: Местный
Сообщений: 105
Из: Киев
Спасибо сказали: 27 раз
Рейтинг: 0

А можно ли использовать RLS рекурсивно?
Т.е. задать:
(ДенежныеСредства.Регистратор В 
(ВЫБРАТЬ РАЗРЕШЕННЫЕ Ссылка
  ИЗ Документ.ХХХ
  ОБЪЕДИНИТЬ ВСЕ
  ВЫБРАТЬ РАЗРЕШЕННЫЕ Ссылка
  ИЗ Документ.УУУ))
?

maxst22 Подменю пользователя
сообщение 22.11.12, 17:45
Сообщение #3

Общительный
**
Группа: Пользователи
Сообщений: 48
Спасибо сказали: 0 раз
Рейтинг: 0

Цитата(kivals @ 20.11.12, 15:28) *
А можно ли использовать RLS рекурсивно?
Т.е. задать:
(ДенежныеСредства.Регистратор В 
(ВЫБРАТЬ РАЗРЕШЕННЫЕ Ссылка
  ИЗ Документ.ХХХ
  ОБЪЕДИНИТЬ ВСЕ
  ВЫБРАТЬ РАЗРЕШЕННЫЕ Ссылка
  ИЗ Документ.УУУ))
?


РАЗРЕШЕННЫЕ тут не при чем. вопрос как добавить необходимые поля в запросе В ПРАВАХ на регистр?
если открывать конструктор, то там нет таких полей. где их брать и возможно ли сделать такое ограничение в общем?


А мне нужны ограничения по Контрагенту и Статье движения денежных средств.

kivals Подменю пользователя
сообщение 29.11.12, 11:47
Сообщение #4

Завсегдатай
Иконка группы
Группа: Местный
Сообщений: 105
Из: Киев
Спасибо сказали: 27 раз
Рейтинг: 0

Цитата(maxst22 @ 22.11.12, 18:45) *
РАЗРЕШЕННЫЕ тут не при чем.

ИМХО как раз "при чем". Если система выдает "Объект не найден" то либо он отсутсвует в БД, либо к нему нет доступа (НЕ РАЗРЕШЕН) правами RLS.
Так что такой вариант использования был бы очень удобен: а вдруг завтра добавится новое правило запрета в документы-регистраторы (например - по организации или дате)? Тогда все запросы, использующие РЛС рекурсивно, не нужно было бы переписывать. С другой стороны - такая возможность может сильно снижать производительность.

wondermaker Подменю пользователя
сообщение 06.12.12, 2:09
Сообщение #5

Молчаливый
*
Группа: Пользователи
Сообщений: 1
Спасибо сказали: 0 раз
Рейтинг: 0

У вас в RLS прописан запрет на объекты (справчоники и документы), но не прописан запрет для регистров.
Пропишите запрет для регистров по измерениям. Тогда строки с запрещенными элементами не будут попадать в результаты запроса.

kivals Подменю пользователя
сообщение 06.12.12, 11:45
Сообщение #6

Завсегдатай
Иконка группы
Группа: Местный
Сообщений: 105
Из: Киев
Спасибо сказали: 27 раз
Рейтинг: 0

Цитата(wondermaker @ 06.12.12, 3:09) *
У вас в RLS прописан запрет на объекты (справчоники и документы), но не прописан запрет для регистров. Пропишите запрет для регистров по измерениям. Тогда строки с запрещенными элементами не будут попадать в результаты запроса.

Если я правильно понимаю - в данном регистре Измерений нужного типа как раз нет. По-моему в общем виде задача не совсем простая.
Пример:
Есть регистр, у которого могут быть 2 вида регистраторов. Предположим других измерений нет (только ресурсы)
Регистратор1 имеет реквизит Поставщик, типа Контрагенты, по которому есть правила RLS
Регистратор2 имеет реквизит Покапатель (все остальное - аналогично)
Как прописать правила для регистра?
А если регистраторов больше - из каждого копировать правила по каждому реквизиту RLS?
А если ограничение касается не одного реквизита регистратора, в 2х, 3х, ... ?
А если ограничение на реквизит - по группам доступа (т.е. связь с данными ограничения через 2-3 таблицы БД)?
А если...
Вы себе представляете запрос RLS к регистру, с учетом проверки вида регистратора?
ИМХО тут такие тормоза будут, что лучше вообще не открывать регистр smile.gif

P.S. Если я правильно понял [необходимо зарегистрироваться для просмотра ссылки], то использовать РАЗРЕШЕННЫЕ в РЛС все же возможно.

Хотя... как бы это не вызвало зацикливания...
Таки надо проверять smile.gif

Vofka Подменю пользователя
сообщение 06.12.12, 11:47
Сообщение #7

У нас здесь своя атмосфера...
***********
Группа: Основатель
Сообщений: 13955
Из: Киев
Спасибо сказали: 4520 раз
Рейтинг: 3642.8

Цитата(kivals @ 06.12.12, 11:38) *
P.S. Если я правильно понял суть комментария, то использовать РАЗРЕШЕННЫЕ в РЛС все же возможно.

Слово РАЗРЕШЕННЫЕ как раз и существует из-за RLS.

kivals Подменю пользователя
сообщение 06.12.12, 13:23
Сообщение #8

Завсегдатай
Иконка группы
Группа: Местный
Сообщений: 105
Из: Киев
Спасибо сказали: 27 раз
Рейтинг: 0

Цитата(Vofka @ 06.12.12, 12:47) *
Слово РАЗРЕШЕННЫЕ как раз и существует из-за RLS.

Это я понимаю. Вопрос в том, можно ли его использовать внутри самих запросов РЛС, т.е. построение РЛС рекурсивно.
Например: у меня есть Справочник.Контрагенты, в котором РЛС разрешены некоторые записи (пусть по какому-то сложному правилу, в котором я не хочу разбираться)
Могу ли я в правилах РЛС для документа написать
ВЫБРАТЬ РАЗРЕШЕННЫЕ Т ИЗ Т
ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Контрагенты КАК Т2
ПО Т.Контрагент = Т2.Ссылка

Или как-то подобно?...

maxst22 Подменю пользователя
сообщение 06.12.12, 13:25
Сообщение #9

Общительный
**
Группа: Пользователи
Сообщений: 48
Спасибо сказали: 0 раз
Рейтинг: 0

Вот про регистр я ка раз и спрашиваю. Я знаю в чем причина, но не знаю как дописать запрос по правам в регистре.
Сейчас у меня запрос в правах на регистр такой, как в первом посте.
Проблема в том как ограничить дополнительно по контрагентам и статьям движения денежных средств.
Попробовал сделать еще один вариант запроса методом добавления в конструкторе запроса таблицы регистра "ДенежныеСредства"
Вот что получилось:

ДенежныеСредства.БанковскийСчетКасса.Ссылка В
        (ВЫБРАТЬ
            БанковскиеСчета.Ссылка
        ИЗ
            Справочник.БанковскиеСчета КАК БанковскиеСчета ПРАВОЕ СОЕДИНЕНИЕ РегистрСведений.ПраваДоступаПользователей КАК ПраваДоступаПользователей
                ПО
                    БанковскиеСчета.Ссылка = ПраваДоступаПользователей.ОбъектДоступа
        ГДЕ
            ПраваДоступаПользователей.Пользователь В (&ТекущийПользователь))
    ИЛИ ДенежныеСредства.БанковскийСчетКасса.Ссылка В
            (ВЫБРАТЬ
                Кассы.Ссылка
            ИЗ
                Справочник.Кассы КАК Кассы ПРАВОЕ СОЕДИНЕНИЕ РегистрСведений.ПраваДоступаПользователей КАК ПраваДоступаПользователей
                    ПО
                        Кассы.Ссылка = ПраваДоступаПользователей.ОбъектДоступа
            ГДЕ
                ПраваДоступаПользователей.Пользователь В (&ТекущийПользователь))
        И ДенежныеСредстваПолная.Контрагент.Ссылка В
            (ВЫБРАТЬ
                Контрагент.Ссылка
            ИЗ
                Справочник.Контрагенты КАК Контрагент ПРАВОЕ СОЕДИНЕНИЕ РегистрСведений.ПраваДоступаПользователей КАК ПраваДоступаПользователей
                    ПО
                        Контрагент.Ссылка = ПраваДоступаПользователей.ОбъектДоступа
            ГДЕ
                ПраваДоступаПользователей.Пользователь В (&ТекущийПользователь))


НО к сожалению это тоже НЕ РАБОТАЕТ. sad.gif

Если админы не удалят ссылку, то вот собственно видео что мне нужно и как это работает сейчас.

Пример запроса настройки прав доступа (RLS)



Сообщение отредактировал MATEVI - 06.12.12, 14:11
Причина редактирования: ютюб

yuritch Подменю пользователя
сообщение 07.12.12, 8:57
Сообщение #10

Общительный
Иконка группы
Группа: Местный
Сообщений: 46
Спасибо сказали: 21 раз
Рейтинг: 0

На мой взгляд, здесь неправильно выбран сам подход к разграничению прав доступа. Лучшим вариантом было бы завести отдельные счета и кассы для "секретных" и "не секретных" операций, тогда права настроить было бы намного проще (доступ ограничивался бы ко всему счету/кассе целиком). Без этого вводить ограничение на отдельные записи крайне нежелательно.

Рассмотрим такую ситуацию: по счету есть движения, как "видные" пользователю, так и "не видные". Пользователь смотрит остатки и обороты денежных средств по счету. Что он должен увидеть? Либо то, что у Вас в первом сообщении, либо неправильные остатки (чего, насколько я знаю, не позволит платформа). Из-за этого и трудности - Вы пытаетесь решить нерешаемую таким способом задачу.

Как еще один вариант - создайте новый отчет по этому регистру, и в запросе отчета используйте РАЗРЕШЕННЫЕ. Тогда записи "Объект не найден" туда не попадут. А доступ к записям регистра ДенежныеСредства и стандартному отчету по нему для пользователей закройте на уровне интерфейса.

Насколько я знаю, в Вашей конфигурации есть регистр ДвиженияДенежныхСредств. Вот его и нужно использовать, там измерений больше (есть и Контрагент, и СтатьяДвиженияДенежныхСредств, и т.д.) и простор для создания нужных ограничений есть. А расшифровку движений по ДенежнымСредствам тогда вообще не нужно нигде показывать, из этого регистра понадобятся только остатки.

Сообщение отредактировал yuritch - 07.12.12, 9:22

kivals Подменю пользователя
сообщение 07.12.12, 10:16
Сообщение #11

Завсегдатай
Иконка группы
Группа: Местный
Сообщений: 105
Из: Киев
Спасибо сказали: 27 раз
Рейтинг: 0

Цитата(yuritch @ 07.12.12, 9:57) *
На мой взгляд, здесь неправильно выбран сам подход к разграничению прав доступа...

Не зная задачу - трудно судить правильный или не правильный использовался подход. В моей практике часто возникает необходимость дать пользователю доступ к в счетам своего филиала, а чужие - скрыть. Предложенным Вами методом (отдельные счета и кассы для "секретных" и "не секретных" операций) этот вопрос не решить, т.к. у каждого пользователя будут свои видимые и невидимые счета - что и есть суть РЛС.

yuritch Подменю пользователя
сообщение 07.12.12, 12:06
Сообщение #12

Общительный
Иконка группы
Группа: Местный
Сообщений: 46
Спасибо сказали: 21 раз
Рейтинг: 0

Доступ только к счетам своего филиала - это как раз то, что я предлагаю ("свои" как раз и будут "не секретными" для пользователя). Остатки и движения по счетам других филиалов тогда ему не нужны и не видны вообще, а RLS построен на контроле счета, проблемы не возникает.

А если нужно видеть именно движения по счетам, среди которых могут быть и "свои", и "чужие" в пределах одного счета, тогда регистр ДвиженияДенежныхСредств в помощь.

XBrut Подменю пользователя
сообщение 09.12.12, 11:55
Сообщение #13

Статус
**********
Группа: Пользователи
Сообщений: 1543
Спасибо сказали: 254 раз
Рейтинг: 0

Товарищи, посоветуйте толковую книжку по этим правам а?

maxst22 Подменю пользователя
сообщение 10.12.12, 10:31
Сообщение #14

Общительный
**
Группа: Пользователи
Сообщений: 48
Спасибо сказали: 0 раз
Рейтинг: 0

Почему я разграничиваю кассу (счета) по статьям затрат? Вариант: Клиент платит наличкой, при этом менеджер должен видеть с детализацией по документам как и когда платил клиент. Это обязательно!!! При этом кассир вечером сверяет кассу, где есть, как вы понимаете, движения не только "оплата покупателя", так и "секретная" информация. Остаток по кассе менеджеру конечно нафиг не не нужен, но кассиру и финансовому директору....

2-е. менеджеры разных отделов не должны видеть оплаты по статье "оплата покупателя" чужих клиентов, - поэтому стоит разграничение по клиенту.
Так же есть еще несколько статей ДДС, которые менеджеру необходимо видеть - это "командировка", "Премия" и т.д.

Вот и получается нужно разграничить КАССА/ Р.Счет, Клиент, Статья ДДС.

Во всех запросах я поставил "ВЫБРАТЬ РАЗРЕШЕННЫЕ". "Объект не найден" - исключительно дырка в правах по регистру "Денежные средства".
Согласен что как вариант можно вообще закрыть этот отчет для пользователя и сделать ему свой отчет по регистру "ДвиженияДенежныхСредств". Но я думал что можно как-то прописать права именно в этот регистр.
Кстати в регистре "ДвиженияДенежныхСредств" при расшифровке движений "Объект не найден" не появляется, - там все ОК!




Цитата(XBrut @ 09.12.12, 12:55) *
Товарищи, посоветуйте толковую книжку по этим правам а?

Поддерживаю!!! Хочется какую-либо полноценную информацию по данному вопросу.

Не нашли ответа на свой вопрос?
Зарегистрируйтесь и задайте новый вопрос.


Ответить Новая тема
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 

RSS Текстовая версия Сейчас: 28.04.24, 0:30
1С Предприятие 8.3, 1С Предприятие 8.2, 1С Предприятие 8.1, 1С Предприятие 8.0, 1С Предприятие 7.7, Литература 1С, Общие вопросы по администрированию 1С, Методическая поддержка 1С - всё в одном месте: на Украинском 1С форуме!