По теме из базы знаний
- Первоначальная настройка 1С:Управление торговлей 10.3
- 1С УНФ: настройка прав пользователей и ограничений
- Ограничение прав пользователя на изменение типов объектов конфигурации при помощи расширения
- Настройка ограничений входа пользователей в базу (расширение)
- Доступ на уровне записей в типовых конфигурациях. Настройка доступа пользователей с разделением по подразделениям/складам – практический пример
Найденные решения
Решил вот так:
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| Пользователи.Наименование КАК Пользователь
|ИЗ
| Справочник.Пользователи КАК Пользователи
|ГДЕ
| Пользователи.Наименование ПОДОБНО ""%Иванов%"";
РезультатЗапроса = Запрос.Выполнить();
Выборка = РезультатЗапроса.Выбрать();
Пока Выборка.Следующий() Цикл
Склад = Справочники.Склады.НайтиПоНаименованию("Бухгалтерский");
Если Выборка.Пользователь <> СокрЛП(ПользователиКлиентСервер.ТекущийПользователь())Тогда
ЭтаФорма.ДокументСписок.Отбор.СкладОрдер.ВидСравнения = ВидСравнения.НеРавно;
ЭтаФорма.ДокументСписок.Отбор.СкладОрдер.Значение = Склад;
ЭтаФорма.ДокументСписок.Отбор.СкладОрдер.Использование = Истина;
ЭлементыФормы.ДокументСписок.НастройкаОтбора.СкладОрдер.Доступность = Ложь;
КонецЕсли;
КонецЦикла;
Все работает
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| Пользователи.Наименование КАК Пользователь
|ИЗ
| Справочник.Пользователи КАК Пользователи
|ГДЕ
| Пользователи.Наименование ПОДОБНО ""%Иванов%"";
РезультатЗапроса = Запрос.Выполнить();
Выборка = РезультатЗапроса.Выбрать();
Пока Выборка.Следующий() Цикл
Склад = Справочники.Склады.НайтиПоНаименованию("Бухгалтерский");
Если Выборка.Пользователь <> СокрЛП(ПользователиКлиентСервер.ТекущийПользователь())Тогда
ЭтаФорма.ДокументСписок.Отбор.СкладОрдер.ВидСравнения = ВидСравнения.НеРавно;
ЭтаФорма.ДокументСписок.Отбор.СкладОрдер.Значение = Склад;
ЭтаФорма.ДокументСписок.Отбор.СкладОрдер.Использование = Истина;
ЭлементыФормы.ДокументСписок.НастройкаОтбора.СкладОрдер.Доступность = Ложь;
КонецЕсли;
КонецЦикла;
Все работает
Остальные ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
Вообще эксперты поспорят на счет правильности применения RLS в высоконагруженных системах, т.е. это из разряда создания кнопки "сделать правильно". Можно попробовать ограничение на уровне записей (RLS), но вероятно Вам нужно что-то проще построить. Может достаточно не запретить видеть ВЕЗДЕ, а просто ограничить редактирование - там как бы проще логика была бы.
(7) не совсем понятна Ваша задача - вот Иванов - он определенный пользователь и какие склады ему доступны? И что значит не видел? В списке основном или во всех остальных отчетах где может быть ссылка на этот документа, а что делать с кол-вом товаров в отчете по движению, которое приходуется этим документом и видно в группировке по партии например?
(9)Вот есть Иванов, ему доступны все склады кроме одного, т.е. он открывает форму списка документа Поступление товаров и услуг и видит все документы по всем складам кроме одного склада, видимо пользователи работают только с документами и отчетами не пользуются.
Решил вот так:
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| Пользователи.Наименование КАК Пользователь
|ИЗ
| Справочник.Пользователи КАК Пользователи
|ГДЕ
| Пользователи.Наименование ПОДОБНО ""%Иванов%"";
РезультатЗапроса = Запрос.Выполнить();
Выборка = РезультатЗапроса.Выбрать();
Пока Выборка.Следующий() Цикл
Склад = Справочники.Склады.НайтиПоНаименованию("Бухгалтерский");
Если Выборка.Пользователь <> СокрЛП(ПользователиКлиентСервер.ТекущийПользователь())Тогда
ЭтаФорма.ДокументСписок.Отбор.СкладОрдер.ВидСравнения = ВидСравнения.НеРавно;
ЭтаФорма.ДокументСписок.Отбор.СкладОрдер.Значение = Склад;
ЭтаФорма.ДокументСписок.Отбор.СкладОрдер.Использование = Истина;
ЭлементыФормы.ДокументСписок.НастройкаОтбора.СкладОрдер.Доступность = Ложь;
КонецЕсли;
КонецЦикла;
Все работает
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| Пользователи.Наименование КАК Пользователь
|ИЗ
| Справочник.Пользователи КАК Пользователи
|ГДЕ
| Пользователи.Наименование ПОДОБНО ""%Иванов%"";
РезультатЗапроса = Запрос.Выполнить();
Выборка = РезультатЗапроса.Выбрать();
Пока Выборка.Следующий() Цикл
Склад = Справочники.Склады.НайтиПоНаименованию("Бухгалтерский");
Если Выборка.Пользователь <> СокрЛП(ПользователиКлиентСервер.ТекущийПользователь())Тогда
ЭтаФорма.ДокументСписок.Отбор.СкладОрдер.ВидСравнения = ВидСравнения.НеРавно;
ЭтаФорма.ДокументСписок.Отбор.СкладОрдер.Значение = Склад;
ЭтаФорма.ДокументСписок.Отбор.СкладОрдер.Использование = Истина;
ЭлементыФормы.ДокументСписок.НастройкаОтбора.СкладОрдер.Доступность = Ложь;
КонецЕсли;
КонецЦикла;
Все работает
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот