Как скрыть или отключить кнопку непосредственного удаления объектов в 1С?

Программист 1С v8.3 (Управляемые формы) IT и автоматизация бизнеса
← На главную

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

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

Проанализируем ситуацию с правами пользователей. Платформа устроена таким образом, что видимость и доступность стандартной команды непосредственного удаления (а также сочетания клавиш Shift + Del) напрямую управляются правом «Интерактивное удаление». Выясним причину, почему команда может оставаться доступной: если пользователю назначено несколько ролей, права суммируются по правилу «ИЛИ». Достаточно наличия этого права хотя бы в одной назначенной роли, чтобы пользователь мог удалять объекты мимо корзины.

Разберем по шагам, как правильно отключить данное право в конфигураторе:

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

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

Отключение удаления в свойствах формы и динамического списка

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

  1. В конфигураторе откроем форму списка нужного объекта.
  2. Выделим элемент формы — таблицу динамического списка (или табличную часть).
  3. В палитре свойств найдем параметр РазрешитьУдаление и установим для него значение Ложь. Это действие отключит как кнопку в командной панели, так и горячие клавиши удаления для текущей таблицы.
  4. Если необходимо выборочно скорректировать командную панель, откроем свойство формы СоставКоманд, развернем раздел стандартных команд и снимем флаг с команды удаления.

В режиме «1С:Предприятие» администратор также может настроить видимость команд через форму настройки интерфейса: откроем меню «Ещё» → «Изменить форму», снимем флаг видимости с элемента команды и затем скопируем эту настройку другим пользователям через стандартную обработку управления настройками пользователей.

Программный перехват событий удаления

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

Для блокировки удаления непосредственно из таблицы формы создадим обработчик события ПередУдалением:


&НаКлиенте
Процедура СписокПередУдалением(Элемент, Отказ)
    Отказ = Истина;
    ПоказатьПредупреждение(, "Непосредственное удаление объектов запрещено регламентом системы.");
КонецПроцедуры

Если необходимо защитить объект на уровне бизнес-логики сервера перед вызовом метода Удалить(), используем обработчик в модуле объекта:


Процедура ПередУдалением(Отказ)
    Если Не ПараметрыСеанса.РазрешеноПрямоеУдаление Тогда
        Отказ = Истина;
    КонецЕсли;
КонецПроцедуры

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

← На главную