Здравствуйте
УТ 11.4 Платформа 8.3.16.

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

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

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

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

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

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

Если нужна еще какие либо уточнения то спрашивайте
---
Правила РЛС отрабатываются "ПриЗаписи". По этому и получаете ошибку. Вам либо менять подход. Либо ПередЗаписью принудительно получать/устанавливать ссылку, писать её в сегменты.

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

Что-то в этом роде.
Но подход так себе потому что номенклатура может не записаться по другим причинам, проверки там всякие... и тогда в сегменте окажется битая ссылка.
---
Сообщение было скрыто модератором.
---
ПослеЗаписи ? )))
---
да, что Вас позабавило?
---
Ну... Если Вы завещание будете писать тоже после смерти, то явно ничего не получиться. Вы ведь будете "перед"? так?)
---
да, я наверное не совсем правильно написал и не смог донести мысль что проблема с созданием позиций.
Сегмент номенклатуры это не реквизит номенклатуры который можно заполнить до получения ссылки.
---
Правила РЛС отрабатываются "ПриЗаписи". По этому и получаете ошибку. Вам либо менять подход. Либо ПередЗаписью принудительно получать/устанавливать ссылку, писать её в сегменты.

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

Что-то в этом роде.
Но подход так себе потому что номенклатура может не записаться по другим причинам, проверки там всякие... и тогда в сегменте окажется битая ссылка.
---
Спасибо, это помогло.

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

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

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

Может сам подход ограничения через рлс не стоило использовать...
---
попробуйте перенести условие рлс в Просмотр
---
Ах если бы за каждый идиотский неподуманый совет ts давали бы пиво....
---
А можете привести весь код. Что там призаписи, перед, после...
Не должно экспешена возникать.
---
Не смог повторить ошибку на следующий день.
Может перезапуск как то помог но на текущий момент такая ошибка больше не выходит.
Спасибо за помощь