Как снять пометку на удаление в 1С:УТ 11.4, если возникает ошибка «Выбранный элемент удаляется»?

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

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

В этой статье мы подробно разберем, почему возникает данная блокировка, изучим внутренние механизмы Библиотеки стандартных подсистем (БСП) и рассмотрим несколько проверенных способов решения проблемы — от простых пользовательских настроек до манипуляций со служебными данными системы.

Почему возникает блокировка: разбор механизма фонового удаления

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

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

Проблема «зависания» пометки обычно связана с тем, что фоновое задание по какой-то причине прервалось (аварийное завершение сеанса, перезагрузка сервера), а запись в регистре осталась. Система «думает», что удаление все еще идет, и продолжает блокировать элемент.

Способ 1. Очистка регистра «Удаляемые объекты» (Самый эффективный)

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

Для реализации этого метода выполним следующие шаги:

  1. Перейдем в меню «Функции для технического специалиста» (ранее называлось «Все функции»). Если этот пункт меню не виден, его нужно включить в настройках (Настройки — Параметры — Режим технического специалиста).
  2. В открывшемся окне в строке поиска введем название регистра: Удаляемые объекты.
  3. Откроем этот регистр сведений.
  4. Найдем в списке запись, соответствующую нашей номенклатуре или объекту.
  5. Удалим эту запись из регистра (правой кнопкой мыши — Удалить или клавиша Del).

После удаления записи из этого регистра блокировка будет снята, и вы сможете стандартным способом (через контекстное меню в справочнике) снять пометку на удаление.

Способ 2. Использование группового изменения реквизитов

Если по какой-то причине вы не хотите работать напрямую с регистрами, разберем альтернативный вариант — использование стандартной обработки «Групповое изменение реквизитов». Этот метод позволяет «протолкнуть» изменение статуса объекта, обходя стандартные проверки формы.

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

  1. Перейдем в раздел Администрирование — Обслуживание — Корректировка данных и выберем пункт Групповое изменение реквизитов.
  2. В поле «Выбирать элементы» укажем наш справочник (например, Номенклатура).
  3. Обязательно добавим Отбор по конкретной позиции, с которой не снимается пометка, чтобы не изменить лишние данные.
  4. Нажмем кнопку Дополнительные параметры.
  5. В разделе «Специальные возможности» установим флажки:
    • Показывать служебные реквизиты
    • Режим разработчика
  6. В основном списке реквизитов найдем поле Пометка удаления.
  7. В колонке «Новое значение» установим Нет (флажок снят).
  8. Нажмем кнопку Изменить реквизиты.

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

Способ 3. Мониторинг и остановка регламентных заданий

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

Проанализируем работу планировщика:

  1. Зайдем в раздел Администрирование — Обслуживание — Регламентные и фоновые задания.
  2. Найдем в списке задание с наименованием Удаление помеченных объектов.
  3. Посмотрим на его статус. Если оно находится в состоянии «Выполняется», это и есть причина блокировки.
  4. Мы можем попытаться остановить его (правой кнопкой мыши — Отменить).

После принудительной остановки фонового задания система часто сама очищает РегистрСведений.УдаляемыеОбъекты, и доступ к редактированию элементов возвращается.

Дополнительные рекомендации

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

Рестарт сервера 1С: В некоторых случаях (особенно при использовании клиент-серверного варианта) блокировка может сохраняться в кэше сеансов или на уровне СУБД. Рестарт службы 1C:Enterprise 8.3 Server Agent является радикальным, но гарантированным способом очистки всех временных блокировок, если работа с регистрами не помогла.

Синхронизация данных: Если ваша база УТ 11.4 участвует в обмене с БП 3.0 или Розницей, проверьте, не заблокирован ли объект механизмом обмена. Иногда регистрация изменений в плане обмена может конфликтовать с процессом удаления.

Программная очистка: Если объектов много, программист может воспользоваться коротким кодом для очистки регистра. Посмотрим на пример логики:


НаборЗаписей = РегистрыСведений.УдаляемыеОбъекты.СоздатьНаборЗаписей();
НаборЗаписей.Отбор.Объект.Установить(СсылкаНаНужныйОбъект);
НаборЗаписей.Записать(); // Записываем пустой набор, тем самым удаляя записи

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

← На главную