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