Почему помеченные на удаление объекты не отображаются в списке для удаления и как это исправить?

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

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

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

Шаг 1. Проверка фактического состояния реквизита «ПометкаУдаления»

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

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


// Проверка значения стандартного реквизита ПометкаУдаления
ОбъектСсылка = Справочники.Номенклатура.НайтиПоКоду("19096");
Сообщить(ОбъектСсылка.ПометкаУдаления); 

Если в результате выполнения кода мы получаем Истина, значит, на уровне данных объект помечен корректно. Если же результат Ложь, значит, в вашей конфигурации реализован механизм «псевдо-удаления» через дополнительные реквизиты, и стандартная обработка такой объект не увидит. В нашем случае мы исходим из того, что реквизит установлен в Истина.

Шаг 2. Анализ специфического права «Интерактивное удаление помеченных»

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

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


// Проверка наличия специального права доступа
CanDelete = AccessRight("InteractiveDeleteMarked", MetadataObject);
Если Не CanDelete Тогда
    // Объект не будет включен в список поиска
    Продолжить;
КонецЕсли;

Право InteractiveDeleteMarked (в русской редакции конфигуратора — «Интерактивное удаление помеченных») является ключевым. Рассмотрим основные нюансы его работы:

Шаг 3. Влияние механизмов RLS (Row Level Security)

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

  1. Объект попадает в группу доступа, к которой у текущего пользователя нет прав на чтение (даже если он сам пометил его на удаление).
  2. Платформенная обработка выполняет запрос к базе данных без использования конструкции ВЫБРАТЬ РАЗРЕШЕННЫЕ (в старых версиях платформы) или вне привилегированного режима.

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

Шаг 4. Особенности работы функциональных опций и кэширования

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

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

Кэш метаданных: Иногда платформа «залипает» на старых определениях прав. Помогает очистка локального кэша (папки %AppData%\1C\1Cv8) или обновление конфигурации базы данных с предварительным снятием и повторной установкой прав.

Шаг 5. Почему при удалении одного объекта удаляется «целый список»?

Рассмотрим ситуацию, когда пользователь пометил один документ, а обработка сообщает об удалении, например, 123 объектов. Проанализируем, как это происходит:

Рекомендации по решению проблемы

Подводя итог, если вы столкнулись с отсутствием объекта в списке удаления, выполните следующие действия:

  1. Убедитесь через Табло, что ПометкаУдаления = Истина.
  2. Зайдите в Конфигуратор, найдите нужный объект и проверьте в ролях пользователя право «Интерактивное удаление помеченных».
  3. Если используется конфигурация на базе БСП (Библиотека стандартных подсистем), используйте встроенную обработку «Обслуживание -> Удаление помеченных объектов» вместо платформенной (через «Все функции»).
  4. В крайнем случае воспользуйтесь внешними инструментами разработчика, которые позволяют принудительно вызвать процедуру удаления без проверки этого специфического права. Для полной очистки базы от записей по отдельному юридическому лицу применяется выборочное удаление организаций с автоматическим поиском связанных объектов.

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

← На главную