Объект помечен, а из базы не уходит: разбираем все препятствия к удалению в 1С 8.3

· 9 мин

Содержание

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

Частое заблуждение: «поставил красный крестик — значит, удалил». Нет. Пометка на удаление только готовит объект к удалению. Физически запись уходит из базы, когда администратор запускает обработку удаления помеченных объектов, и только если она прошла все проверки. Всё сказанное ниже относится к платформе 1С 8.3 и типовым конфигурациям на БСП: Бухгалтерии 3.0, ЗУП 3.1, УТ 11.

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

В типовых конфигурациях удаление идёт в два этапа:

  1. 🏷️ Пометка. Пользователь выделяет строку и нажимает Del или команду «Пометить на удаление». Объект остаётся в списках, но перечёркнут.
  2. 🧹 Очистка. Администратор запускает обработку, которая проверяет ссылки и удаляет то, что можно удалить без нарушения целостности.

Непосредственное удаление (сразу, без пометки) в типовых конфигурациях обычно не выдают даже администратору. Это защита: такое удаление может оставить «битые» ссылки.

Где запустить очистку:

КонфигурацияПуть
Бухгалтерия 3.0Администрирование → Обслуживание, группа «Корректировка данных» → «Удаление помеченных объектов»
ЗУП 3.1Администрирование → Обслуживание, группа «Корректировка данных» → «Удаление помеченных объектов»
УТ 11НСИ и администрирование → Обслуживание, группа «Корректировка данных» → «Удаление помеченных объектов»
ЛюбаяВсе функции → Обработки → Удаление помеченных объектов

Команда «Все функции» появляется после включения флажка в Сервис и настройки → Параметры.

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

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

Ссылки на объект: главная причина, почему он не удаляется

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

  • 📄 контрагент указан в проведённой реализации или платёжке;
  • 📦 номенклатура есть в строках документа или в остатках регистра;
  • 👤 сотрудник указан в кадровом документе или начислении;
  • 🗂️ элемент справочника записан в реквизите другого элемента (например, договор указан основным в карточке контрагента);
  • 📊 запись регистра сведений хранит ссылку в измерении или ресурсе.

Как разобрать такой случай:

  1. В результатах обработки откройте не удалённый объект. Справа или ниже будет список мест использования.
  2. Решите для каждой ссылки: она тоже лишняя или нужна.
  3. Если ссылающийся объект тоже лишний — пометьте его на удаление. Объекты, помеченные вместе, обработка удаляет одним проходом, даже если они ссылаются друг на друга.
  4. Если ссылка нужна — замените в ней объект на правильный или снимите пометку с удаляемого.
  5. Запустите удаление повторно.

Типичный пример — дубль контрагента. Удалять его в лоб бесполезно: на нём висят документы. Правильный путь — заменить ссылки на основного контрагента обработкой поиска и удаления дублей (в БП 3.0 она есть в группе «Корректировка данных» того же раздела Обслуживание) и только потом удалить дубль.

Найти все ссылки на один объект можно и без запуска удаления. Стандартная команда — Все функции → Стандартные → Поиск ссылок на объекты. Программисту хватит платформенной функции НайтиПоСсылкам в серверной процедуре:

Ссылки = Новый Массив;
Ссылки.Добавить(Справочники.Контрагенты.НайтиПоНаименованию("ООО Ромашка"));
Найдено = НайтиПоСсылкам(Ссылки);
Для Каждого СтрокаТаблицы Из Найдено Цикл
    Сообщить(Строка(СтрокаТаблицы.Данные) + " — " + СтрокаТаблицы.Метаданные.ПолноеИмя());
КонецЦикла;

Метод Удалить() у объекта в коде удаляет запись без проверки ссылок. Не удаляйте так объекты в рабочей базе: останутся «битые» ссылки вида <Объект не найден>, и их придётся чинить тестированием базы.

Блокировки: объект держит другой пользователь или фоновое задание

