Никто не удалит лишнего: настраиваем запреты на удаление документов и справочников в 1С 8.3

· 10 мин

Содержание

Чтобы запретить удаление документов в 1С, уберите у пользователя права «Интерактивное удаление» и «Интерактивная пометка удаления» в ролях. В типовых конфигурациях это делают через профили групп доступа: Администрирование → Настройки пользователей и прав → Профили групп доступа. Закрытые периоды дополнительно защищает дата запрета изменения, а точечные правила задаются кодом в расширении.

Частое заблуждение — «добавлю пользователю роль, которая запрещает удаление». В 1С так не работает . Права ролей только складываются: если хоть одна роль разрешает действие, пользователь его выполнит. Запрет — это отсутствие разрешения во всех ролях пользователя, поэтому защиту базы данных начинают с ревизии ролей, а не с добавления новых.

Как 1С решает, может ли пользователь удалить объект

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

Право в ролиЧто разрешаетКак выглядит у пользователя
Интерактивная пометка удаленияПоставить пометку на удалениеКлавиша Del, объект перечёркнут
Интерактивное снятие пометки удаленияСнять пометкуПовторное Del по помеченному
Интерактивное удалениеУдалить сразу, без пометкиShift+Del в списке
Интерактивное удаление помеченныхУдалить помеченные через обработкуОбработка удаления помеченных
УдалениеУдаление программным кодомНужно обработкам и обменам

Ключевые моменты:

  • 🗑️ Пометка — ещё не удаление. Помеченный объект лежит в базе, на него сохраняются ссылки. Снять пометку можно в любой момент.
  • ⚡ Непосредственное удаление опасно. Shift+Del стирает объект сразу. Ссылки на него в других документах превращаются в «битые» — <Объект не найден>.
  • 🔧 Право «Удаление» без «интерактивного» оставляет возможность удалять кодом. Оно нужно обработкам и обменам, а рука пользователя до него не дотянется.

В типовых конфигурациях на БСП (Бухгалтерия 3.0, ЗУП 3.1, УТ 11) обычным пользователям непосредственное удаление не выдают. Клавиша Del у них только ставит пометку, а физически объекты чистит администратор. Если сотрудник удаляет сразу, у него есть лишняя роль или конфигурация доработана.

Настройка прав на удаление через профили групп доступа

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

Шаг 1. Проверьте, что разрешено пользователю сейчас

  1. Откройте Администрирование → Настройки пользователей и прав → Пользователи.
  2. Откройте карточку сотрудника и перейдите по ссылке «Права доступа ».
  3. Посмотрите, в какие группы доступа он входит и какие профили за ними стоят.

Если групп несколько, права из всех профилей складываются. Одна «щедрая» группа перекрывает все остальные.

Шаг 2. Сделайте свой профиль на основе поставляемого

Поставляемые профили (например, «Бухгалтер», «Кадровик») изменить нельзя — они обновляются вместе с конфигурацией. Порядок такой:

  1. Откройте Профили групп доступа, выделите нужный профиль.
  2. Скопируйте его: кнопка копирования в командной панели или F9.
  3. Задайте новое имя, например «Бухгалтер без удаления».
  4. На вкладке ролей снимите флажки с ролей, которые дают лишние права.
  5. Запишите профиль и переведите группу доступа пользователя на новый профиль.

Ограничение этого способа: роли в типовой конфигурации укрупнённые. Одна роль часто даёт и добавление, и изменение, и пометку удаления по десяткам документов. Снять роль — значит отобрать работу с документом целиком.

Шаг 3. Своя роль в расширении — для точного запрета

Когда нужно «работать с документом можно, помечать на удаление нельзя», делают собственную роль:

  1. В Конфигураторе откройте Конфигурация → Расширения конфигурации и создайте расширение.
  2. Заимствуйте нужные документы и добавьте в расширение новую роль.
  3. В роли выдайте чтение, добавление, изменение, проведение — всё, кроме пометки удаления и интерактивного удаления.
  4. Сохраните и примените расширение. В пользовательском режиме роль появится в списке ролей профиля.
  5. В своём профиле замените типовую роль этого документа на свою.

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

