Разберем распространенную задачу: требуется ограничить видимость документов в журналах и списках таким образом, чтобы пользователь видел только те документы, которые соответствуют заданному условию (например, по значению реквизита шапки: организация, склад, подразделение или тип документа).
Посмотрим, какие инструменты предоставляет платформа «1С:Предприятие 8» для решения этой задачи и как правильно их настроить.
В платформе «1С:Предприятие 8» существует два основных подхода к ограничению видимости записей:
Проанализируем детально основной способ — настройку ограничения прав на уровне записей. Метод RLS позволяет настроить фильтрацию строк таблицы документа для права Чтение.
Рассмотрим порядок настройки RLS в Конфигураторе по шагам:
Чтение и в нижнем окне добавим ограничение доступа к данным.Рассмотрим пример условия RLS, когда документ должен быть виден пользователю только при совпадении реквизита с текущим пользователем:
ГДЕ РеквизитДокумента = &ТекущийПользователь
Если требуется ограничить видимость по конкретному значению перечисления или справочника, проанализируем следующий пример текста ограничения:
ГДЕ РеквизитДокумента = Значение(Перечисление.ТипыДокументов.Общий)
Важные технические особенности работы RLS, которые следует учитывать:
РАЗРЕШЕННЫЕ в выборку. Благодаря этому скрытые документы просто не выводятся в списке, не вызывая ошибок доступа.&ТекущийПользователь) передаются в RLS через параметры сеанса, инициализируемые при старте системы.УстановитьПривилегированныйРежим(Истина).Если использование RLS не подходит из-за потенциальной нагрузки на СУБД, а задачу нужно решить исключительно в пользовательском интерфейсе, разберем альтернативный программный вариант.
Данный подход состоит из двух последовательных шагов:
ПередОткрытием самой формы документа.Посмотрим на пример кода в модуле формы документа:
Процедура ПередОткрытием(Отказ, СтандартнаяОбработка)
Если Не РольДоступна("ПолныеПрава") И ЭтотОбъект.РеквизитДокумента = Перечисления.ТипыДокументов.Секретный Тогда
Предупреждение("У вас недостаточно прав для просмотра данного документа!");
Отказ = Истина;
КонецЕсли;
КонецПроцедуры
Выясним главное различие между методами: программный отбор лишь скрывает строки в конкретной форме списка. Если пользователю оставлено типовое право Чтение, он сможет получить доступ к данным через консоль запросов или сторонние обработки. Для полной безопасности всегда следует применять механизм RLS.