Только чтение, закрытый период, свои записи: способы ограничить правку данных в 1С 8.3

· 9 мин

Содержание

Чтобы запретить редактирование в 1С 8.3, чаще всего хватает двух штатных настроек без программиста. Закрытые периоды блокирует дата запрета изменения (в БП 3.0: Администрирование → Пользователи и права, флаг «Даты запрета изменения»). Пользователю «только для просмотра» дают группу доступа с профилем без ролей на добавление и изменение.

Остальные способы — права ролей в конфигураторе, ограничение на уровне записей (RLS), блокировка формы кодом — нужны, когда штатных настроек мало. Ниже каждый механизм по порядку: от безопасных настроек в пользовательском режиме к доработкам.

Какой способ ограничить редактирование выбрать

Сначала сформулируйте, что именно нужно закрыть. От этого зависит инструмент.

ЗадачаМеханизмГде настраиваетсяНужен программист
Никто не правит документы прошлых месяцевДаты запрета измененияПользовательский режимНет
Сотрудник видит всё, но ничего не меняетПрофиль групп доступа без ролей измененияПользовательский режимНет
Менеджер правит только документы своей организацииОграничение на уровне записейПрофиль + флаг RLSНет (в типовых)
Запретить правку одного реквизита или формыСвойство ТолькоПросмотр, обработчик ПередЗаписьюРасширение конфигурацииДа
Никто не меняет саму конфигурациюПрава на конфигуратор, настройки поддержки, хранилищеКонфигураторДа
Что нужно запретить?

Даты запрета изменения: закрыть прошлый период

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

Где включается в типовых конфигурациях:

КонфигурацияПуть
1С:Бухгалтерия 3.0Администрирование → Пользователи и права
1С:ЗУП 3.1Администрирование → Настройки пользователей и прав
1С:УТ 11НСИ и администрирование → Настройки пользователей и прав

Порядок настройки:

  1. Откройте панель по пути из таблицы.
  2. Установите флаг «Даты запрета изменения» и перейдите по ссылке настройки рядом с ним.
  3. Выберите способ указания: одна общая дата для всех или разные даты по пользователям и разделам.
  4. Укажите дату. Можно задать фиксированную (например, 31.03) или относительную: конец прошлого месяца, квартала, года.
  5. Для относительной даты задайте число дней, в течение которых ещё разрешено править (например, 10 дней после конца месяца на исправления).
  6. Запишите настройку.

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

Тонкости, которые всплывают на практике:

  • 👤 Исключения по пользователям. Главному бухгалтеру можно оставить более раннюю дату, а остальным закрыть период полностью.
  • 📂 Разделы и организации. В режиме «по разделам и объектам» разным организациям ставят разные даты: одна фирма уже сдала квартал, другая ещё нет.
  • 🔄 Загрузка данных. Рядом настраиваются даты запрета загрузки: они не дают обменам (например, с УТ или ЗУП) перезаписать документы закрытого периода.
  • 🛠️ Полные права. Администратор с полными правами тоже подчиняется дате запрета, если она задана для всех пользователей. Это защита от случайной правки, а не от администратора: он может сам сдвинуть дату.

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

В конфигурациях на БСП (БП 3.0, ЗУП 3.1, УТ 11, КА, ERP) права не раздают ролями напрямую. Цепочка такая: роли → профиль групп доступа → группа доступа → пользователь.

Чтобы сотрудник видел данные, но ничего не менял:

  1. Откройте Профили групп доступа в той же панели пользователей и прав.
  2. Найдите поставляемый профиль, близкий по смыслу, и скопируйте его. Поставляемые профили менять нельзя, их копию — можно.
  3. В копии на вкладке ролей снимите флажки с ролей, в названии которых есть «Добавление и изменение», и оставьте роли с «Чтение».
  4. Запишите профиль под понятным именем, например «Аудитор — только просмотр».
  5. Откройте Группы доступа, создайте группу с этим профилем и добавьте в участники нужного пользователя.
  6. Уберите этого пользователя из групп с профилями, которые дают изменение.