Нетиповая конфигурация без БСП

Если в базе нет профилей групп доступа, роли назначают в Конфигураторе: Администрирование → Пользователи, карточка пользователя, вкладка «Прочие». Права самих ролей правят в дереве конфигурации, в ветке «Общие → Роли». Логика та же: снимите флажки интерактивного удаления и пометки у нужных объектов.

Что именно нужно запретить?

Режим «только просмотр» и дата запрета изменения

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

Для аудитора, руководителя или внешнего консультанта проще всего дать профиль только с ролями чтения. В списке ролей профиля такие роли легко найти по словам «чтение» или «просмотр» в названии. Сотрудник откроет любой документ и отчёт, но запись и пометка удаления будут недоступны.

Дата запрета изменения данных

Этот механизм защищает закрытые периоды. До указанной даты документы нельзя изменить, перепровести, пометить на удаление и снять пометку.

В Бухгалтерии 3.0 настройка находится в разделе Администрирование → Проведение документов: включите флажок даты запрета изменения и перейдите по ссылке настройки. Варианты:

  • 📅 Общая дата для всех — например, последний день закрытого квартала.
  • 👥 Разные даты по пользователям — главному бухгалтеру можно оставить доступ, рядовым сотрудникам закрыть.
  • 🏢 Разные даты по организациям — если в базе несколько юрлиц с разным графиком закрытия.

Задавайте дату не числом, а правилом: «конец прошлого месяца» или «конец прошлого квартала». Тогда граница сдвигается сама, и её не нужно переставлять каждый месяц.

Программный запрет удаления в модуле объекта

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

  1. В расширении создайте общий модуль с флажком «Сервер».
  2. Создайте подписку на событие «ПередЗаписью», источник — объекты документов, которые надо защитить.
  3. Укажите обработчиком процедуру общего модуля.
Процедура ЗапретПометкиУдаленияПередЗаписью(Источник, Отказ, РежимЗаписи, РежимПроведения) Экспорт

	// Обмены и загрузка данных не блокируем
	Если Источник.ОбменДанными.Загрузка Тогда
		Возврат;
	КонецЕсли;

	// Реагируем только на установку пометки у существующего документа
	Если Источник.ЭтоНовый() Или Не Источник.ПометкаУдаления Тогда
		Возврат;
	КонецЕсли;

	// Пометка уже стояла в базе — это не новая попытка
	Если Источник.Ссылка.ПометкаУдаления Тогда
		Возврат;
	КонецЕсли;

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

КонецПроцедуры

Как это работает. Платформа вызывает обработчик перед каждой записью документа, в том числе при нажатии Del. Источник.Ссылка.ПометкаУдаления читает значение из базы, то есть до изменения. Если в базе пометки не было, а в объекте она есть — пользователь пытается её поставить, и запись отменяется.

Для непосредственного удаления заведите вторую подписку на событие «ПередУдалением». Её обработчик принимает два параметра — Источник и Отказ. Для справочников у «ПередЗаписью» только два параметра, поэтому сделайте для них отдельную процедуру.

Проверка ОбменДанными.Загрузка обязательна. Без неё перестанут загружаться пакеты обмена с филиалом или розницей, где объекты приходят уже с пометкой удаления.

Ограничение прав на уровне СУБД: что реально можно сделать

В клиент-серверном варианте база лежит в SQL Server или PostgreSQL. Здесь главное — понимать, чего права СУБД не делают.

  • 🔒 Разделить пользователей 1С на уровне СУБД нельзя. Сервер 1С ходит в базу под одной учётной записью, указанной в свойствах информационной базы. Для СУБД все бухгалтеры — один и тот же пользователь.
  • 🚫 Запретить DELETE этой учётной записи нельзя. Платформа постоянно удаляет и перезаписывает строки регистров и табличных частей. Без права удаления база перестанет работать.
  • ✅ Можно закрыть базу от всех остальных. Отдельная учётная запись для 1С, без роли sysadmin и без доступа к чужим базам. Для отчётов и BI — отдельный логин только на чтение.

