Добрый день.
Нужна помощь! Уже неделю голову ломаю, не пойму, что упустила(
Есть Конфигурация: Бухгалтерия государственного учреждения, редакция 2.0 (2.0.73.23)
Стоит задача в ней настроить Ограничение доступа на уровне записей к Справочнику "Номенклатура".

Я для себя выбрала вариант настроить справочник "Номенклатура" по аналогии со справочниками "Подразделения" и "Сотрудники" т.к. в обоих этих справочниках настроены ограничения по владельцу.

Мои действия:
1. Подчинила "Номенклатура" справочнику "Организация" т.е. "Номенклатуре" задала Владельца "Организация" (по аналогии с "Подразделениями")
2. В МодульМенеджера "Номенклатура" добавила:

```1c
    // См. УправлениеДоступомПереопределяемый.ПриЗаполненииСписковСОграничениемДоступа.
    Процедура ПриЗаполненииОграниченияДоступа(Ограничение) Экспорт

    Ограничение.Текст =
    "РазрешитьЧтениеИзменение
    |ГДЕ
    | ЗначениеРазрешено(Владелец)";

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

тоже скопировала из "Подразделения"!

3. В Роль ДобавлениеИзменениеНоменклатуры (она в типовой конфигурации присутствует, без ограничения доступа к данным) и БазовыеПраваБГУ, добавина на Чтение:

```1c
    #Если &ОграничениеДоступаНаУровнеЗаписейУниверсально #Тогда
    #ДляОбъекта(")
    #Иначе
    // ОсновноеУсловиеЧтение
    // Можно читать если есть доступ к (по или)
    // Организации
    #ПоЗначениям("Справочник.Номенклатура", "Чтение", ",
    "Организации", "Владелец",
    ",",
    ",",
    ",",
    ",",",",",",",",
    ",",",",",",",",
    ",",",",",",","
    )
    #КонецЕсли
```

а на Добавление и Изменение:

```1c
    #Если &ОграничениеДоступаНаУровнеЗаписейУниверсально #Тогда
    #ДляОбъекта(")
    #Иначе
    // ОсновноеУсловиеЗапись
    // Доступ к (по или)
    // Организации
    #ПоЗначениям("Справочник.Номенклатура", ", ",
    "Организации", "Владелец",
    ",",
    ",",
    ",",
    ",",",",",",",",
    ",",",",",",",",
    ",",",",",",","
    )
    #КонецЕсли
```

Взяла из "Подразделения", изменила Справочник.Подразделения на Справочник.Номенклатура.

4. Сверила Шаблоны ограничений, они в Пользователе, Подразделениях и Сотрудниках одинаковые их тоже скопировала.
5. Добавила "Номенклатура" в ОпределяемыеТипы в:
ВладелецЗначенийКлючейДоступа
ВладелецЗначенийКлючейДоступаОбъект
ЗначениеДоступа
ЗначениеДоступаОбъект

Вроде бы все.

Теперь, при открытии справочника Номенклатура:
- Пользователем с полными права отображается все (т.е. все правильно)
- Пользователем с ограничением выдает ошибку:
https://yadi.sk/i/O2jqEycjq0kqNw

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

4. Сверила Шаблоны ограничений, они в Пользователе, Подразделениях и Сотрудниках одинаковые их тоже скопировала.
Нет, они там типовые везде, просто скопировала
---
А как в Ограничениях доступа указать не конкретную Организацию, любую Разрешенную? т.е. не:

```1c
    ГДЕ Владелец = &Организация
```

а, любая Разрешенная пользователю?
---
Что-то типа:

```1c
    ГДЕ ТекущаяТаблица.Владелец В (ВЫБРАТЬ РАЗРЕШЕННЫЕ
    Организации.Ссылка
    ИЗ
    Справочник.Организации КАК Организации)
```

Но ругается, что РАЗРЕШЕННЫЕ может быть только у первого запроса
---
Почему не работает Мое ограничение!?
Даже если ставлю:

```1c
    ГДЕ ТекущаяТаблица.Владелец = Организации.Ссылка.ПустаяСсылка