Если ссылок нет, а объект всё равно не удалился, проверьте блокировки. Обработка не может удалить запись, которую в этот момент редактирует или записывает другой сеанс.

Кто обычно держит объект:

  • 👥 коллега открыл карточку или документ и не закрыл форму;
  • 🔄 идёт обмен данными: синхронизация с другой базой, загрузка банка, выгрузка на сайт;
  • ⏱️ работает регламентное задание: закрытие месяца в фоне, обновление курсов, полнотекстовый индекс;
  • 🧩 висит «зависший» сеанс после аварийного выхода.

Что делать:

  1. Посмотрите активных пользователей: Администрирование → Обслуживание → Активные пользователи (в УТ 11 — через НСИ и администрирование).
  2. Попросите тех, кто работает с нужными объектами, закрыть формы.
  3. Дождитесь окончания обмена или регламентного задания. Их список и состояние видны в обработке «Регламентные и фоновые задания» в разделе Обслуживание.
  4. Запустите удаление в нерабочее время, когда в базе нет других сеансов.

Обработка удаления может предложить установить монопольный режим. Это не обязательно, но так проходит чище: никто не изменит данные во время удаления.

Монопольный режим и принудительное завершение сеансов обрывают работу пользователей, несохранённые данные пропадут. Предупредите людей заранее и делайте это вне рабочего дня.

В клиент-серверной базе при одновременной записи бывает ошибка Конфликт блокировок при выполнении транзакции. Она не говорит о поломке. Повторите удаление, когда нагрузка спадёт.

Права доступа: пометить можно, а удалить — нет

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

ДействиеКто обычно может
Пометить на удалениеПользователь с правом на изменение этого объекта
Снять пометкуТот же пользователь
Запустить удаление помеченныхАдминистратор, пользователь с полными правами
Удалить непосредственно, без пометкиВ типовых конфигурациях обычно никто

Признаки проблемы с правами:

  • 🚫 команда «Удаление помеченных объектов» не видна в разделе;
  • 🚫 при попытке пометки появляется Недостаточно прав с указанием операции;
  • 🚫 пометка ставится, но с части объектов снимается при записи из-за ограничения доступа на уровне записей (например, по организации).

Права назначают в Администрирование → Настройки пользователей и прав. Не выдавайте полные права только ради удаления. Проще, чтобы очистку раз в месяц запускал администратор.

Проведённые документы, дата запрета и данные учёта

Документы удаляются сложнее справочников: за ними тянутся движения в регистрах и проводки.

Как ведёт себя проведённый документ:

  1. При установке пометки проведение отменяется, движения удаляются.
  2. Если отменить проведение нельзя, пометка не встанет — придёт сообщение с причиной.
  3. После пометки документ становится кандидатом на удаление, как обычный объект.

Почему документ не удаётся пометить или удалить:

  • 🔒 Дата запрета изменения. Если период закрыт, документ нельзя ни изменить, ни пометить. Настройка в БП 3.0 — Администрирование → Проведение документов, ссылка на даты запрета изменения. Менять дату запрета ради удаления лучше не стоит: вы правите закрытый период, по которому сдана отчётность.
  • 🔗 На документ ссылаются другие документы. Например, реализация указана основанием счёта-фактуры или в документе оплаты. Сначала разберитесь с подчинёнными документами.
  • 📒 Регламентные операции. Если документ попал в закрытый месяц, его удаление сломает расчёты закрытия. После удаления период придётся перезакрыть.
  • 🧾 Отправленные документы ЭДО и отчётность. Документы, отправленные контрагенту или в контролирующий орган, удалять не нужно: юридически они уже существуют.

Перед удалением документа за прошлый период откройте структуру подчинённости (команда в форме документа). Она покажет связанные документы одним деревом.

Предопределённые элементы и служебные данные

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

  • ⚙️ Предопределённые элементы — например, счета плана счетов, виды расчёта, системные элементы справочников. Программа не даёт их пометить или удаляет пометку.
  • 👤 Пользователь, под которым вы вошли. Себя самого из текущего сеанса удалить не получится.

