Сообщение было скрыто модератором.
---
Попробуйте вот так на чтение прописать

#ПоЗначениям( "Справочник.Номенклатура","Чтение","","КатегорииНоменклатуры","КатегорияНоменклатуры","","","","","","", "","", "","", "","", "","", "","", "","", "","", "","", "","", "","", "","", "","" )
---
А теперь запускайте обновление вспомогательных данных. скачайте с ИТС конфигурацию библиотека стандартных подсистем, установите ее и в папке с шаблоном конфигурации будет обработка обновление вспомогательных данных.

Только нужно скачать ту версию, которая у вас в конфигурации. Можно посмотреть в регистре сведений "версии подсистем"
---
C:\Users\User37\AppData\Roaming\1C\1cv8\tmplts\1c\SSL\3_0_3_30­\ExtFiles\Инструменты разработчика\ОбновлениеВспомогательныхДанных.epf Вот примерно как у меня путь.

На всякий случай оставлю здесь свою
---
Увидел ошибку в типе значений.

```1c
    Процедура ПриЗаполненииВидовДоступаПосле(ВидыДоступа) Экспорт
    ВидДоступа = ВидыДоступа.Добавить();
    ВидДоступа.Имя = "КатегорииНоменклатуры";
    ВидДоступа.Представление = НСтр("ru = 'Категории номенклатуры'");
    ВидДоступа.ТипЗначений = Тип("СправочникСсылка.КатегорииНоменклатуры");
    // ВидДоступа.ТипГруппЗначений = Тип("СправочникСсылка.КатегорииНоменклатуры");

    КонецПроцедуры
```
---
Почему то не загрузился скрин с ошибкой.
---
А что такое Т? И ГруппаДоступа?
---
Мои предположения. У номенклатуры иерархия групп и элементов. Группа доступа есть только у элементов. Надо рлс править(для групп не проверять доступ) или установить реквизит группа доступа и для групп справочника.
---
Извините первый раз пишу, почему то удалилась тема.

Стараюсь разобраться с ограничением доступа.
Задача стоит в том что бы ограничить доступ пользователям к справочнику номенклатура по категориям (справочник КатегорииНоменклатуры).

Руководствовалась статьями :
https://infostart.ru/public/313468/
https://forum.infostart.ru/forum9/topic230275/

