Организовано через принудительные отборы
1. Добавлен справочник группы доступа к номенклатуре, он добавлен реквизитом на форму справочника номенклатура.
2. Добавлен РС Группы доступа номенклатуры непереодический, независимый с двумя измерениями Пользователь, Группа доступа номенклатуры с соответствующими ссылками на эти справочники.
3. Добавлена роль ОграниченияПоНоменклатуреУстановкаЦенНоменклатуры
4. В форме документа установка цен номенклатуры:
в обработчике ТаблицаЦенНоменклатураНачалоВыбора добавить код
Процедура ТаблицаЦенНоменклатураНачалоВыбора(Элемент, СтандартнаяОбработка)
Если РольДоступна("ОграниченияПоНоменклатуреУстановкаЦенНоменклатуры") тогда
Элемент.Подсказка = Элемент.Подсказка + "$QWERTY$" + ЗначениеВСтрокуВнутр(Ссылка);
КонецЕсли;
КонецПроцедуры
(Если обработчик не будет срабатывать, необходимо в процедуру УстановитьНедостающиеПараметры() установить необходимые параметры номенклатуры, но это если срабатывать не будет, такое бывает очень редко).
5. В справочник Номенклатура, в форму выбора процедура ПриОткрытии
ЭлементУправления = ЭтаФорма.ВладелецФормы;
Если ТипЗнч(ЭлементУправления) = Тип("ПолеВвода") Тогда
Если Не ПустаяСтрока(ЭлементУправления.Подсказка) Тогда
ТекстПодсказки = ЭлементУправления.Подсказка;
ПозицияСсылки = Найти(ТекстПодсказки, "$QWERTY$");
Если ПозицияСсылки > 0 Тогда
ТекПользователь = ПараметрыСеанса.ТекущийПользователь;
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ГруппыДоступаНоменклатуры.ГруппаДоступаНоменклатуры КАК ГруппаДоступа
|ИЗ
| РегистрСведений.ГруппыДоступаНоменклатуры КАК ГруппыДоступаНоменклатуры
|ГДЕ
| ГруппыДоступаНоменклатуры.Пользователь = &ТекПользователь";
Запрос.УстановитьПараметр("ТекПользователь", ТекПользователь);
Результат = Запрос.Выполнить().Выгрузить();
МассивГрупп = Результат.ВыгрузитьКолонку("ГруппаДоступа");
СписокГрупп = Новый СписокЗначений;
Для Каждого Стр из МассивГрупп Цикл
СписокГрупп.Добавить(Стр);
КонецЦикла;
ЭтаФорма.Отбор.ГруппаДоступаНоменклатуры.ВидСравнения = ВидСравнения.ВСписке;
ЭтаФорма.Отбор.ГруппаДоступаНоменклатуры.Значение = СписокГрупп;
ЭтаФорма.Отбор.ГруппаДоступаНоменклатуры.Использование = Истина;
ЭлементыФормы.СправочникСписок.НастройкаОтбора.ГруппаДоступаНоменклатуры.Доступность = Ложь;
КонецЕсли;
КонецЕсли;
КонецЕсли;
6. Заполнить справочник Группы доступа к номенклатуре, Номенклатура - указать группу в том реквизите который был добавлен, заполнить регистр сведений Группы доступа номенклатуры.
7. Добавить роль ОграниченияПоНоменклатуреУстановкаЦенНоменклатуры пользователю, которому необходимо урезать права на просмотр номенклатуры.
На кнопку подбор аналогично. Детали описаны в файле, если кому некогда будет разбираться.