Помогите разобраться с правами в 1С Розница 2.2
Добрый день.
Есть 1С Розница 2.2.7.42.
Какие бы я запреты не ставил в настройках прав пользователя, почти всегда ему все разрешено.
Полез в код и обнаружил там странный код, точнее странную проверку прав.
Запрос выбирает все значения для необходимого права с отбором по пользователю или группе пользователей в состав которой входит данны пользователи, или же по группе "Все пользователи", т.е. условие выглядит так:
В результате возвращается массив найденных значений.
Т.е. если на "Все пользователи" Разрешена продажа в минус = Истина, а на самого пользователя = Ложь, то в массив результатов войдет 2 значения Ложь и Истина.
Следом идет проверка:
И тут без мата просто не получается выразить всех чувств.
Т.е. не зависимо от того какие значения установлены для данного права, пользователь всегда будет иметь право продажи в минус.
Скажем запретили пользователю продажу в минус и группе "Все пользователи" тоже поставили запрет. Запрос вернет 2 значения Ложь и Ложь. В результат сработает проверка Если (Список.Количество() = 0) ИЛИ (Список.Количество() > 1) Тогда
Возврат Истина;
ФАК, откуда такая логика, почему в двух местах указано НЕ разрешена пользвователю продажа в минуса, а 1С все равно упорно дает такие права пользователю
Т.е. пользователю всегда все разрешено если права заданы на пользователя и на группу пользователей.
Как в рознице настроить что все имеют права редактировать цены в документах а 1 пользователь или группа пользователей не имеет таких прав?
Если в базе десяток пользователей, то можно каждому назначить персональные права и ни в коем случае не назначать права на группы пользователей. Но когда в базе сотня пользователей, разделенных по группам, то назначать каждому права просто не логично.
Может это только в этом релизе такая Ж с правами???
Есть 1С Розница 2.2.7.42.
Какие бы я запреты не ставил в настройках прав пользователя, почти всегда ему все разрешено.
Полез в код и обнаружил там странный код, точнее странную проверку прав.
Запрос выбирает все значения для необходимого права с отбором по пользователю или группе пользователей в состав которой входит данны пользователи, или же по группе "Все пользователи", т.е. условие выглядит так:
РегистрЗначениеПрав.Пользователь В
| (ВЫБРАТЬ
| ПользователиГруппы.Ссылка КАК Ссылка
| ИЗ
| Справочник.ГруппыПользователей.Состав КАК ПользователиГруппы
| ГДЕ
| ПользователиГруппы.Пользователь = &Пользователь
|
| ОБЪЕДИНИТЬ ВСЕ
|
| ВЫБРАТЬ
| ЗНАЧЕНИЕ(Справочник.ГруппыПользователей.ВсеПользователи)
|
| ОБЪЕДИНИТЬ ВСЕ
|
| ВЫБРАТЬ
| &Пользователь)
ПоказатьВ результате возвращается массив найденных значений.
Т.е. если на "Все пользователи" Разрешена продажа в минус = Истина, а на самого пользователя = Ложь, то в массив результатов войдет 2 значения Ложь и Истина.
Следом идет проверка:
Если (Список.Количество() = 0) ИЛИ (Список.Количество() > 1) Тогда
Возврат Истина;
Иначе
Возврат Список[0].Значение;
КонецЕсли;
И тут без мата просто не получается выразить всех чувств.
Т.е. не зависимо от того какие значения установлены для данного права, пользователь всегда будет иметь право продажи в минус.
Скажем запретили пользователю продажу в минус и группе "Все пользователи" тоже поставили запрет. Запрос вернет 2 значения Ложь и Ложь. В результат сработает проверка Если (Список.Количество() = 0) ИЛИ (Список.Количество() > 1) Тогда
Возврат Истина;
ФАК, откуда такая логика, почему в двух местах указано НЕ разрешена пользвователю продажа в минуса, а 1С все равно упорно дает такие права пользователю
Т.е. пользователю всегда все разрешено если права заданы на пользователя и на группу пользователей.
Как в рознице настроить что все имеют права редактировать цены в документах а 1 пользователь или группа пользователей не имеет таких прав?
Если в базе десяток пользователей, то можно каждому назначить персональные права и ни в коем случае не назначать права на группы пользователей. Но когда в базе сотня пользователей, разделенных по группам, то назначать каждому права просто не логично.
Может это только в этом релизе такая Ж с правами???
По теме из базы знаний
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(2) - эта информация 100% верная, т.е. в последних версиях по другому проверяются права?
(3) - можно, я ж написал, что если ставить права только на пользователя - все нормально, а если на пользователя и на группу, в которой он находится - то тогда проблемы с правами начинаются.
(4) - возможно я не так объяснил, постараюсь еще раз объяснить другими словами.
Есть Пользователь, и есть Группа. Пользователь входит в состав этой Группы.
Пользователю назначаю доп право "Разрешена продажа в минус" = НЕТ
Группе назначаю доп право "Разрешена продажа в минус" = НЕТ
При этом 1С не запрещает продажу в минус.
А все из за того что на одно и то же доп право назначено 2 варианта, и не важно какие они ДА/ДА или НЕТ/НЕТ или ДА/НЕТ
1С всегда будет разрешать продажу в минус из-за этого куска говнокода:
Потому что Список в данном случае содержит 2 значения, а то и 3 может содержать, если на группу "Все пользователи" так же назначены доп права.
(3) - можно, я ж написал, что если ставить права только на пользователя - все нормально, а если на пользователя и на группу, в которой он находится - то тогда проблемы с правами начинаются.
(4) - возможно я не так объяснил, постараюсь еще раз объяснить другими словами.
Есть Пользователь, и есть Группа. Пользователь входит в состав этой Группы.
Пользователю назначаю доп право "Разрешена продажа в минус" = НЕТ
Группе назначаю доп право "Разрешена продажа в минус" = НЕТ
При этом 1С не запрещает продажу в минус.
А все из за того что на одно и то же доп право назначено 2 варианта, и не важно какие они ДА/ДА или НЕТ/НЕТ или ДА/НЕТ
1С всегда будет разрешать продажу в минус из-за этого куска говнокода:
Если (Список.Количество() = 0) ИЛИ (Список.Количество() > 1) Тогда
Возврат Истина;
Потому что Список в данном случае содержит 2 значения, а то и 3 может содержать, если на группу "Все пользователи" так же назначены доп права.
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот