Ограничение по автору: как скрыть от сотрудника чужие документы в 1С 8.3

· 10 мин

Содержание

Чтобы пользователь в 1С видел только свои документы, нужно ограничение доступа на уровне записей (RLS) по реквизиту автора: в роли на право Чтение документа пишется условие Ответственный = &ТекущийПользователь. В типовых БП 3.0, УТ 11 и ЗУП 3.1 такого готового ограничения «по автору» нет, поэтому его добавляют в Конфигураторе или расширением, а затем выдают сотруднику профиль без типовых ролей на этот документ.

Типичная ситуация: в отделе продаж пять менеджеров, руководитель просит, чтобы каждый видел только свои заказы и реализации. Галочкой в карточке пользователя это не решается. Ниже — что сделать в конфигурации, как собрать профиль доступа и почему чаще всего «всё настроили, а чужие документы всё равно видны».

Как устроены права доступа в 1С:Предприятии

У платформы два уровня прав, и для задачи «только свои документы» нужны оба.

  • 🧱 Роли — права на объект целиком: читать документ «Заказ клиента », добавлять, изменять, проводить. Роль либо даёт право на весь документ, либо нет.
  • 🔍 Ограничение на уровне записей (RLS) — условие внутри права роли. Оно отсекает часть строк: например, только документы, где автор — текущий пользователь.
  • 👥 Профили и группы доступа (в типовых на БСП) — надстройка над ролями. Профиль собирает набор ролей, группа доступа связывает профиль с пользователями.

Главное правило, на котором спотыкаются все: права из разных ролей складываются. Если у пользователя одна роль даёт чтение заказов с условием «только свои», а другая — чтение без условия, он увидит все заказы. Платформа не выбирает самое строгое ограничение, она объединяет разрешения.

Поэтому задача решается в два хода:

  1. Сделать роль, где чтение документа ограничено автором.
  2. Убрать у пользователя все остальные роли, которые дают чтение этого документа шире.

Отбор в списке («Менеджер = Иванов») или сохранённая настройка формы — не защита. Пользователь снимет отбор за секунду. Работает только RLS.

Подготовка: реквизит автора и текущий пользователь

Прежде чем писать ограничение, проверьте две вещи в Конфигураторе.

Есть ли в документе поле «кто автор»

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

КонфигурацияРеквизит, по которому обычно ограничивают
БП 3.0Ответственный — заполняется пользователем, создавшим документ
УТ 11, КА 2, ERPМенеджер в заказах и реализациях, Ответственный в складских и прочих документах
Своя конфигурацияДобавьте реквизит типа СправочникСсылка.Пользователи и заполняйте его при создании

Откройте документ в дереве конфигурации и посмотрите вкладку Данные. Если подходящего реквизита нет, его придётся добавить и заполнить у старых документов обработкой. Иначе старые документы без автора пропадут из списка у всех, кроме администратора.

Есть ли параметр сеанса с текущим пользователем

В конфигурациях на БСП (все типовые 8.3) в ветке Общие → Параметры сеанса уже есть ТекущийПользователь типа СправочникСсылка.Пользователи. Он заполняется при входе. В RLS к нему обращаются через амперсанд: &ТекущийПользователь.

В самописной базе такой параметр создают сами и заполняют в модуле сеанса в процедуре УстановкаПараметровСеанса.

Реквизит автора должен совпадать по типу с параметром сеанса. Если Ответственный ссылается на Справочник.Сотрудники, а параметр — на Справочник.Пользователи, условие никогда не выполнится и пользователь не увидит ни одного документа.

Создание роли с ограничением «только свои документы»

Роль можно сделать двумя путями. Выбор зависит от того, готовы ли вы снимать типовую конфигурацию с поддержки.

СпособКогда подходитРиски
Новая роль в расширенииТиповая на поддержке, обновляется регулярноНужна проверка расширения после каждого обновления
Новая роль в основной конфигурацииКонфигурация уже доработана и снята с замковУсложняется сравнение-объединение при обновлении
Правка типовой ролиПочти никогдаИзменения затрутся или вызовут конфликты при обновлении