```

Выводит все элементы, хотя Владелец заполнен!

С чем это может быть связано? Через "Все ограничения доступа" исправила все условия для этого Справочника.
---
Не могу понять( На "Ограниченном пользователе" в Консоли запроса:

```1c
    ВЫБРАТЬ РАЗРЕШЕННЫЕ
    Номенклатура.Ссылка КАК Ссылка
    ИЗ
    Справочник.Номенклатура КАК Номенклатура
    ГДЕ
    Номенклатура.Организация В
    (ВЫБРАТЬ
    Организация.Ссылка
    ИЗ
    Справочник.Организации КАК Организация)
```
 данный запрос выдает правильный результат, а
когда его ставлю в ограничения, то выводит полный список, он почему то не использует Мои ограничения(
С чем это может быть связано?
---
Тема закрыта!
Разобралась Сама.
Причина была в "Производительном" варианте Ограничений прав доступа, во время исправления Ролей он был включен( и не вносил изменения в Кэш
---
, у меня была такая же ошибка в типовой БП 3.0.88.22 и тоже стоял производительный режим.
ругался на РегистрСведений.ПорядокУплатыНалоговПоРегионам.
Я его поменял на Стандартный и ошибка ушла!
Причем Обновление доступа на уровне записей при Производительном режиме не помогает.
---
К сожалению это не исправление ошибки. Вы перешли на "Стандартный" вариант. А ошибка осталась. "Производительный" вариант позволяет базе работать быстрее. Получается, что вы не исправили ошибка, а отсрочили разбирательство с её причиной
---
Что значит произвольный вариант ограничения доступа?
---
Тоже столкнулся с этой ошибкой, отпишу для истории. В шапке не хватает одного пункта, это в модуле УправлениеДоступомПереопределяемый в функцию ПриЗаполненииСписковСОграничениемДоступа добавить описание своего объекта.
---
модуле УправлениеДоступомПереопределяемый в функцию ПриЗаполненииСписковСОграничениемДоступа добавить описание своего объекта
спасибо!
Кроме того, если нужны ограничения и для регистров, то кроме вышеописанных действий, необходимо добавить предопределенные элементы в справочник ИдентификаторыОбъектовМетаданных (задав имя предопределенного по аналогии с уже существующими), чтобы корректно отрабатывал шаблон "ДляРегистра", т.к. используется обращение по имени предопределенного.
---
У меня в функции "ПриЗаполненииСписковСОграничениемДоступа " нужный регистр добавлялся, но в его менеджере, в процедуре "ПриЗаполненииОграниченияДоступа" в тексте запроса не хватало одного параметра. В ограничении доступа в роли было два параметра, а тексте запроса один. Может кому-нибудь поможет. И в (2) отличный совет, с его помощью можно быстрее разобраться!
---
Последнее время после обновлений именно этого не хватает.
В 1С стали забывать добавлять в список модуля новые объекты.
Решается добавлением модуля УправлениеДоступомПереопределяемый.ПриЗаполненииСписковСОграничениемДоступа в расширение.
Например:

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

    Списки.Вставить(Метаданные.РегистрыСведений.СпособПереходаНаФСБУ14, Истина);
    Списки.Вставить(Метаданные.РегистрыСведений.НМАПриПереходеНаФСБУ14, Истина);
    Списки.Вставить(Метаданные.Документы.СведенияОбУплатеНалогов, Истина);

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

Сначала проверяете в списке в типовом модуле нужный объект. Если в типовом нет, добавляете в расширение.
---
Столкнулся с подобной ошибкой, проблема была в старой не типовой роли скопированной из типовой роли.
Переписал в ней ограничения к проблемному регистру.
---
Аналогичная ерунда приключилась с версией БП КОРП 3.0.150.33, полностью на поддержке
Переключил вариант Ограничений прав доступа в Стандартный вариант - проблема исчезла.