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

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

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

Почему опция «Удалить» заблокирована по умолчанию

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

Способ 1. Настройка прав в конфигураторе (Интерактивное удаление)

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

Разберем по шагам, как предоставить это право:

  1. Откроем Конфигуратор и найдем нужную роль (или создадим новую).
  2. В дереве метаданных роли выберем объект, который нас интересует (например, конкретный справочник).
  3. В списке прав найдем пункт Интерактивное удаление.
  4. Установим галочку напротив этого пункта.
  5. Сохраним конфигурацию и назначим обновленную роль пользователю.

Важно: В современных конфигурациях (БП 3.0, УТ 11, ERP) крайне не рекомендуется изменять типовые роли. Вместо этого лучше использовать механизм расширений.

Способ 2. Использование расширений конфигурации

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

Рассмотрим алгоритм действий в расширении:

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

Этот метод позволяет сохранить возможность автоматического обновления основной конфигурации, при этом решив задачу разблокировки прав.

Способ 3. Программное удаление объекта через код

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


// Получаем объект по ссылке или иным способом
СсылкаНаЭлемент = Справочники.Номенклатура.НайтиПоКоду("00001");
Если Не СсылкаНаЭлемент.Пустая() Тогда
    // Получаем объектную сущность для выполнения записи/удаления
    ОбъектДляУдаления = СсылкаНаЭлемент.ПолучитьОбъект();
    
    // Выполняем непосредственное удаление из базы данных
    Попытка
        ОбъектДляУдаления.Удалить();
        Сообщить("Элемент успешно удален физически.");
    Исключение
        Сообщить("Не удалось удалить объект: " + ОписаниеОшибки());
    КонецПопытки;
КонецЕсли;

Проанализируем этот код: метод Удалить() срабатывает мгновенно. Он не проверяет, используется ли этот элемент в других документах. Это самый быстрый, но и самый опасный способ, так как он может привести к появлению «битых ссылок».

Способ 4. Групповое изменение реквизитов (Штатный инструмент БСП)

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

  1. Откроем обработку через меню Администрирование — Обслуживание — Корректировка данных.
  2. В окне обработки нажмем кнопку Дополнительные параметры.
  3. Установим флаг Доступны служебные реквизиты и Режим разработчика (если доступен).
  4. После этого в списке возможных действий для выбранных элементов появится пункт Удалить.

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

Последствия непосредственного удаления

Мы должны четко понимать риски. Непосредственное удаление (Direct Delete) отличается от стандартного механизма контроля ссылочной целостности следующими моментами:

Поэтому, прежде чем использовать Shift+Del или метод Удалить(), убедитесь, что вы предварительно выполнили поиск ссылок на данный объект и они отсутствуют.

← На главную