Порядок одинаков для обоих рабочих вариантов:

  1. Сделайте резервную копию: Администрирование → Выгрузить информационную базу в Конфигураторе.
  2. В ветке Общие → Роли создайте роль, например ЧтениеСвоихЗаказов.
  3. Откройте роль, найдите в дереве нужный документ и отметьте права: Чтение, Добавление, Изменение, Удаление, Проведение, Просмотр, Интерактивное добавление — по тому, что сотрудник должен делать.
  4. Выделите право Чтение. В нижней части окна в колонке ограничения доступа к данным откройте редактор и впишите условие.
  5. Повторите то же условие для Изменения (а при необходимости — для Добавления и Удаления).
  6. Дайте роли права на справочники и регистры, без которых документ не откроется: номенклатура, контрагенты, склады.
  7. Сохраните и выполните Конфигурация → Обновить конфигурацию базы данных (для расширения — обновление расширения).

Текст ограничения для права Чтение:

ТекущаяТаблица ГДЕ ТекущаяТаблица.Ответственный = &ТекущийПользователь

Для заказов УТ 11 вместо Ответственный подставьте Менеджер.

Почему ограничение ставят и на Изменение: без него сотрудник не прочитает чужой документ, но сможет записать свой с другим автором и «передать» его коллеге. Условие на изменении проверяется по записываемым данным, поэтому сменить автора на чужого не получится.

Руководитель видит документы своего отдела

Частый следующий шаг — начальник отдела должен видеть свои документы и документы подчинённых. RLS допускает вложенные запросы, поэтому условие расширяют обращением к справочнику или регистру, где хранится связь «руководитель — подчинённый». Для руководителя делают отдельную роль с таким условием, а рядовым менеджерам оставляют простую.

Профиль и группа доступа: выдаём роль пользователю

В типовых конфигурациях роли пользователю напрямую не назначают — только через профиль. Путь в БП 3.0, УТ 11 и ЗУП 3.1 одинаковый: Администрирование → Настройки пользователей и прав.

  1. Включите флаг Ограничивать доступ на уровне записей в том же разделе. Без него типовые ограничения по организациям не работают; ваше собственное условие в роли платформа применяет в любом случае, но для единой картины флаг лучше держать включённым.
  2. Откройте Профили групп доступа. Поставляемые профили («Менеджер по продажам», «Бухгалтер») редактировать нельзя — скопируйте подходящий командой копирования.
  3. В копии на вкладке ролей снимите все типовые роли, которые дают чтение вашего документа. Например, для заказов в УТ 11 это роли со словами «Заказы клиентов» в названии.
  4. Отметьте свою роль ЧтениеСвоихЗаказов. Если она в расширении, она появится в списке после установки расширения.
  5. Перейдите в Группы доступа, создайте группу с новым профилем и добавьте в неё сотрудников.
  6. Проверьте, что эти сотрудники не состоят в других группах, где документ доступен без ограничения.

Если убрать типовую роль, вместе с чтением документа пропадут и другие права, которые она давала: печать, связанные отчёты, команды заполнения. Проверьте каждую операцию, которой пользуется сотрудник, и докиньте недостающие права в свою роль.

Перед выдачей профиля сотрудникам
Выполнено: 0 / 6

Проверка доступа под пользователем

Проверять настройку под своей учётной записью бессмысленно: у администратора полные права, ограничения на него не действуют.

  1. Заведите тестового пользователя или попросите сотрудника зайти при вас.
  2. Создайте под ним документ — он должен появиться в списке.
  3. Откройте тот же список под другим менеджером — документа там быть не должно.
  4. Проверьте поиск по номеру и ввод на основании: найти чужой документ через строку поиска пользователь тоже не должен.
  5. Откройте отчёты, которыми он пользуется, и сравните суммы с отчётом администратора.

В типовых на БСП в карточке пользователя есть отчёт о его правах доступа. Он показывает, через какие группы и профили сотрудник получил право на объект. Если документ виден, хотя не должен, отчёт сразу покажет «лишнюю» группу.

