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