Права в группах доступа складываются. Если пользователь состоит в группе «Бухгалтер» и в группе «Только просмотр», он может редактировать: срабатывает самое широкое право. Запрет одной группой «перебить» права другой нельзя.

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

Права на объекты метаданных в конфигураторе

Под профилями лежат роли конфигурации. Роль — это таблица: объект метаданных и галочки прав «Чтение», «Добавление», «Изменение», «Удаление», «Проведение», «Отмена проведения», «Интерактивное удаление» и другие.

Когда к ним лезть:

  • 🧩 Нетиповая или самописная конфигурация без БСП. Там роль назначается пользователю напрямую в Администрирование → Пользователи конфигуратора.
  • 🧩 Нужна роль, которой нет среди поставляемых. Например, право читать справочник и проводить документы, но не менять их.

Как сделать роль «только чтение» для своего объекта:

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

Разница между «Изменение» и «Интерактивное изменение»: первое разрешает менять объект программно (обработки, обмены), второе — руками через форму. Если снять только интерактивное право, пользователь не отредактирует документ в форме, но обработка, запущенная от его имени, сможет.

Не правьте поставляемые роли типовой конфигурации напрямую. Это снимает конфигурацию с полной поддержки и усложняет каждое обновление. Нужная роль добавляется расширением.

RLS: разрешить правку только своих записей

Ограничение доступа на уровне записей (Record Level Security) отвечает на вопрос «какие именно документы», а не «какие объекты». Пример: менеджер видит все заказы, но менять может только заказы своего склада.

В типовых на БСП RLS включается без конфигуратора:

  1. В панели пользователей и прав установите флаг ограничения доступа на уровне записей.
  2. Откройте профиль группы доступа и перейдите на вкладку видов доступа. Список видов зависит от конфигурации: в БП это прежде всего организации, в УТ 11 — ещё склады, партнёры и другие.
  3. Для вида доступа выберите режим: «все разрешены» или «все запрещены» с явным перечнем исключений.
  4. В самой группе доступа укажите конкретные значения: какие организации или склады разрешены участникам.

Это механизм видимости и изменения одновременно: запись, недоступная по RLS, не появится в списке. Но в ролях условия RLS задаются отдельно для чтения и для изменения. В своей конфигурации можно разрешить читать всё, а менять — только свою организацию. Условие на право «Изменение» выглядит так:

ТекущаяТаблица ГДЕ ТекущаяТаблица.Организация = &ТекущаяОрганизация

Здесь &ТекущаяОрганизация — параметр сеанса, который заполняется при входе пользователя.

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

Запрет редактирования через код и расширение

Когда штатных механизмов мало — например, нельзя менять сумму в проведённом документе, а комментарий можно, — запрет делают программно. В типовой конфигурации всё это пишется в расширении (платформа 8.3.6 и выше), чтобы не снимать её с поддержки.

Форма только для просмотра. В модуле формы при создании выставляется свойство ТолькоПросмотр. Пример для расширения формы документа: пользователь без полных прав открывает проведённый документ только на просмотр.

&НаСервере
&После("ПриСозданииНаСервере")
Процедура Расш_ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
	Если Объект.Проведен И НЕ РольДоступна("ПолныеПрава") Тогда
		ТолькоПросмотр = Истина;
	КонецЕсли;
КонецПроцедуры

Для одного поля то же свойство задают элементу: Элементы.СуммаДокумента.ТолькоПросмотр = Истина (имя элемента смотрите в дереве элементов формы).

Запрет записи объекта. Форма защищает только интерфейс: обработка или обмен всё равно запишут объект. Надёжная проверка ставится в модуле объекта, в обработчике ПередЗаписью:

&Перед("ПередЗаписью")
Процедура Расш_ПередЗаписью(Отказ, РежимЗаписи, РежимПроведения)
	Если ОбменДанными.Загрузка Тогда
		Возврат;
	КонецЕсли;
	Если НЕ ЭтоНовый() И НЕ РольДоступна("ПолныеПрава") Тогда
		Отказ = Истина;
		Сообщить("Изменять записанный документ может только администратор.");
	КонецЕсли;
