Как настроить права доступа пользователю только на чтение документов определенного вида в 1С:УТ 10.3?

Программист 1С v8.3 (Управляемые формы) 1С:Управление торговлей Торговля и дистрибуция
← На главную

В процессе работы с 1С:Управление торговлей часто возникает задача предоставить пользователю ограниченный доступ к данным. Например, менеджеру или сотруднику склада, которому может быть необходим генератор штрихкодов для УТ 10.3, нужно разрешить просматривать только документы поступления товаров, запретив доступ ко всем остальным документам и отчетам. Рассмотрим, как решить эту задачу с помощью механизма ролей и ограничения доступа на уровне записей (RLS).

Проанализируем ситуацию: нам нужно создать пользователя, который сможет входить в базу, открывать журнал документов "Поступление товаров и услуг", просматривать их, но не сможет их изменять, проводить или видеть какие-либо другие объекты системы. Эта задача решается путем создания специальной роли с тонко настроенными правами.

Подготовительный этап: включение механизма RLS

Прежде чем приступать к настройке, убедимся, что в нашей информационной базе включен механизм ограничения доступа на уровне записей. Без этого наши настройки не будут работать.

  1. Запустите 1С в режиме Конфигуратор.
  2. Перейдите в меню "Операции" -> "Константы".
  3. Найдите константу ОграничиватьДоступНаУровнеЗаписей.
  4. Установите для нее значение "Истина" (галочка должна быть установлена).

Этот флаг является глобальным переключателем для всего механизма RLS. Если он выключен, система будет игнорировать любые ограничения, прописанные в ролях.

Решение: Создание и настройка кастомной роли

Самый надежный и управляемый способ для решения нашей задачи — это создание новой, изолированной роли, в которой мы точно определим все необходимые права. Этот подход позволяет избежать конфликтов с существующими ролями и дает полный контроль над доступом.

Разберем процесс по шагам.

Шаг 1: Создание новой роли

В режиме Конфигуратор откроем дерево конфигурации и найдем ветку "Общие" -> "Роли".

  1. Нажмите правой кнопкой мыши на "Роли" и выберите "Добавить".
  2. Задайте имя для новой роли, например, ТолькоЧтениеПоступлений. Синоним можно указать более понятный: "Только чтение поступлений товаров и услуг".

Шаг 2: Настройка базовых прав

Чтобы пользователь с этой ролью мог хотя бы запустить программу, ему нужны минимальные права на запуск. На вкладке "Права" для нашей новой роли установим следующие флажки:

Важно: Не предоставляйте право "Полные права" или "Административные функции". Наша цель — создать минимально необходимый набор прав.

Шаг 3: Предоставление доступа к объектам

Теперь нужно дать права на чтение конкретного документа. В дереве прав найдем нужный нам объект: Документы -> ПоступлениеТоваровУслуг. Если в дальнейшем пользователю потребуется анализировать связи документов, может пригодиться внешняя обработка на поиск номенклатуры в документах.

  1. Установим флажок напротив права Чтение.
  2. Обязательно убедитесь, что остальные права для этого документа (Добавление, Изменение, Проведение, ОтменаПроведения и т.д.) сняты.

На этом этапе мы разрешили пользователю читать любые документы этого типа. Но нам нужно, чтобы он видел только их и ничего больше. Для этого используется ограничение доступа.

Шаг 4: Настройка ограничения доступа (RLS)

Это ключевой шаг. Мы должны явно указать системе, что для всех остальных документов доступ должен быть закрыт. Ограничивая права, мы автоматически лишаем пользователя возможности формировать сложные отчеты, такие как ведомость по товарам и партиям товаров на складах.

В конфигураторе для нашей роли ТолькоЧтениеПоступлений перейдем на вкладке "Ограничения доступа к данным".

Здесь мы видим список всех объектов конфигурации. Наша задача — установить ограничения для чтения документов. Найдем поле Документы и дважды кликнем по нему. Откроется окно "Настройка ограничения доступа".

Для права Чтение в поле "Ограничение доступа" нажмем на кнопку с тремя точками, чтобы открыть конструктор запроса. Нам нужно написать условие, которое будет разрешать доступ только к одному виду документов.

Простейший и эффективный способ в данном случае — использовать шаблон ограничения.

В поле "Текст запроса" напишем следующий код:


#Если &РольДоступна("ТолькоЧтениеПоступлений") Тогда
    ПоступлениеТоваровУслуг ИЗ Документ.ПоступлениеТоваровУслуг КАК ПоступлениеТоваровУслуг
#КонецЕсли

Этот код, по сути, создает пустое ограничение для документа ПоступлениеТоваровУслуг, что равносильно полному доступу на чтение именно к этому типу документов. Для всех остальных документов, не упомянутых в запросе, доступ на чтение будет автоматически закрыт.

Есть и более универсальный подход, который часто используется в типовых конфигурациях. Можно создать шаблон ограничения. Например, для права "Чтение" документа `ПоступлениеТоваровУслуг` можно просто написать:

ГДЕ ИСТИНА

Это означает, что условие доступа всегда истинно, и пользователь сможет прочитать любую запись этого документа. Для всех остальных документов, где такое правило не прописано, доступ будет запрещен по умолчанию.

Важный момент: Пользователю могут потребоваться права на чтение связанной информации, например, справочников Контрагенты, Номенклатура, Склады и т.д. Учтите, что если в работе используется загрузка свойств товаров или услуг из MS Excel, пользователю также понадобятся права на просмотр соответствующих дополнительных реквизитов. Если после настройки пользователь видит пустой список документов, скорее всего, у него нет прав на чтение данных в колонках журнала. Добавьте права на Чтение для всех связанных справочников, которые отображаются в форме списка и форме документа поступления.

Шаг 5: Создание профиля и группы доступа в режиме 1С:Предприятие

После сохранения конфигурации, запустим программу в режиме 1С:Предприятие с правами администратора. При создании новых учетных записей со схожими правами вам очень поможет копирование настроек пользователя в УТ 10.

  1. Создание Профиля групп доступа.
    • Перейдите в раздел "НСИ и администрирование" -> "Настройка пользователей и прав".
    • Откройте "Профили групп доступа".
    • Создайте новый профиль, назовите его, например, "Просмотр поступлений".
    • На вкладке "Разрешенные действия (роли)" найдите и отметьте нашу новую роль ТолькоЧтениеПоступлений.
    • Сохраните профиль.
  2. Создание Группы доступа.
    • Теперь откройте "Группы доступа".
    • Создайте новую группу, например, "Менеджеры по закупкам (просмотр)".
    • В поле "Профиль" выберите только что созданный нами профиль "Просмотр поступлений".
    • На вкладке "Участники" добавьте нужного пользователя (или пользователей).
    • Сохраните группу.

Теперь пользователь, добавленный в эту группу доступа, при входе в систему будет обладать только теми правами, которые мы определили в роли ТолькоЧтениеПоступлений. Он сможет открыть список документов "Поступление товаров и услуг", войти в любой из них для просмотра, но не сможет их редактировать или видеть другие разделы системы. Если вам потребуется тиражировать подобные настройки на других сотрудников, рекомендуем использовать копирование настроек пользователей для обычных форм.

Таким образом, мы создали гибкую и безопасную систему разграничения прав, которая полностью контролируется из конфигуратора и не зависит от стандартных ролей, которые могут измениться при обновлении конфигурации.

← На главную