Вопрос по РЛС

1. user822247 20.10.20 18:11 Сейчас в теме
Здравствуйте
УТ 11.4 Платформа 8.3.16.

Хочу ограничить доступ к номенклатуре по сегменту у пользователя и сделал для этого отдельную роль в которой пишу

Номенклатура ГДЕ Номенклатура.Ссылка В
			(ВЫБРАТЬ
				НоменклатураСегмента.Номенклатура КАК Номенклатура
			ИЗ
				РегистрСведений.НоменклатураСегмента КАК НоменклатураСегмента
			ГДЕ
				НоменклатураСегмента.Сегмент.Наименование = "сегмент1")

В событии "ПослеЗаписи" номенклатуры добавлен код который проставляет у номенклатуры нужный сегмент.

В пользовательском режиме при попытке создания новой позиции выходит ошибка:
"У пользователя недостаточно прав на исполнение операции над базой данных"
Но при этом номенклатура создается но вот сегмент не заполнен что говорит о том что код до туды не дошел но при этом записался . В отладчике он тоже не проваливается в код а сразу выдает ошибку.

Подскажите как правильно проставить условие в рлс.

Дополнительно добавлю:
1) Права на регистр сегмент номенклатуры у пользователя есть
2) Создание номенклатуры проходит нормально если убрать условие на сегмент в роли но слетает и отбор на видимость номенклатуры
3) Отбор по сегменту работает нормально (видит только позиции из нужного сегмента) проблема только при попытке создать позицию.
4) роль у пользователя только одна

Если нужна еще какие либо уточнения то спрашивайте
Прикрепленные файлы:
По теме из базы знаний
Вознаграждение за ответ
Показать полностью
Найденные решения
7. Itilive.ru 43 20.10.20 21:33 Сейчас в теме +0.1 $m
(6) Правила РЛС отрабатываются "ПриЗаписи". По этому и получаете ошибку. Вам либо менять подход. Либо ПередЗаписью принудительно получать/устанавливать ссылку, писать её в сегменты.

НоваяСсылка = Справочники.Номенклатура.ПолучитьСсылкуНовый УникальныйИдентификатор());
УстановитьСсылкуНового(НоваяСсылка);
// а вот тут делаете то что у Вас там после записи но используя в качестве ссылки НоваяСсылка


Что-то в этом роде.
Но подход так себе потому что номенклатура может не записаться по другим причинам, проверки там всякие... и тогда в сегменте окажется битая ссылка.
user822247; +1 Ответить
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. пользователь 20.10.20 20:37
Сообщение было скрыто модератором.
...
3. Itilive.ru 43 20.10.20 20:43 Сейчас в теме
ПослеЗаписи ? )))
user822247; +1 Ответить
4. user822247 20.10.20 20:55 Сейчас в теме
(3) да, что Вас позабавило?
5. Itilive.ru 43 20.10.20 20:58 Сейчас в теме
(4) Ну... Если Вы завещание будете писать тоже после смерти, то явно ничего не получиться. Вы ведь будете "перед"? так?)
user822247; +1 Ответить
6. user822247 20.10.20 21:06 Сейчас в теме
(5) да, я наверное не совсем правильно написал и не смог донести мысль что проблема с созданием позиций.
Сегмент номенклатуры это не реквизит номенклатуры который можно заполнить до получения ссылки.
Itilive.ru; +1 Ответить
7. Itilive.ru 43 20.10.20 21:33 Сейчас в теме +0.1 $m
(6) Правила РЛС отрабатываются "ПриЗаписи". По этому и получаете ошибку. Вам либо менять подход. Либо ПередЗаписью принудительно получать/устанавливать ссылку, писать её в сегменты.

НоваяСсылка = Справочники.Номенклатура.ПолучитьСсылкуНовый УникальныйИдентификатор());
УстановитьСсылкуНового(НоваяСсылка);
// а вот тут делаете то что у Вас там после записи но используя в качестве ссылки НоваяСсылка


Что-то в этом роде.
Но подход так себе потому что номенклатура может не записаться по другим причинам, проверки там всякие... и тогда в сегменте окажется битая ссылка.
user822247; +1 Ответить
8. user822247 21.10.20 02:54 Сейчас в теме
(7) Спасибо, это помогло.

Сейчас выходит та же ошибка но запись проходит и в сегмент нужный закидывает.

Подскажите есть ли вариант закинуть в нужный сегмент до проверки прав РЛС?

По идее сама суть задачи с ограничением по какому либо отбору в справочнике если в нем возможности сразу заполнить нужное поле выдаст такую же ошибку если будет создаваться новый элемент так как он не будет соответствовать отбору.

Может сам подход ограничения через рлс не стоило использовать...
9. Vitaly1C8 21.10.20 16:52 Сейчас в теме
(8) попробуйте перенести условие рлс в Просмотр
10. Itilive.ru 43 21.10.20 17:39 Сейчас в теме
(9) Ах если бы за каждый идиотский неподуманый совет ts давали бы пиво....
11. Itilive.ru 43 21.10.20 17:46 Сейчас в теме
(8) А можете привести весь код. Что там призаписи, перед, после...
Не должно экспешена возникать.
user822247; +1 Ответить
12. user822247 24.10.20 05:18 Сейчас в теме
(11) Не смог повторить ошибку на следующий день.
Может перезапуск как то помог но на текущий момент такая ошибка больше не выходит.
Спасибо за помощь
Itilive.ru; +1 Ответить
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот