Только чтение, закрытый период, свои записи: способы ограничить правку данных в 1С 8.3
Содержание
Чтобы запретить редактирование в 1С 8.3, чаще всего хватает двух штатных настроек без программиста. Закрытые периоды блокирует дата запрета изменения (в БП 3.0: Администрирование → Пользователи и права, флаг «Даты запрета изменения»). Пользователю «только для просмотра» дают группу доступа с профилем без ролей на добавление и изменение.
Остальные способы — права ролей в конфигураторе, ограничение на уровне записей (RLS), блокировка формы кодом — нужны, когда штатных настроек мало. Ниже каждый механизм по порядку: от безопасных настроек в пользовательском режиме к доработкам.
Какой способ ограничить редактирование выбрать
Сначала сформулируйте, что именно нужно закрыть. От этого зависит инструмент.
| Задача | Механизм | Где настраивается | Нужен программист |
|---|---|---|---|
| Никто не правит документы прошлых месяцев | Даты запрета изменения | Пользовательский режим | Нет |
| Сотрудник видит всё, но ничего не меняет | Профиль групп доступа без ролей изменения | Пользовательский режим | Нет |
| Менеджер правит только документы своей организации | Ограничение на уровне записей | Профиль + флаг RLS | Нет (в типовых) |
| Запретить правку одного реквизита или формы | Свойство ТолькоПросмотр, обработчик ПередЗаписью | Расширение конфигурации | Да |
| Никто не меняет саму конфигурацию | Права на конфигуратор, настройки поддержки, хранилище | Конфигуратор | Да |
Даты запрета изменения: закрыть прошлый период
Это главный способ защитить закрытый отчётный период. После сдачи отчётности бухгалтер ставит дату, и документы с датой раньше неё нельзя ни записать, ни провести, ни пометить на удаление.
Где включается в типовых конфигурациях:
| Конфигурация | Путь |
|---|---|
| 1С:Бухгалтерия 3.0 | Администрирование → Пользователи и права |
| 1С:ЗУП 3.1 | Администрирование → Настройки пользователей и прав |
| 1С:УТ 11 | НСИ и администрирование → Настройки пользователей и прав |
Порядок настройки:
- Откройте панель по пути из таблицы.
- Установите флаг «Даты запрета изменения» и перейдите по ссылке настройки рядом с ним.
- Выберите способ указания: одна общая дата для всех или разные даты по пользователям и разделам.
- Укажите дату. Можно задать фиксированную (например, 31.03) или относительную: конец прошлого месяца, квартала, года.
- Для относительной даты задайте число дней, в течение которых ещё разрешено править (например, 10 дней после конца месяца на исправления).
- Запишите настройку.
Относительная дата удобнее фиксированной. Не нужно каждый месяц сдвигать её вручную: период закрывается сам, а «окно» на исправления открыто заданное число дней.
Тонкости, которые всплывают на практике:
- 👤 Исключения по пользователям. Главному бухгалтеру можно оставить более раннюю дату, а остальным закрыть период полностью.
- 📂 Разделы и организации. В режиме «по разделам и объектам» разным организациям ставят разные даты: одна фирма уже сдала квартал, другая ещё нет.
- 🔄 Загрузка данных. Рядом настраиваются даты запрета загрузки: они не дают обменам (например, с УТ или ЗУП) перезаписать документы закрытого периода.
- 🛠️ Полные права. Администратор с полными правами тоже подчиняется дате запрета, если она задана для всех пользователей. Это защита от случайной правки, а не от администратора: он может сам сдвинуть дату.
Пользователь только для просмотра: профили и группы доступа
В конфигурациях на БСП (БП 3.0, ЗУП 3.1, УТ 11, КА, ERP) права не раздают ролями напрямую. Цепочка такая: роли → профиль групп доступа → группа доступа → пользователь.
Чтобы сотрудник видел данные, но ничего не менял:
- Откройте
Профили групп доступав той же панели пользователей и прав. - Найдите поставляемый профиль, близкий по смыслу, и скопируйте его. Поставляемые профили менять нельзя, их копию — можно.
- В копии на вкладке ролей снимите флажки с ролей, в названии которых есть «Добавление и изменение», и оставьте роли с «Чтение».
- Запишите профиль под понятным именем, например «Аудитор — только просмотр».
- Откройте
Группы доступа, создайте группу с этим профилем и добавьте в участники нужного пользователя. - Уберите этого пользователя из групп с профилями, которые дают изменение.
Права в группах доступа складываются. Если пользователь состоит в группе «Бухгалтер» и в группе «Только просмотр», он может редактировать: срабатывает самое широкое право. Запрет одной группой «перебить» права другой нельзя.
Проверяйте результат под самим пользователем, а не по профилю. Откройте карточку пользователя и посмотрите его права в отчёте по правам доступа: там видно итоговое право на каждый объект и группу, из которой оно пришло.
Права на объекты метаданных в конфигураторе
Под профилями лежат роли конфигурации. Роль — это таблица: объект метаданных и галочки прав «Чтение», «Добавление», «Изменение», «Удаление», «Проведение», «Отмена проведения», «Интерактивное удаление» и другие.
Когда к ним лезть:
- 🧩 Нетиповая или самописная конфигурация без БСП. Там роль назначается пользователю напрямую в
Администрирование → Пользователиконфигуратора. - 🧩 Нужна роль, которой нет среди поставляемых. Например, право читать справочник и проводить документы, но не менять их.
Как сделать роль «только чтение» для своего объекта:
- В конфигураторе откройте ветку
Общие → Ролии создайте новую роль (в типовой — в расширении конфигурации). - Найдите в дереве нужный объект: справочник, документ, регистр.
- Отметьте «Чтение» и «Просмотр». Флажки «Добавление», «Изменение», «Удаление» оставьте пустыми.
- Проверьте, что объект не открыт на изменение другой ролью, которая есть у пользователя. Роли тоже складываются.
- Обновите конфигурацию базы данных и назначьте роль.
Разница между «Изменение» и «Интерактивное изменение»: первое разрешает менять объект программно (обработки, обмены), второе — руками через форму. Если снять только интерактивное право, пользователь не отредактирует документ в форме, но обработка, запущенная от его имени, сможет.
Не правьте поставляемые роли типовой конфигурации напрямую. Это снимает конфигурацию с полной поддержки и усложняет каждое обновление. Нужная роль добавляется расширением.
RLS: разрешить правку только своих записей
Ограничение доступа на уровне записей (Record Level Security) отвечает на вопрос «какие именно документы», а не «какие объекты». Пример: менеджер видит все заказы, но менять может только заказы своего склада.
В типовых на БСП RLS включается без конфигуратора:
- В панели пользователей и прав установите флаг ограничения доступа на уровне записей.
- Откройте профиль группы доступа и перейдите на вкладку видов доступа. Список видов зависит от конфигурации: в БП это прежде всего организации, в УТ 11 — ещё склады, партнёры и другие.
- Для вида доступа выберите режим: «все разрешены» или «все запрещены» с явным перечнем исключений.
- В самой группе доступа укажите конкретные значения: какие организации или склады разрешены участникам.
Это механизм видимости и изменения одновременно: запись, недоступная по RLS, не появится в списке. Но в ролях условия RLS задаются отдельно для чтения и для изменения. В своей конфигурации можно разрешить читать всё, а менять — только свою организацию. Условие на право «Изменение» выглядит так:
ТекущаяТаблица ГДЕ ТекущаяТаблица.Организация = &ТекущаяОрганизация
Здесь &ТекущаяОрганизация — параметр сеанса, который заполняется при входе пользователя.
RLS заметно утяжеляет запросы на больших базах. Включайте его, когда разграничение по записям действительно нужно, а не «на всякий случай». После включения проверьте скорость открытия журналов документов.
Запрет редактирования через код и расширение
Когда штатных механизмов мало — например, нельзя менять сумму в проведённом документе, а комментарий можно, — запрет делают программно. В типовой конфигурации всё это пишется в расширении (платформа 8.3.6 и выше), чтобы не снимать её с поддержки.
Форма только для просмотра. В модуле формы при создании выставляется свойство ТолькоПросмотр. Пример для расширения формы документа: пользователь без полных прав открывает проведённый документ только на просмотр.
&НаСервере
&После("ПриСозданииНаСервере")
Процедура Расш_ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
Если Объект.Проведен И НЕ РольДоступна("ПолныеПрава") Тогда
ТолькоПросмотр = Истина;
КонецЕсли;
КонецПроцедуры
Для одного поля то же свойство задают элементу: Элементы.СуммаДокумента.ТолькоПросмотр = Истина (имя элемента смотрите в дереве элементов формы).
Запрет записи объекта. Форма защищает только интерфейс: обработка или обмен всё равно запишут объект. Надёжная проверка ставится в модуле объекта, в обработчике ПередЗаписью:
&Перед("ПередЗаписью")
Процедура Расш_ПередЗаписью(Отказ, РежимЗаписи, РежимПроведения)
Если ОбменДанными.Загрузка Тогда
Возврат;
КонецЕсли;
Если НЕ ЭтоНовый() И НЕ РольДоступна("ПолныеПрава") Тогда
Отказ = Истина;
Сообщить("Изменять записанный документ может только администратор.");
КонецЕсли;
КонецПроцедуры
Проверка ОбменДанными.Загрузка пропускает загрузку из обменов: без неё синхронизация начнёт падать с ошибкой записи.
Другие приёмы программиста:
- 🔒 Свойство
РежимРедактированияколонки или таблицы формы, чтобы запретить правку прямо в списке. - 🔒 Флаг
ТолькоПросмотру реквизитов табличной части при определённом статусе документа. - 🔒 Проверка в
ОбработкаПроверкиЗаполнения— если запрет связан с содержимым полей.
Как запретить изменение самой конфигурации
Иногда под «запретить редактирование» понимают защиту не данных, а программы: чтобы никто не правил модули и формы.
- 🔑 Доступ к конфигуратору. Войти в конфигуратор может только пользователь с правом «Администрирование» или полными правами. Обычным пользователям это право не давайте, а у администраторов задайте пароли.
- 📦 Настройки поддержки. В конфигураторе через
Конфигурация → Поддержка → Настройка поддержкиможно выбрать режим «Изменения не разрешены» для поставки. Тогда объекты типовой нельзя открыть на правку, пока режим не сменят. - 🗄️ Хранилище конфигурации. При командной разработке объект правят только после захвата в хранилище, а права на захват выдаются в администрировании хранилища.
- 🧱 Модули без исходных текстов. Для распространяемых решений поставщик может выгрузить модули без исходного кода. Для своей базы это обычно лишнее: потом вы не сможете исправить ошибку.
Режим поддержки «Изменения не разрешены» не мешает обновлять типовую конфигурацию. Но если вы уже вносили правки и переключаете режим обратно, сначала сравните конфигурацию с поставкой и сохраните выгрузку .cf.
Аудит изменений: кто и что поправил
Запреты не отменяют контроля. Если правка всё-таки прошла, нужно понять, кто её сделал.
Журнал регистрации. В БП 3.0 открывается из раздела Администрирование → Обслуживание. Отбор по пользователю, периоду и событию «Данные. Изменение» показывает, кто и когда записал объект. Журнал фиксирует сам факт записи, но не старое и новое значение полей.
История изменений (версионирование объектов). Включается в общих настройках раздела администрирования. Для выбранных видов документов и справочников программа хранит версии: можно сравнить две версии и увидеть, какое поле поменялось, а при необходимости вернуться к прежней.
Что настроить, чтобы аудит работал:
- 📝 уровень журнала регистрации «Регистрировать всё» или хотя бы ошибки, предупреждения и изменения;
- 📝 срок хранения журнала, достаточный для проверок (журнал разрастается, но месяц-два — мало для разборов);
- 📝 версионирование для ключевых документов: реализация, поступление, кадровые приказы;
- 📝 у каждого сотрудника свой пользователь 1С: общий логин «Бухгалтер» обнуляет весь аудит.
Версии хранятся в базе и увеличивают её объём. Включайте историю для 5–10 важных видов объектов, а не для всего подряд.