Логин только на чтение в SQL Server:

CREATE LOGIN report_ro WITH PASSWORD = 'СложныйПароль_123';
USE buh_base;
CREATE USER report_ro FOR LOGIN report_ro;
ALTER ROLE db_datareader ADD MEMBER report_ro;

То же в PostgreSQL:

CREATE ROLE report_ro LOGIN PASSWORD 'СложныйПароль_123';
GRANT CONNECT ON DATABASE buh_base TO report_ro;
GRANT USAGE ON SCHEMA public TO report_ro;
GRANT SELECT ON ALL TABLES IN SCHEMA public TO report_ro;

Главная защита на этом уровне — резервные копии. Удалённый документ без копии не вернуть. Настройте ежедневный полный бэкап средствами СУБД и храните его на другом диске или сервере.

Удаление помеченных объектов: кто и когда чистит базу

Физическое удаление в типовых конфигурациях выполняет обработка: Администрирование → Обслуживание, группа «Корректировка данных», «Удаление помеченных объектов». Обработка проверяет ссылки: объект, на который ссылаются другие данные, не удаляется, пока ссылки не убраны.

Правила, которые берегут базу:

  1. Доступ к обработке — только администратору. Право «Интерактивное удаление помеченных» уберите из пользовательских профилей.
  2. Перед запуском просмотрите список помеченных. Иногда пометку ставят по ошибке, и объект ещё нужен.
  3. Запускайте после резервной копии и вне рабочего времени. Обработка на большой базе идёт долго и нагружает сервер.
  4. Проверьте регламентные задания. В типовых конфигурациях удаление помеченных может выполняться по расписанию. Если хотите контролировать каждое удаление вручную, отключите задание в Администрирование → Обслуживание → Регламентные операции.

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

Журнал регистрации: как узнать, кто удалил документ

Даже при строгих правах полезно видеть, кто и что делал. Журнал регистрации открывается в Администрирование → Обслуживание → Журнал регистрации.

Как найти виновника:

  1. Нажмите «Отбор» и задайте период.
  2. В поле событий выберите «Данные. Удаление» — это физическое удаление объекта.
  3. Пометка на удаление — это запись объекта, поэтому её ищите среди событий «Данные. Изменение» с отбором по нужным данным.
  4. В колонках журнала видно пользователя, компьютер, время и представление объекта.

Что настроить заранее:

  • 📝 Уровень журнала. В Конфигураторе: Администрирование → Настройка журнала регистрации. Должна быть включена регистрация всех событий, иначе изменения данных не попадут в журнал.
  • 🗂️ Срок хранения. Там же задайте разделение журнала по периодам и не очищайте его слишком часто.
  • 🕓 История изменений объектов. В конфигурациях на БСП можно включить версионирование в Администрирование → Общие настройки. Тогда для документа видна каждая версия: кто менял, какие реквизиты и когда.

Частые ошибки при защите от удаления

  • ❌ Добавляют «запрещающую» роль. Запретов в ролях нет, права только суммируются. Ищите, какая роль даёт лишнее, и убирайте её.
  • ❌ Пользователь в двух группах доступа. Новый ограниченный профиль назначили, а старую группу не убрали — удаление по-прежнему работает.
  • ❌ Правят поставляемый профиль или типовую роль. Изменения пропадут при обновлении или снимут конфигурацию с поддержки. Копия профиля и расширение решают задачу без этих потерь.
  • ❌ Забыли о программном праве «Удаление». Если его снять полностью, сломаются обмены и обработки, которые законно удаляют записи.
  • ❌ Полагаются только на права. Без резервной копии и журнала регистрации ошибку администратора уже не исправить.

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

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