Как закрыть данные от изменений: роли, профили, даты запрета и RLS
Содержание
Запрет редактирования в 1С 8.3 ставится тремя способами. В типовых конфигурациях (БП 3.0, ЗУП 3.1, УТ 11) права меняют без Конфигуратора: Администрирование → Настройки пользователей и прав → Профили групп доступа, а закрытый период блокируют датой запрета изменения данных. В самописных и доработанных базах роли правят в Конфигураторе: снимают у объекта право «Изменение» или «Редактирование».
Выбор зависит от задачи. Нужно закрыть прошлый квартал — хватит даты запрета. Нужно, чтобы кладовщик видел справочник, но не правил его, — нужен профиль без права изменения. Нужно скрыть чужие организации — нужен доступ на уровне записей (RLS).
Как устроены права доступа в 1С 8.3
Платформа проверяет права на каждом обращении к данным. Если права нет, пользователь видит сообщение Нарушение прав доступа! или просто не находит команду в меню.
Основа механизма — роль. Это набор разрешений на объекты конфигурации: справочники, документы, регистры, отчёты, обработки. Роль создаёт разработчик в Конфигураторе. Права в роли только разрешают: «запрещающей» роли не бывает.
Отсюда главное правило:
- ✅ права разных ролей пользователя складываются;
- ❌ если хотя бы одна роль даёт право изменять документ, остальные его не отнимут;
- 🔒 запрет — это отсутствие разрешения во всех ролях пользователя.
В конфигурациях на Библиотеке стандартных подсистем (БСП) — а это все современные типовые — над ролями есть ещё два уровня:
| Уровень | Где настраивается | Что содержит |
|---|---|---|
| Роль | Конфигуратор | Права на объекты метаданных |
| Профиль группы доступа | Режим «Предприятие» | Набор ролей и виды доступа |
| Группа доступа | Режим «Предприятие» | Профиль + список пользователей + значения ограничений |
Пользователю в типовой базе роли напрямую не назначают. Его включают в группу доступа, а группа получает роли из профиля. Если поставить роль пользователю через Конфигуратор, БСП перезапишет её при следующей синхронизации прав.
Настройка ролей в Конфигураторе: снимаем право на изменение
Этот путь нужен для нетиповых баз и для собственных ролей. Типовые роли поставщика менять не стоит: при обновлении конфигурации правки придётся переносить вручную.
Пошагово
- Откройте базу в Конфигураторе и сделайте резервную копию:
Администрирование → Выгрузить информационную базу. - В дереве метаданных раскройте
Общие → Роли. - Создайте новую роль или откройте свою. Двойной щелчок открывает редактор прав.
- Слева выберите объект, например
Справочники → Номенклатура. - Справа отметьте только те права, которые нужны. Для режима «только чтение» оставьте «Чтение» и «Просмотр», а «Изменение», «Редактирование», «Добавление», «Интерактивное добавление» и права на удаление снимите.
- Сохраните конфигурацию и выполните
Конфигурация → Обновить конфигурацию базы данных(F7). - Назначьте роль пользователю:
Администрирование → Пользователи, вкладка «Прочие» в карточке пользователя.
Чем различаются похожие права
| Право | Что разрешает |
|---|---|
| Чтение | Получать данные объекта, в том числе программно и в отчётах |
| Изменение | Записывать изменения, в том числе программно |
| Просмотр | Открывать объект в форме |
| Редактирование | Менять данные в форме |
| Интерактивное добавление | Создавать объект кнопкой из интерфейса |
| Интерактивная пометка удаления | Ставить пометку удаления вручную |
Права с приставкой «Интерактивное» и пара «Просмотр/Редактирование» касаются только работы через формы. Если снять «Редактирование», но оставить «Изменение», пользователь не поправит карточку руками, а обработка, запущенная от его имени, запишет объект.
У реквизитов и табличных частей свои права «Просмотр» и «Редактирование». Так можно закрыть одно поле, например цену в документе, оставив остальное доступным.
Свойства роли, которые часто упускают
В палитре свойств роли есть флажки:
- Устанавливать права для новых объектов — новые объекты конфигурации автоматически получают все права в этой роли. Для ограничивающей роли флажок лучше снять.
- Устанавливать права для реквизитов и табличных частей по умолчанию — при снятом флажке права на поля придётся отмечать вручную.
- Независимые права подчинённых объектов — управляет тем, наследуют ли реквизиты права своего объекта.
Не снимайте права в типовой роли «Полные права» и не удаляйте пользователя с ней — можно потерять администратора базы.
Если конфигурация на поддержке
Чтобы не снимать базу с поддержки, роль добавляют в расширение конфигурации (расширения появились в платформе 8.3.6). Расширение содержит только вашу роль, а типовые объекты остаются нетронутыми. В БСП-конфигурациях роль из расширения затем включают в скопированный профиль групп доступа.
Запрет редактирования через профили и группы доступа
В типовых базах это основной способ. Конфигуратор не нужен, хватит прав администратора в пользовательском режиме.
Шаг 1. Подготовьте профиль
- Откройте
Администрирование → Настройки пользователей и прав → Профили групп доступа. - Найдите подходящий поставляемый профиль, например «Бухгалтер» или «Кладовщик».
- Поставляемые профили менять нельзя. Скопируйте нужный командой копирования в списке (F9).
- В копии на вкладке ролей снимите роли, дающие право изменения нужных данных. Оставьте роли чтения.
- Дайте профилю понятное имя: «Бухгалтер — без правки справочников».
Названия ролей в БСП говорят сами за себя: роли с «Чтение» в имени дают просмотр, с «Добавление и изменение» — правку. Перед снятием роли откройте её описание в форме профиля.
Шаг 2. Создайте группу доступа
- Перейдите в
Администрирование → Настройки пользователей и прав → Группы доступа. - Создайте группу и выберите в ней новый профиль.
- Добавьте участников группы.
- Уберите этих пользователей из групп со старым, более широким профилем. Иначе права сложатся, и запрет не сработает.
Шаг 3. Проверьте под пользователем
Войдите в базу под учётной записью сотрудника. Права применяются при входе, поэтому открытый сеанс пользователя нужно закрыть и запустить заново.
Как запретить редактировать проведённые документы
Проведённый документ уже сформировал движения: проводки, остатки, взаиморасчёты. Правка задним числом ломает сданную отчётность. Защищают его двумя способами.
Дата запрета изменения данных
Механизм есть во всех БСП-конфигурациях. В БП 3.0 настройка находится в Администрирование → Проведение документов: включите флажок дат запрета и откройте настройку по ссылке рядом.
Варианты настройки:
- 📅 общая дата для всех пользователей — самый частый случай: закрыли квартал, поставили последний день квартала;
- 👥 отдельные даты для пользователей и групп — главному бухгалтеру можно оставить период открытым, остальным закрыть;
- 🏢 по разделам и организациям — если в базе несколько фирм с разным графиком закрытия.
Дату можно задать относительной, например «конец прошлого месяца». Тогда её не нужно двигать вручную каждый месяц.
После настройки документ с датой раньше запретной открывается, но записать или перепровести его нельзя. Программа выдаёт сообщение о том, что данные за этот период закрыты.
Дата запрета действует и на загрузку из других программ, но для обмена данными у неё отдельная настройка — дата запрета загрузки. Проверьте обе, если база получает документы через обмен.
Право менять сами даты запрета даётся отдельной ролью в профиле. Если у всех бухгалтеров оно есть, защиты нет: дату сдвинет любой.
Право «Интерактивное изменение проведённых»
У документа в редакторе роли есть право Интерактивное изменение проведённых. Если его нет, пользователь может создать и провести документ, но изменить уже проведённый через форму не сможет.
Это решение для нетиповых баз. В типовой конфигурации право входит в поставляемые роли, и снять его можно только своей ролью в расширении вместе с перестройкой профиля.
Программная блокировка формы
Когда нужна логика сложнее, например запрет правки документов старше трёх дней, форму делают доступной только для просмотра в обработчике ПриСозданииНаСервере. В типовой базе код добавляют в расширение.
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
Если Объект.Проведен
И Не РольДоступна("ПолныеПрава")
И ТекущаяДатаСеанса() - Объект.Дата > 3 * 86400 Тогда
ТолькоПросмотр = Истина;
КонецЕсли;
КонецПроцедуры
Этот код закрывает только форму. Обработка или обмен всё равно запишут документ. Для полной защиты ту же проверку ставят в модуль объекта, в обработчик ПередЗаписью с Отказ = Истина.
Ограничение доступа на уровне записей (RLS)
Роли решают, к какому объекту есть доступ. RLS (Record Level Security) решает, к каким записям этого объекта. Типичный пример: менеджер видит и правит только документы своей организации или своего склада.
В типовых конфигурациях
- Откройте
Администрирование → Настройки пользователей и прав. - Включите флажок «Ограничивать доступ на уровне записей».
- В профиле группы доступа на вкладке видов доступа выберите нужный вид: «Организации», «Склады», «Контрагенты» — набор зависит от конфигурации.
- В самой группе доступа укажите режим: «Все запрещены» плюс список разрешённых значений или «Все разрешены» плюс список запрещённых.
RLS заметно нагружает запросы: каждая выборка получает дополнительное условие. В большой базе после включения проверьте скорость типовых отчётов.
В Конфигураторе
Условие пишется в редакторе роли. Выберите объект и право («Чтение», «Изменение» и т.д.), затем внизу в поле ограничения доступа к данным введите условие на языке запросов. Упрощённый пример для документа:
ГДЕ Организация = &ТекущаяОрганизация
Здесь ТекущаяОрганизация — параметр сеанса, который нужно создать в конфигурации и заполнить при входе пользователя. В условиях RLS обращение &Имя указывает именно на параметр сеанса.
Ограничение можно поставить отдельно на «Чтение» и на «Изменение». Так пользователь будет видеть документы всех складов, а менять — только своего.
Права не срабатывают: диагностика
Самые частые жалобы — «запретил, а он всё равно правит» и «после настройки ничего не открывается». Порядок проверки:
- Пользователь перезашёл? Права читаются при входе. Пока сеанс открыт, работают старые.
- В каких группах доступа он состоит? В карточке пользователя есть список групп и отчёт по правам доступа. Найдите группу, которая даёт лишнее право.
- Нет ли у него «Полных прав» или профиля «Администратор»? Полные права обходят и роли, и RLS.
- Обновлена ли конфигурация базы данных после правки роли в Конфигураторе?
- Не сдвинута ли дата запрета и не стоит ли у пользователя персональная дата, которая главнее общей?
- Кто реально записал документ? В журнале регистрации (
Администрирование → Обслуживание → Журнал регистрации) отберите события записи по объекту и посмотрите пользователя и время.
Для разработчика в Конфигураторе есть сводная матрица: правый клик по ветке «Роли» → «Все роли». Там видно, какие роли дают право на выбранный объект.
Частые ошибки при настройке запрета
- 🔁 Создали «запрещающую» роль и добавили её к старым. Роль может только разрешать. Права нужно снимать там, где они выданы.
- ✂️ Сняли «Редактирование», но оставили «Изменение». Форма закрыта, а групповая обработка реквизитов или загрузка из файла от имени пользователя запишет объект.
- 🧱 Отняли «Чтение» у справочника. Документы, где он указан в реквизитах, перестают открываться. Для правки закрывайте «Изменение», а не «Чтение».
- 🔑 Выдали всем бухгалтерам право менять даты запрета. Закрытый период перестаёт быть закрытым.
- 🛠 Правили поставляемую роль в Конфигураторе. После обновления правки теряются или конфликтуют при сравнении. Используйте расширение и копии профилей.
Можно ли запретить редактирование одному пользователю, не трогая остальных?
Действует ли запрет на администратора базы?
Нужен ли монопольный доступ, чтобы поменять права?
Как запретить удаление документов, но разрешить их изменение?
Почему пользователь видит документ в журнале, но не может его открыть?
Нарушение прав доступа! подскажет, какого объекта касается проблема.