Уже мучаюсь пару дней и все никак(

 В общем модуле УправлениеДоступомПереопределяемый внесла такой код

```1c
    &После("ПриЗаполненииВидовДоступа")
    Процедура ПриЗаполненииВидовДоступаПосле(ВидыДоступа) Экспорт
    ВидДоступа = ВидыДоступа.Добавить();
    ВидДоступа.Имя = "КатегорииНоменклатуры";
    ВидДоступа.Представление = НСтр("ru = 'Категории номенклатуры'");
    ВидДоступа.ТипЗначений = Тип("СправочникСсылка.Номенклатура");
    ВидДоступа.ТипГруппЗначений = Тип("СправочникСсылка.КатегорииНоменклатуры");

    КонецПроцедуры

    &После("ПриЗаполненииИспользованияВидаДоступа")
    Процедура ПриЗаполненииИспользованияВидаДоступаПосле(ВидДоступа, Использование) Экспорт

    Если ВидДоступа = "КатегорииНоменклатуры" Тогда
    Использование = Истина;
    КонецЕсли;

    КонецПроцедуры

    &После("ПриЗаполненииВидовОграниченийПравОбъектовМетаданных")
    Процедура ПриЗаполненииВидовОграниченийПравОбъектовМетаданныхПосле(Описание) Экспорт
    Описание = Описание + "
    |Справочник.Номенклатура.Чтение.КатегорииНоменклатуры
    |Справочник.Номенклатура.Изменение.КатегорииНоменклатуры
    |Справочник.Номенклатура.Добавление.КатегорииНоменклатуры
    |Справочник.КатегорииНоменклатуры.Чтение.КатегорииНоменклатуры
    |";

    КонецПроцедуры

    &После("ПриЗаполненииСписковСОграничениемДоступа")
    Процедура ПриЗаполненииСписковСОграничениемДоступаПосле(Списки) Экспорт

    //Списки.Вставить(Метаданные.Справочники.Номенклатура, Истина);
    //Списки.Вставить(Метаданные.Справочники.КатегорииНоменклатуры, Истина);

    КонецПроцедуры
```

Дальше запускаю внешнюю обработку с таким кодом

```1c
    &НаКлиенте
    Процедура ДобавитьПараметрыОграниченияДоступа(Команда)
    ДобавитьПараметрыОграниченияДоступаНаСервере();
    КонецПроцедуры

    &НаСервере
    Процедура ДобавитьПараметрыОграниченияДоступаНаСервере()
    УправлениеДоступомСлужебный.ОбновитьПараметрыОграниченияДоступа();
    КонецПроцедуры
```

Создаю роль ТестРоль ограничиваю доступ по принципу "все РАЗРЕШИТЬ, кроме...".

Создаю пользователя Тест и ограничиваю доступ к категории Сырье.

В роли "БазовыеПраваУНФ" даю право на чтение с ограничением доступа к данным:

```1c
    #ПоЗначениям( "Справочник.Номенклатура","Чтение",","КатегорииНоменклатуры","Ссылка",",",",",",", ",", ",", ",", ",", ",", ",", ",", ",", ",", ",", ",", "," )
```

на добавление с ограничением доступа к данным:

```1c
    #ПоЗначениям( "Справочник.Номенклатура","Добавление",","КатегорииНоменклатуры","Ссылка",",",",",",", ",", ",", ",", ",", ",", ",", ",", ",", ",", ",", ",", "," )
```

на изменение с ограничением доступа к данным:

```1c
    #ПоЗначениям( "Справочник.Номенклатура","Изменение",","КатегорииНоменклатуры","Ссылка",",",",",",", ",", ",", ",", ",", ",", ",", ",", ",", ",", ",", ",", "," )
```

и на просмотр.

При входе в справочник номенклатура пользователя Тест получаю ошибку:

Уже и не знаю что делать, понимаю что скорее всего ошибка банальная но найти ее самой не получается(
---
```1c
    #ПоЗначениям( "Справочник.Номенклатура","Чтение",","КатегорииНоменклатуры","Ссылка",",",",",",", ",", ",", ",", ",", ",", ",", ",", ",", ",", ",", ",", "," )
```

вместо "ссылка" надо писать ревизит справочника с типом КатегорияНоменклатуры
---
Возьмите копию базы, включите возможность изменения - сделайте изменения непосредственно в конфигурации.
После этого запустите проверку внедрения БСП - она покажет все ошибки внедрения и даже может исправить.
Проверка внедрения выгружает конфигурацию в файлы, поэтому изменения нужно вносить именно в конфигурации, а не в расширении.
Как заработает в копии базы - можно сделать в рабочей через расширения.
Но все изменения сделать только через расширение - не получится.
---
Спасибо за вашу помощь) к сожелению в выходные это сделать не получится буду уже в понедельник мучать эту задачу(
---
У вас конкретная ошибка, из приведенного здесь кода, этого нет. Еще раз, что такое Т и группа доступа?
---
Я больше ничего не изменяла. Шаблон используется стандартный.
---
Насколько я понял, ваше ограничение не учитывает, что Родитель у номенклатуры это тоже СправочникСсылка.Номенклатура и пытается у Родителя элемента найти Реквизит ГруппаДоступа.
---
Можете подсказать как это побороть?
---
и обычно не пишут ограничение доступа на права с использованием шаблонов ограничений, отличные от "чтение"
---
Изначально делала только для "чтение" но результат один и тот же.
---
Попробуйте вот так на чтение прописать

#ПоЗначениям( "Справочник.Номенклатура","Чтение","","КатегорииНоменклатуры","КатегорияНоменклатуры","","","","","","", "","", "","", "","", "","", "","", "","", "","", "","", "","", "","", "","", "","" )
---
Вы правы, ошибка пропала) Но доступ к номенклатурам не ограничился, пользователю доступны все категории.
---
А теперь запускайте обновление вспомогательных данных. скачайте с ИТС конфигурацию библиотека стандартных подсистем, установите ее и в папке с шаблоном конфигурации будет обработка обновление вспомогательных данных.

Только нужно скачать ту версию, которая у вас в конфигурации. Можно посмотреть в регистре сведений "версии подсистем"
---
C:\Users\User37\AppData\Roaming\1C\1cv8\tmplts\1c\SSL\3_0_3_30­\ExtFiles\Инструменты разработчика\ОбновлениеВспомогательныхДанных.epf Вот примерно как у меня путь.

На всякий случай оставлю здесь свою
---
Спасибо большое)) Сейчас сделаю.
---
При обновлении получила ошибку.
Реквизит "ГруппаДоступа" должен иметь тип "Справочники.КатегорииНоменклатуры"??
---
```1c
    &После("ПриЗаполненииВидовДоступа")
    Процедура ПриЗаполненииВидовДоступаПосле(ВидыДоступа) Экспорт
    ВидДоступа = ВидыДоступа.Добавить();
    ВидДоступа.Имя = "КатегорииНоменклатуры";
    ВидДоступа.Представление = НСтр("ru = 'Категории номенклатуры'");
    ВидДоступа.ТипЗначений = Тип("СправочникСсылка.Номенклатура");
    // ВидДоступа.ТипГруппЗначений = Тип("СправочникСсылка.КатегорииНоменклатуры");

    КонецПроцедуры
```

Вот так измените процедуру при заполнении видов доступа
---
Ошибка пропала и все обновилось, но в правах доступа теперь выбор не по категории а конкретно номенклатура. И запрета все равно нет, показывает весь список.
---
А другие роли, которые дают права на справочник Номенклатура вы править не будете?
РЛС то во всех надо.

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

```1c
    Процедура ПриЗаполненииВидовДоступаПосле(ВидыДоступа) Экспорт
    ВидДоступа = ВидыДоступа.Добавить();
    ВидДоступа.Имя = "КатегорииНоменклатуры";
    ВидДоступа.Представление = НСтр("ru = 'Категории номенклатуры'");
    ВидДоступа.ТипЗначений = Тип("СправочникСсылка.КатегорииНоменклатуры");
    // ВидДоступа.ТипГруппЗначений = Тип("СправочникСсылка.КатегорииНоменклатуры");

    КонецПроцедуры
```
---
Спасибо Вам огромное за помощь. Наконец то теперь все работает так как нужно))
---
Обращайтесь :-)