Как ограничить некоторым пользователям выборочный доступ к элементам справочника номенклатура? Т.е. чтобы некоторые позиции для них были не видны? Никак не могу вкурить как создать ограничение.
Сформулируйте задачу чётче, непонятно ведь ничего: есть некий реквизит и надо скрыть некий товар. Ну как это можно понять?
Согласен. Замечание по существу. Конкретизирую. Есть справочник, например, номенклатуры. В справочнике все товары и услуги разделены на 2 корневые группы, "Продажа" и "Учет". Нужно сделать так, чтобы пользователь не имеющей роли "Администрирование" не мог видеть все товары и услуги из группы "Учет". На первый взгляд задача простая, но у меня не получается. Помогите, пожалуйста. спасибо.
Добавьте в перечисление ВидыОбъектовДоступа значение Номенклатура В измерение ОбъектДоступа регистра НастройкиПравДоступаПользователей добавьте тип Номенклатура
Роли - Все ограничения доступа - Шаблоны ограничений Добавьте шаблон: ОграничениеНаНоменклатуру Текст шаблона:
ТекущаяТаблица ИЗ #ТекущаяТаблица КАК ТекущаяТаблица
ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.НастройкиПравДоступаПользователей КАК ПраваДоступа ПО ВидОбъектаДоступа = ЗНАЧЕНИЕ(Перечисление.ВидыОбъектовДоступа.Номенклатура) И ПраваДоступа.Пользователь = &ТекущийПользователь И ТекущаяТаблица.Родитель.Ссылка = ПраваДоступа.ОбъектДоступа
ГДЕ (НЕ ПраваДоступа.ОбъектДоступа ЕСТЬ NULL)
Для всех основных ролей настройте RLS (используя созданный шаблон) для справочника Номенклатура
В приложении заполните регистр НастройкиПравДоступаПользователей. Для пользователей администраторов дайте права и на "Продажа" и на "Учет". Для всех остальных - только на "Продажа". (Объект доступа - это группа из справочника "Номенклатура")
Кроме прав доступа непосредственно справочника - проверьте работу отчетов, которыми пользуются пользователи. Скорее всего часть из них перестанет работать с ошибкой "Недостаточно прав доступа". Необходимо подобавлять слово РАЗРЕШЕННЫЕ в запросы.
Группа: Местный
Сообщений: 9564
Из: Kharkiv, UA
Спасибо сказали: 2536 раз
Рейтинг: 0
И ТекущаяТаблица.Родитель.Ссылка = ПраваДоступа.ОбъектДоступа
А ограничение будет действовать только на элементы корневой папки? Т.е. если я путем ручного ввода введу в поле ввода название элемента где-то из глубины иерархии, я же получу к нему доступ...
Личные бесплатные консультации не даю, для этого есть форум!
А ограничение будет действовать только на элементы корневой папки? Т.е. если я путем ручного ввода введу в поле ввода название элемента где-то из глубины иерархии, я же получу к нему доступ...
Согласен. Правильно надо писать
ТекущаяТаблица.Родитель.Ссылка = ПраваДоступа.ОбъектДоступа ИЛИ ТекущаяТаблица.Родитель.Родитель.Ссылка = ПраваДоступа.ОбъектДоступа
Это исходя из того, что в справочнике 2 уровня иерархии. Если больше - надо будет плодить ИЛИ ....Родитель.Родитель
Воообще, ИМХО, делать ограничение по группе в которой находится элемент - неудачная идея. Помимо "некрасивого" запроса для RLS тут как минимум еще две проблемы. 1. Пользователи не всегда создают номенклатуру в правильной группе. 2. Если будут появлятся новые корневые группы - по ним надо будет настраивать права доступа. Я бы делал ограничение через реквизит номенклатуры.
ТекущаяТаблица.Родитель.Ссылка = ПраваДоступа.ОбъектДоступа ИЛИ ТекущаяТаблица.Родитель.Родитель.Ссылка = ПраваДоступа.ОбъектДоступа
Это исходя из того, что в справочнике 2 уровня иерархии. Если больше - надо будет плодить ИЛИ ....Родитель.Родитель
Воообще, ИМХО, делать ограничение по группе в которой находится элемент - неудачная идея. Помимо "некрасивого" запроса для RLS тут как минимум еще две проблемы. 1. Пользователи не всегда создают номенклатуру в правильной группе. 2. Если будут появлятся новые корневые группы - по ним надо будет настраивать права доступа. Я бы делал ограничение через реквизит номенклатуры.
Хорошо, если по группам не правильно, как лучше сделать. Как бы сделали Вы? Через какой реквизит? Т.е. нужно добавить еще один реквизит к элементу номенклатуры, ну назовем его допустим "Запрет доступа" и если реквизит установлен, то элемент не виден, а если нет, то виден. Опять таки через RLS ограничение создается. Я правильно понял Ваше предложение?
Группа: Местный
Сообщений: 2908
Из: Київ, Україна
Спасибо сказали: 1159 раз
Рейтинг: 1244.5
Хитрый юзер возьмет и перенесет элемент в другую группу, посмотрит реквизит и вернет обратно в начальную группу. Вообще к группе привязываться не рекомендую.
Допрацьовую: - "Бухгалтерія для України 2.1"; - "Альфа-Авто: Автосалон+Автосервіс+Автозапчастини, українська версія".
Хорошо, если по группам не правильно, как лучше сделать. Как бы сделали Вы? Через какой реквизит? Т.е. нужно добавить еще один реквизит к элементу номенклатуры, ну назовем его допустим "Запрет доступа" и если реквизит установлен, то элемент не виден, а если нет, то виден. Опять таки через RLS ограничение создается. Я правильно понял Ваше предложение?
Да, добавить еще один реквизит "Уровень доступа". Ссылка на справочник "Уровни доступа к номенклатуре". В справочнике "Уровни доступа к номенклатуре" два элемента: "Продажа" и "Учет". При записи номенклатуры, если "Уровень доступа" не установлен - два варианта: ругаться и не давать записывать инициализация в значение "Продажа" или "Учет", в зависимости от прав пользователя, который создает номенклатуру
Дальше RLS ограничение
ТекущаяТаблица ИЗ #ТекущаяТаблица КАК ТекущаяТаблица
ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.НастройкиПравДоступаПользователей КАК ПраваДоступа ПО ВидОбъектаДоступа = ЗНАЧЕНИЕ(Перечисление.ВидыОбъектовДоступа.Номенклатура) И ПраваДоступа.Пользователь = &ТекущийПользователь И ТекущаяТаблица.УровеньДоступа = ПраваДоступа.ОбъектДоступа
ГДЕ (НЕ ПраваДоступа.ОбъектДоступа ЕСТЬ NULL)
Объект доступа - это элемент из справочника "Уровни доступа к номенклатуре"
Да, добавить еще один реквизит "Уровень доступа". Ссылка на справочник "Уровни доступа к номенклатуре". В справочнике "Уровни доступа к номенклатуре" два элемента: "Продажа" и "Учет". При записи номенклатуры, если "Уровень доступа" не установлен - два варианта: ругаться и не давать записывать инициализация в значение "Продажа" или "Учет", в зависимости от прав пользователя, который создает номенклатуру
Дальше RLS ограничение
ТекущаяТаблица ИЗ #ТекущаяТаблица КАК ТекущаяТаблица
ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.НастройкиПравДоступаПользователей КАК ПраваДоступа ПО ВидОбъектаДоступа = ЗНАЧЕНИЕ(Перечисление.ВидыОбъектовДоступа.Номенклатура) И ПраваДоступа.Пользователь = &ТекущийПользователь И ТекущаяТаблица.УровеньДоступа = ПраваДоступа.ОбъектДоступа
ГДЕ (НЕ ПраваДоступа.ОбъектДоступа ЕСТЬ NULL)
Объект доступа - это элемент из справочника "Уровни доступа к номенклатуре"
Спасибо. Сегодня попробую реализовать. Отпишусь по результату.
Группа: Пользователи
Сообщений: 5
Спасибо сказали: 0 раз
Рейтинг: 0
Каюсь за некропостинг, но хотелось бы узнать - как реализовать то же самое в 8.3, например УТ 11.1? Заранее спасибо!
Как ограничить некоторым пользователям выборочный доступ к элементам справочника номенклатура в УТ 11.1? Т.е. чтобы при реализации и приходовании каждой группе пользователей были доступны только свои позиции. Была подобная тема (http://pro1c.org.ua/index.php?showtopic=10965), но там было под 8.2
1С Предприятие 8.3, 1С Предприятие 8.2, 1С Предприятие 8.1, 1С Предприятие 8.0, 1С Предприятие 7.7, Литература 1С, Общие вопросы по администрированию 1С, Методическая поддержка 1С - всё в одном месте: на Украинском 1С форуме!