К статье
Практический материал

Администрирование · 9 мин

Как в 1С запретить непосредственное удаление объектов

Как в 1С запретить непосредственное удаление объектов: настройка прав, роли, интерактивное удаление, контроль ссылочной целостности и типичные ошибки администраторов.

Непосредственное (физическое) удаление объектов в 1С — операция, при которой запись стирается из базы без контроля ссылок на неё в других документах и справочниках. Если пользователь удалит товар, контрагента или документ напрямую, в базе появятся «битые ссылки» — объекты вида «Объект не найден», которые ломают отчёты, проведение документов и обмены данными. Поэтому в нормально настроенной системе непосредственное удаление доступно только администратору, а рядовые пользователи работают через пометку на удаление.

Запрет настраивается на двух уровнях: права в конфигураторе (роли и профили групп доступа) и интерактивные команды интерфейса (Shift+Delete, пункты меню «Ещё»). Ниже разобраны оба подхода, способы проверки результата и типичные ошибки, из-за которых запрет «вроде включён», но пользователи продолжают стирать данные.

Чем непосредственное удаление отличается от пометки на удаление

В 1С существуют два механизма удаления. Пометка на удаление — безопасная операция: объект остаётся в базе, ссылки на него продолжают работать, пометку можно снять и восстановить данные. Физически объект исчезает только после запуска обработки «Удаление помеченных объектов», которая проверяет, не используется ли он в других местах.

Непосредственное удаление (Shift+Delete в форме списка или команда «Удалить» в меню «Ещё») стирает объект сразу, без проверки ссылок. Если на удалённый элемент справочника ссылаются документы, в них появится «Объект не найден». Восстановить такой объект штатными средствами нельзя — только из резервной копии.

Запрет через роли в конфигураторе

Основной способ — убрать у ролей пользователя права на удаление конкретных объектов. Для этого откройте конфигуратор, перейдите в раздел «Общие → Роли» и откройте роль, назначенную пользователю. В дереве объектов найдите нужный справочник или документ и снимите флажки с прав «Удаление» и «Интерактивное удаление».

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

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

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

Запрет через профили групп доступа (БСП)

В типовых конфигурациях на базе Библиотеки стандартных подсистем (УТ, ERP, Бухгалтерия, ЗУП) права обычно назначаются не ролями напрямую, а через профили групп доступа. Откройте раздел «Администрирование → Настройки прав и пользователей → Профили групп доступа», выберите профиль пользователя и на закладке «Роли» снимите роли, дающие право удаления, либо создайте отдельный профиль с ограниченным набором.

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

Отключение интерактивного удаления для всей базы

Если нужен жёсткий запрет на уровне всей конфигурации, можно убрать право «Интерактивное удаление» во всех ролях, кроме административной (например, «Полные права» / «Администратор системы»). Это трудоёмко при ручной доработке, поэтому часто используют групповую обработку ролей или внешние инструменты сравнения.

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

bsl
Процедура ЗапретНепосредственногоУдаленияПередУдалением(Источник, Отказ)
	Если НЕ Пользователи.ЭтоПолноправныйПользователь() Тогда
		Отказ = Истина;
	КонецЕсли;
КонецПроцедуры

Как проверить, что запрет работает

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

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

Контрольные точки

Как проверить результат

Shift+Delete в списке объектов
Норма

Сообщение «Нарушение прав доступа»

Тревожный признак

Объект удаляется без предупреждения

Команда «Ещё → Удалить» в форме объекта
Норма

Команда недоступна или выдаёт ошибку прав

Тревожный признак

Объект удаляется напрямую

Пометка на удаление (Delete)
Норма

Объект помечается и пометка снимается

Тревожный признак

Пометка тоже заблокирована — сняты лишние права

Типичные ошибки при настройке запрета

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

Ещё одна ошибка — забыть про внешние обработки и обмены. Если пользователь запускает обработку, которая программно удаляет объекты, запрет интерактивного удаления её не остановит: нужно снимать и право «Удаление», и контролировать доступ к самим обработкам.

Типичные ошибки
01
Снято право только в одной роли — пользователь получает его через другую роль или группу доступа
02
Не обновлена конфигурация базы данных после изменения ролей — старые права продолжают действовать
03
Проверка выполнена под учётной записью администратора, где запрет не виден
04
Снято только «Интерактивное удаление», но оставлено «Удаление» — объекты стираются программно через обработки
05
Вместе с запретом удаления случайно снята пометка на удаление — пользователи не могут работать штатно

Что делать вместо непосредственного удаления

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

Для объектов, которые нельзя удалить из-за ссылок, но нужно исключить из работы, используйте пометку на удаление в сочетании с настройкой видимости или дополнительными отборами в списках. Это сохраняет историю и целостность данных.

Итог

Что важно запомнить

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

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

Можно ли запретить удаление только для одного справочника, а не всей базы?

Да. В роли снимите права «Удаление» и «Интерактивное удаление» только у конкретного объекта в дереве метаданных. Остальные объекты сохранят прежние права. То же самое работает в профилях групп доступа через набор ролей по отдельным объектам.

Почему после снятия прав пользователь всё равно может удалять?

Чаще всего право приходит из другой роли или группы доступа — права в 1С суммируются. Также проверьте, что конфигурация базы данных обновлена, пользователь перезашёл в сеанс и у него нет полных прав или роли администратора.

Чем опасно непосредственное удаление для базы данных?

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

Как удалить объекты, если непосредственное удаление запрещено?

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

Можно ли запретить удаление программно, без изменения ролей?

Да, через подписку на событие «ПередУдалением» с отказом для непривилегированных пользователей. Такой код лучше размещать в расширении конфигурации, чтобы он не потерялся при обновлении типовой конфигурации.

Распространяется ли запрет на внешние обработки?

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