КонецПроцедуры

Проверка ОбменДанными.Загрузка пропускает загрузку из обменов: без неё синхронизация начнёт падать с ошибкой записи.

Другие приёмы программиста:

  • 🔒 Свойство РежимРедактирования колонки или таблицы формы, чтобы запретить правку прямо в списке.
  • 🔒 Флаг ТолькоПросмотр у реквизитов табличной части при определённом статусе документа.
  • 🔒 Проверка в ОбработкаПроверкиЗаполнения — если запрет связан с содержимым полей.

Как запретить изменение самой конфигурации

Иногда под «запретить редактирование» понимают защиту не данных, а программы: чтобы никто не правил модули и формы.

  • 🔑 Доступ к конфигуратору. Войти в конфигуратор может только пользователь с правом «Администрирование» или полными правами. Обычным пользователям это право не давайте, а у администраторов задайте пароли.
  • 📦 Настройки поддержки. В конфигураторе через Конфигурация → Поддержка → Настройка поддержки можно выбрать режим «Изменения не разрешены» для поставки. Тогда объекты типовой нельзя открыть на правку, пока режим не сменят.
  • 🗄️ Хранилище конфигурации. При командной разработке объект правят только после захвата в хранилище, а права на захват выдаются в администрировании хранилища.
  • 🧱 Модули без исходных текстов. Для распространяемых решений поставщик может выгрузить модули без исходного кода. Для своей базы это обычно лишнее: потом вы не сможете исправить ошибку.

Режим поддержки «Изменения не разрешены» не мешает обновлять типовую конфигурацию. Но если вы уже вносили правки и переключаете режим обратно, сначала сравните конфигурацию с поставкой и сохраните выгрузку .cf.

Аудит изменений: кто и что поправил

Запреты не отменяют контроля. Если правка всё-таки прошла, нужно понять, кто её сделал.

Журнал регистрации. В БП 3.0 открывается из раздела Администрирование → Обслуживание. Отбор по пользователю, периоду и событию «Данные. Изменение» показывает, кто и когда записал объект. Журнал фиксирует сам факт записи, но не старое и новое значение полей.

История изменений (версионирование объектов). Включается в общих настройках раздела администрирования. Для выбранных видов документов и справочников программа хранит версии: можно сравнить две версии и увидеть, какое поле поменялось, а при необходимости вернуться к прежней.

Что настроить, чтобы аудит работал:

  • 📝 уровень журнала регистрации «Регистрировать всё» или хотя бы ошибки, предупреждения и изменения;
  • 📝 срок хранения журнала, достаточный для проверок (журнал разрастается, но месяц-два — мало для разборов);
  • 📝 версионирование для ключевых документов: реализация, поступление, кадровые приказы;
  • 📝 у каждого сотрудника свой пользователь 1С: общий логин «Бухгалтер» обнуляет весь аудит.

Версии хранятся в базе и увеличивают её объём. Включайте историю для 5–10 важных видов объектов, а не для всего подряд.

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

Можно ли закрыть базу целиком только на чтение?
Отдельного режима «база только для чтения» в платформе нет. Решение — всем пользователям, кроме администратора, назначить группы доступа с профилями без ролей изменения.
Почему пользователь редактирует документ, хотя в профиле прав нет?
Он состоит ещё в одной группе доступа, профиль которой даёт изменение. Права из разных групп складываются, поэтому проверяйте итоговые права в карточке пользователя.
Получится ли перепровести документы закрытого периода?
Нет. Перепроведение и закрытие месяца за период до даты запрета завершатся отказом записи. Чтобы пересчитать такой период, сначала сдвиньте дату запрета, а после пересчёта верните её.
Как разрешить одному сотруднику исправить закрытый месяц?
В настройке дат запрета задайте для этого пользователя персональную, более раннюю дату. После исправления верните общую.
Что надёжнее: запрет в форме или в модуле объекта?
В модуле объекта. Запрет в форме убирает возможность правки из интерфейса, но обработка или обмен запишут объект в обход формы.