Журналы документов и общие списки

Общий журнал собирает документы разных видов в одну таблицу. Для прав это отдельный объект: у журнала документов свои права в роли и своё ограничение доступа.

  • 📒 Право на журнал не заменяет права на документы. Чтобы строка была видна и открывалась, нужны права и на журнал, и на сам документ.
  • 🧩 Ограничение в журнале пишется по его графам. Если в журнале нет графы с автором, ограничить его по пользователю нельзя: сначала добавьте графу и сопоставьте её с реквизитом автора в каждом документе.
  • 🧾 В формах «Такси» многие типовые списки вроде «Документы продажи» построены на динамическом списке с запросом к нескольким документам. Платформа применяет RLS к такому запросу автоматически, отдельной настройки не нужно.

Для собственного журнала текст ограничения выглядит так же, только вместо реквизита документа — графа журнала:

ТекущаяТаблица ГДЕ ТекущаяТаблица.Автор = &ТекущийПользователь

Почему чужие документы видны и что делать

Большинство проблем после настройки — одного из пяти видов.

Диагностика: выберите симптом

Ограничение на документе не скрывает движения по регистрам. Если у сотрудника есть доступ к отчёту по регистру продаж или взаиморасчётов, он увидит итоги по чужим документам. Регистры, которые должны быть закрыты, ограничивайте отдельно — по измерению или реквизиту с автором — либо уберите отчёт из профиля.

Скорость работы при большом объёме данных

RLS — это дополнительное условие в каждом запросе к таблице. На базе с сотнями тысяч документов неудачное условие заметно тормозит открытие списков и отчётов.

Что помогает:

  • ⚡ Индекс по реквизиту автора. В свойствах реквизита Ответственный поставьте Индексировать. Условие по полю с индексом выполняется быстро.
  • 🚫 Без разыменования. Условие Ответственный.Подразделение = ... заставляет платформу соединять таблицы. Лучше хранить подразделение прямо в документе или использовать вложенный запрос к компактному регистру.
  • 🧮 Одно простое условие вместо цепочки ИЛИ. Несколько ролей с разными условиями на один документ дают объединение условий в каждом запросе. Чем их меньше, тем быстрее.
  • 🖥️ Клиент-серверный вариант. На файловой базе запросы с RLS при большом объёме идут заметно медленнее. Для отдела из десятка пользователей с ограничениями стоит переходить на сервер 1С и СУБД.

В новых версиях БСП типовые конфигурации используют «универсальное ограничение доступа»: права рассчитываются заранее и хранятся в служебных регистрах, поэтому запросы пользователей не проверяют сложные условия на лету. Цена — фоновое обновление доступа после изменения групп и массовой загрузки документов. Если после смены прав сотрудник какое-то время видит старую картину, дождитесь завершения этого обновления, а не меняйте настройки повторно.

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

Частые вопросы

Можно ли настроить «только свои документы» без Конфигуратора?
В типовых БП 3.0, УТ 11 и ЗУП 3.1 — нет. В пользовательском режиме доступны ограничения по организациям, складам и другим видам доступа, которые предусмотрели разработчики, а ограничения по автору среди них нет. Нужна роль в расширении или в конфигурации.
Почему администратор видит всё, хотя у него тоже стоит новая роль?
Роль «Полные права» снимает все ограничения. Проверяйте настройку только под обычным пользователем.
Скроются ли чужие документы в печатных формах и выгрузках?
Да, если обработка читает данные запросом с РАЗРЕШЕННЫЕ или через динамический список. Самописная выгрузка без этого слова либо упадёт с ошибкой прав, либо её нужно запускать в привилегированном режиме, который ограничения обходит.
Как дать доступ к документам коллеги на время отпуска?
Проще всего временно добавить сотрудника в группу доступа с типовым профилем без ограничения по автору, а после отпуска убрать. Вторая роль даст ему расширенное чтение, ничего переписывать не придётся.
Видит ли пользователь, что документы скрыты?
Нет. Список просто показывает меньше строк, номера идут с пропусками. Никаких сообщений о скрытых записях платформа не выводит.