Здравствуйте
УТ 11.4 Платформа 8.3.16.
Хочу ограничить доступ к номенклатуре по сегменту у пользователя и сделал для этого отдельную роль в которой пишу
В событии "ПослеЗаписи" номенклатуры добавлен код который проставляет у номенклатуры нужный сегмент.
В пользовательском режиме при попытке создания новой позиции выходит ошибка:
"У пользователя недостаточно прав на исполнение операции над базой данных"
Но при этом номенклатура создается но вот сегмент не заполнен что говорит о том что код до туды не дошел но при этом записался . В отладчике он тоже не проваливается в код а сразу выдает ошибку.
Подскажите как правильно проставить условие в рлс.
Дополнительно добавлю:
1) Права на регистр сегмент номенклатуры у пользователя есть
2) Создание номенклатуры проходит нормально если убрать условие на сегмент в роли но слетает и отбор на видимость номенклатуры
3) Отбор по сегменту работает нормально (видит только позиции из нужного сегмента) проблема только при попытке создать позицию.
4) роль у пользователя только одна
Если нужна еще какие либо уточнения то спрашивайте
УТ 11.4 Платформа 8.3.16.
Хочу ограничить доступ к номенклатуре по сегменту у пользователя и сделал для этого отдельную роль в которой пишу
Номенклатура ГДЕ Номенклатура.Ссылка В
(ВЫБРАТЬ
НоменклатураСегмента.Номенклатура КАК Номенклатура
ИЗ
РегистрСведений.НоменклатураСегмента КАК НоменклатураСегмента
ГДЕ
НоменклатураСегмента.Сегмент.Наименование = "сегмент1")
В событии "ПослеЗаписи" номенклатуры добавлен код который проставляет у номенклатуры нужный сегмент.
В пользовательском режиме при попытке создания новой позиции выходит ошибка:
"У пользователя недостаточно прав на исполнение операции над базой данных"
Но при этом номенклатура создается но вот сегмент не заполнен что говорит о том что код до туды не дошел но при этом записался . В отладчике он тоже не проваливается в код а сразу выдает ошибку.
Подскажите как правильно проставить условие в рлс.
Дополнительно добавлю:
1) Права на регистр сегмент номенклатуры у пользователя есть
2) Создание номенклатуры проходит нормально если убрать условие на сегмент в роли но слетает и отбор на видимость номенклатуры
3) Отбор по сегменту работает нормально (видит только позиции из нужного сегмента) проблема только при попытке создать позицию.
4) роль у пользователя только одна
Если нужна еще какие либо уточнения то спрашивайте
Прикрепленные файлы:
По теме из базы знаний
- Отчет по правам пользователей (по системе прав доступа) в 1С: 8.3
- Запрет на запись документов/справочников/РегистрСведений (ТолькоПросмотр)
- ФинОфис (модуль Табула)
- Распространенные ошибки разработчиков, приводящие к проблемам производительности
- Как читать чужой код? Часть 1. Общие вопросы. Доработка чужого кода. Code review
Найденные решения
(6) Правила РЛС отрабатываются "ПриЗаписи". По этому и получаете ошибку. Вам либо менять подход. Либо ПередЗаписью принудительно получать/устанавливать ссылку, писать её в сегменты.
Что-то в этом роде.
Но подход так себе потому что номенклатура может не записаться по другим причинам, проверки там всякие... и тогда в сегменте окажется битая ссылка.
НоваяСсылка = Справочники.Номенклатура.ПолучитьСсылкуНовый УникальныйИдентификатор());
УстановитьСсылкуНового(НоваяСсылка);
// а вот тут делаете то что у Вас там после записи но используя в качестве ссылки НоваяСсылка
Что-то в этом роде.
Но подход так себе потому что номенклатура может не записаться по другим причинам, проверки там всякие... и тогда в сегменте окажется битая ссылка.
Остальные ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(6) Правила РЛС отрабатываются "ПриЗаписи". По этому и получаете ошибку. Вам либо менять подход. Либо ПередЗаписью принудительно получать/устанавливать ссылку, писать её в сегменты.
Что-то в этом роде.
Но подход так себе потому что номенклатура может не записаться по другим причинам, проверки там всякие... и тогда в сегменте окажется битая ссылка.
НоваяСсылка = Справочники.Номенклатура.ПолучитьСсылкуНовый УникальныйИдентификатор());
УстановитьСсылкуНового(НоваяСсылка);
// а вот тут делаете то что у Вас там после записи но используя в качестве ссылки НоваяСсылка
Что-то в этом роде.
Но подход так себе потому что номенклатура может не записаться по другим причинам, проверки там всякие... и тогда в сегменте окажется битая ссылка.
(7) Спасибо, это помогло.
Сейчас выходит та же ошибка но запись проходит и в сегмент нужный закидывает.
Подскажите есть ли вариант закинуть в нужный сегмент до проверки прав РЛС?
По идее сама суть задачи с ограничением по какому либо отбору в справочнике если в нем возможности сразу заполнить нужное поле выдаст такую же ошибку если будет создаваться новый элемент так как он не будет соответствовать отбору.
Может сам подход ограничения через рлс не стоило использовать...
Сейчас выходит та же ошибка но запись проходит и в сегмент нужный закидывает.
Подскажите есть ли вариант закинуть в нужный сегмент до проверки прав РЛС?
По идее сама суть задачи с ограничением по какому либо отбору в справочнике если в нем возможности сразу заполнить нужное поле выдаст такую же ошибку если будет создаваться новый элемент так как он не будет соответствовать отбору.
Может сам подход ограничения через рлс не стоило использовать...
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот