Группа: Пользователи
Сообщений: 48
Спасибо сказали: 0 раз
Рейтинг: 0
Конфигурация: Управление торговлей.
Всем доброе время суток. Помогите с запросом в правах доступа к регистру "ДенежныеСредства" На данный момент есть следующий запрос:
ДенежныеСредства ГДЕ (ДенежныеСредства.БанковскийСчетКасса.Ссылка В (ВЫБРАТЬ БанковскиеСчета.Ссылка ИЗ Справочник.БанковскиеСчета КАК БанковскиеСчета ПРАВОЕ СОЕДИНЕНИЕ РегистрСведений.ПраваДоступаПользователей КАК ПраваДоступаПользователей ПО БанковскиеСчета.Ссылка = ПраваДоступаПользователей.ОбъектДоступа ГДЕ ПраваДоступаПользователей.Пользователь В (&ТекущийПользователь)) ИЛИ ДенежныеСредства.БанковскийСчетКасса.Ссылка В (ВЫБРАТЬ Кассы.Ссылка ИЗ Справочник.Кассы КАК Кассы ПРАВОЕ СОЕДИНЕНИЕ РегистрСведений.ПраваДоступаПользователей КАК ПраваДоступаПользователей ПО Кассы.Ссылка = ПраваДоступаПользователей.ОбъектДоступа ГДЕ ПраваДоступаПользователей.Пользователь В (&ТекущийПользователь)))
Если пользователь с ограничением прав, которые тут описаны просматривает данный регистр - получаем следующую картинку
Соответственно отчет "Ведомость по денежным средствам", если детализировать по "Документ движения регистратор" выдает:
Глюк состоит в следующем: в регистре есть ограничение по кассе/банковскому счету, но нет ограничения по контрагенту соответственно те документы, к которым есть доступ по кассе, но нет доступа по клиенту, - выдает "Объект не найден" Помогите дописать этот запрос так , чтобы накладывались ограничения на контрагента.
Группа: Пользователи
Сообщений: 48
Спасибо сказали: 0 раз
Рейтинг: 0
Цитата(kivals @ 20.11.12, 15:28)
А можно ли использовать RLS рекурсивно? Т.е. задать:
(ДенежныеСредства.Регистратор В (ВЫБРАТЬ РАЗРЕШЕННЫЕ Ссылка ИЗ Документ.ХХХ ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ РАЗРЕШЕННЫЕ Ссылка ИЗ Документ.УУУ))
?
РАЗРЕШЕННЫЕ тут не при чем. вопрос как добавить необходимые поля в запросе В ПРАВАХ на регистр? если открывать конструктор, то там нет таких полей. где их брать и возможно ли сделать такое ограничение в общем?
А мне нужны ограничения по Контрагенту и Статье движения денежных средств.
ИМХО как раз "при чем". Если система выдает "Объект не найден" то либо он отсутсвует в БД, либо к нему нет доступа (НЕ РАЗРЕШЕН) правами RLS. Так что такой вариант использования был бы очень удобен: а вдруг завтра добавится новое правило запрета в документы-регистраторы (например - по организации или дате)? Тогда все запросы, использующие РЛС рекурсивно, не нужно было бы переписывать. С другой стороны - такая возможность может сильно снижать производительность.
Группа: Пользователи
Сообщений: 1
Спасибо сказали: 0 раз
Рейтинг: 0
У вас в RLS прописан запрет на объекты (справчоники и документы), но не прописан запрет для регистров. Пропишите запрет для регистров по измерениям. Тогда строки с запрещенными элементами не будут попадать в результаты запроса.
У вас в RLS прописан запрет на объекты (справчоники и документы), но не прописан запрет для регистров. Пропишите запрет для регистров по измерениям. Тогда строки с запрещенными элементами не будут попадать в результаты запроса.
Если я правильно понимаю - в данном регистре Измерений нужного типа как раз нет. По-моему в общем виде задача не совсем простая. Пример: Есть регистр, у которого могут быть 2 вида регистраторов. Предположим других измерений нет (только ресурсы) Регистратор1 имеет реквизит Поставщик, типа Контрагенты, по которому есть правила RLS Регистратор2 имеет реквизит Покапатель (все остальное - аналогично) Как прописать правила для регистра? А если регистраторов больше - из каждого копировать правила по каждому реквизиту RLS? А если ограничение касается не одного реквизита регистратора, в 2х, 3х, ... ? А если ограничение на реквизит - по группам доступа (т.е. связь с данными ограничения через 2-3 таблицы БД)? А если... Вы себе представляете запрос RLS к регистру, с учетом проверки вида регистратора? ИМХО тут такие тормоза будут, что лучше вообще не открывать регистр
P.S. Если я правильно понял [необходимо зарегистрироваться для просмотра ссылки], то использовать РАЗРЕШЕННЫЕ в РЛС все же возможно.
Хотя... как бы это не вызвало зацикливания... Таки надо проверять
Это я понимаю. Вопрос в том, можно ли его использовать внутри самих запросов РЛС, т.е. построение РЛС рекурсивно. Например: у меня есть Справочник.Контрагенты, в котором РЛС разрешены некоторые записи (пусть по какому-то сложному правилу, в котором я не хочу разбираться) Могу ли я в правилах РЛС для документа написать
ВЫБРАТЬ РАЗРЕШЕННЫЕ Т ИЗ Т ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Контрагенты КАК Т2 ПО Т.Контрагент = Т2.Ссылка
Группа: Пользователи
Сообщений: 48
Спасибо сказали: 0 раз
Рейтинг: 0
Вот про регистр я ка раз и спрашиваю. Я знаю в чем причина, но не знаю как дописать запрос по правам в регистре. Сейчас у меня запрос в правах на регистр такой, как в первом посте. Проблема в том как ограничить дополнительно по контрагентам и статьям движения денежных средств. Попробовал сделать еще один вариант запроса методом добавления в конструкторе запроса таблицы регистра "ДенежныеСредства" Вот что получилось:
ДенежныеСредства.БанковскийСчетКасса.Ссылка В (ВЫБРАТЬ БанковскиеСчета.Ссылка ИЗ Справочник.БанковскиеСчета КАК БанковскиеСчета ПРАВОЕ СОЕДИНЕНИЕ РегистрСведений.ПраваДоступаПользователей КАК ПраваДоступаПользователей ПО БанковскиеСчета.Ссылка = ПраваДоступаПользователей.ОбъектДоступа ГДЕ ПраваДоступаПользователей.Пользователь В (&ТекущийПользователь)) ИЛИ ДенежныеСредства.БанковскийСчетКасса.Ссылка В (ВЫБРАТЬ Кассы.Ссылка ИЗ Справочник.Кассы КАК Кассы ПРАВОЕ СОЕДИНЕНИЕ РегистрСведений.ПраваДоступаПользователей КАК ПраваДоступаПользователей ПО Кассы.Ссылка = ПраваДоступаПользователей.ОбъектДоступа ГДЕ ПраваДоступаПользователей.Пользователь В (&ТекущийПользователь)) И ДенежныеСредстваПолная.Контрагент.Ссылка В (ВЫБРАТЬ Контрагент.Ссылка ИЗ Справочник.Контрагенты КАК Контрагент ПРАВОЕ СОЕДИНЕНИЕ РегистрСведений.ПраваДоступаПользователей КАК ПраваДоступаПользователей ПО Контрагент.Ссылка = ПраваДоступаПользователей.ОбъектДоступа ГДЕ ПраваДоступаПользователей.Пользователь В (&ТекущийПользователь))
НО к сожалению это тоже НЕ РАБОТАЕТ.
Если админы не удалят ссылку, то вот собственно видео что мне нужно и как это работает сейчас.
Группа: Местный
Сообщений: 46
Спасибо сказали: 21 раз
Рейтинг: 0
На мой взгляд, здесь неправильно выбран сам подход к разграничению прав доступа. Лучшим вариантом было бы завести отдельные счета и кассы для "секретных" и "не секретных" операций, тогда права настроить было бы намного проще (доступ ограничивался бы ко всему счету/кассе целиком). Без этого вводить ограничение на отдельные записи крайне нежелательно.
Рассмотрим такую ситуацию: по счету есть движения, как "видные" пользователю, так и "не видные". Пользователь смотрит остатки и обороты денежных средств по счету. Что он должен увидеть? Либо то, что у Вас в первом сообщении, либо неправильные остатки (чего, насколько я знаю, не позволит платформа). Из-за этого и трудности - Вы пытаетесь решить нерешаемую таким способом задачу.
Как еще один вариант - создайте новый отчет по этому регистру, и в запросе отчета используйте РАЗРЕШЕННЫЕ. Тогда записи "Объект не найден" туда не попадут. А доступ к записям регистра ДенежныеСредства и стандартному отчету по нему для пользователей закройте на уровне интерфейса.
Насколько я знаю, в Вашей конфигурации есть регистр ДвиженияДенежныхСредств. Вот его и нужно использовать, там измерений больше (есть и Контрагент, и СтатьяДвиженияДенежныхСредств, и т.д.) и простор для создания нужных ограничений есть. А расшифровку движений по ДенежнымСредствам тогда вообще не нужно нигде показывать, из этого регистра понадобятся только остатки.
На мой взгляд, здесь неправильно выбран сам подход к разграничению прав доступа...
Не зная задачу - трудно судить правильный или не правильный использовался подход. В моей практике часто возникает необходимость дать пользователю доступ к в счетам своего филиала, а чужие - скрыть. Предложенным Вами методом (отдельные счета и кассы для "секретных" и "не секретных" операций) этот вопрос не решить, т.к. у каждого пользователя будут свои видимые и невидимые счета - что и есть суть РЛС.
Группа: Местный
Сообщений: 46
Спасибо сказали: 21 раз
Рейтинг: 0
Доступ только к счетам своего филиала - это как раз то, что я предлагаю ("свои" как раз и будут "не секретными" для пользователя). Остатки и движения по счетам других филиалов тогда ему не нужны и не видны вообще, а RLS построен на контроле счета, проблемы не возникает.
А если нужно видеть именно движения по счетам, среди которых могут быть и "свои", и "чужие" в пределах одного счета, тогда регистр ДвиженияДенежныхСредств в помощь.
Группа: Пользователи
Сообщений: 48
Спасибо сказали: 0 раз
Рейтинг: 0
Почему я разграничиваю кассу (счета) по статьям затрат? Вариант: Клиент платит наличкой, при этом менеджер должен видеть с детализацией по документам как и когда платил клиент. Это обязательно!!! При этом кассир вечером сверяет кассу, где есть, как вы понимаете, движения не только "оплата покупателя", так и "секретная" информация. Остаток по кассе менеджеру конечно нафиг не не нужен, но кассиру и финансовому директору....
2-е. менеджеры разных отделов не должны видеть оплаты по статье "оплата покупателя" чужих клиентов, - поэтому стоит разграничение по клиенту. Так же есть еще несколько статей ДДС, которые менеджеру необходимо видеть - это "командировка", "Премия" и т.д.
Вот и получается нужно разграничить КАССА/ Р.Счет, Клиент, Статья ДДС.
Во всех запросах я поставил "ВЫБРАТЬ РАЗРЕШЕННЫЕ". "Объект не найден" - исключительно дырка в правах по регистру "Денежные средства". Согласен что как вариант можно вообще закрыть этот отчет для пользователя и сделать ему свой отчет по регистру "ДвиженияДенежныхСредств". Но я думал что можно как-то прописать права именно в этот регистр. Кстати в регистре "ДвиженияДенежныхСредств" при расшифровке движений "Объект не найден" не появляется, - там все ОК!
Цитата(XBrut @ 09.12.12, 12:55)
Товарищи, посоветуйте толковую книжку по этим правам а?
Поддерживаю!!! Хочется какую-либо полноценную информацию по данному вопросу.
1С Предприятие 8.3, 1С Предприятие 8.2, 1С Предприятие 8.1, 1С Предприятие 8.0, 1С Предприятие 7.7, Литература 1С, Общие вопросы по администрированию 1С, Методическая поддержка 1С - всё в одном месте: на Украинском 1С форуме!