Такие объекты не нужно удалять. Если элемент мешает, сделайте его неиспользуемым — как, описано в разделе про архивирование ниже.

Сбои в базе и проблемы индексов

Иногда объект нельзя удалить из-за повреждения данных. Признаки:

  • ❗ обработка удаления падает с ошибкой платформы, а не с вежливым «используется в…»;
  • ❗ в местах использования видны <Объект не найден> и пустые ссылки;
  • ❗ одна и та же запись появляется в списке дважды или не открывается;
  • ❗ ошибка вида Ошибка при выполнении операции с информационной базой.

Порядок действий:

  1. Сделайте резервную копию: выгрузку в .dt через Конфигуратор или копию каталога файловой базы. Для SQL-базы — средствами СУБД.
  2. Откройте Конфигуратор → Администрирование → Тестирование и исправление.
  3. Включите «Реиндексация таблиц информационной базы», «Проверка логической целостности», «Проверка ссылочной целостности».
  4. Для битых ссылок выберите «Не изменять» на первом проходе: так вы увидите масштаб, ничего не меняя.
  5. Если всё понятно — повторите с режимом «Создавать объекты» или «Очищать ссылки» и пересчётом итогов.
  6. Снова запустите удаление помеченных объектов.

Тестирование и исправление требует монопольного доступа: все пользователи должны выйти из базы. Режим «Очищать ссылки» необратим: в документах останутся пустые поля. Без резервной копии не запускайте.

Для файловой базы есть ещё утилита chdbfl.exe в каталоге bin платформы. Она проверяет физическую целостность файла 1Cv8.1CD. Запускать её можно только при закрытой базе.

Если ошибка повторяется после тестирования, попробуйте очистить кэш клиента: запуск с параметром /ClearCache или удаление каталогов кэша пользователя. Это безопасно для данных, но выполняйте при закрытом клиенте.

Если удалять не нужно: архив вместо удаления

Удаление — не единственный способ убрать объект с глаз. Часто оно даже вредно: история учёта теряется, отчёты за прошлые годы меняются.

Альтернативы:

СпособКогда подходитРиски
Оставить пометку без удаленияЭлемент не нужен, но на него ссылаются старые документыПеречёркнутые строки в списках, скрываются отбором
Группа «Архив» или «Не используются» в справочникеСтарые контрагенты, номенклатураНужно не забыть, что группа не участвует в работе
Флажок «Не использовать» или «Недействителен», если он есть в справочникеДоговоры, склады, некоторые виды номенклатурыНе во всех справочниках есть такой реквизит
Свёртка базыОгромная история, база тормозитДолго, нужна проверка остатков, делает специалист
Новая база с переносом остатковПереход на новый учёт с начала годаСтарая база остаётся архивом для справок

Скрыть помеченные объекты из списка просто: в настройках отбора списка (меню Ещё) добавьте условие по полю «Пометка удаления» со значением «Нет». Данные останутся в базе, но мешать не будут.

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

Диагностика: выберите симптом

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

Можно ли восстановить объект после удаления помеченных?
Нет, средствами программы — нет. Объект удалён физически. Вернуть его можно только из резервной копии базы.
Почему после удаления база не стала меньше?
Файловая база не сжимается сама. Размер файла уменьшится после тестирования и исправления с режимом сжатия таблиц. В SQL-базе место освобождает обслуживание средствами СУБД.
Как часто запускать удаление помеченных объектов?
Для небольшой базы хватит раза в месяц или квартал, после закрытия периода. Чем реже, тем дольше идёт проход и тем больше ссылок мешает.
Можно ли удалять помеченные объекты автоматически по расписанию?
В типовых конфигурациях на БСП в форме обработки удаления можно включить регулярное удаление регламентным заданием. Для рабочей базы с закрытыми периодами лучше запускать вручную и смотреть результат.
Удалятся ли проводки удалённого документа?
Да. Проводки и движения удаляются ещё при установке пометки, когда отменяется проведение. Отчёты за этот период пересчитаются.