Пометка стоит, а документ всё ещё в списке: как окончательно стереть объекты в 1С 8.3

· 9 мин

Содержание

Помеченный объект из базы 1С 8.3 удаляют обработкой Администрирование → Обслуживание → Корректировка данных → Удаление помеченных объектов. Клавиша Del в списке только ставит пометку: документ зачёркивается, но физически остаётся в базе, пока вы не запустите эту обработку.

Так же решается и вопрос, как удалить «удалённые» документы в 1С 8.3, которые висят в журнале красным крестиком. Обработка проверит, не ссылается ли на них что-то живое, сотрёт всё, что можно, и покажет список того, что удалить нельзя, с причиной. Путь одинаковый для Бухгалтерии 3.0, ЗУП 3.1 и УТ 11: все три построены на одной библиотеке стандартных подсистем.

Пометка и удаление: что происходит с документом на самом деле

В 1С два разных действия, и их часто путают.

  • 🏷️ Пометка на удаление (Del или команда в меню Ещё). Объект остаётся в базе, у него просто взводится признак. Проведённый документ при пометке распроводится, его движения по регистрам исчезают. Пометку можно снять тем же Del.
  • 🗑️ Окончательное удаление. Запись стирается из таблиц базы. Вернуть её можно только из резервной копии.

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

Команда «Удалить» напрямую (Shift+Del) в типовых конфигурациях обычно недоступна: на неё нужно право «Интерактивное удаление», которого нет в стандартных ролях. Это защита, а не ошибка настройки.

Как пометить сразу много объектов

Пометку ставят не только по одному документу. В любом списке 8.3 выделите строки с зажатым Ctrl или диапазон через Shift, нажмите Del и подтвердите вопрос. Программа пометит все выделенные объекты разом.

Чтобы выбрать, например, все документы ошибочной загрузки за один день, сначала установите отбор по дате или по автору в списке, затем Ctrl+A в таблице и Del. Перед подтверждением проверьте число выделенных строк: одна лишняя строка — и нужный документ окажется в очереди на удаление.

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

Что подготовить до запуска

  1. Сделайте резервную копию: выгрузку в .dt через Конфигуратор или копию каталога файловой базы. Удаление необратимо, корзины в 1С нет.
  2. Проверьте права. Обработку запускает пользователь с полными правами (роль «Администратор системы» или «Полные права»).
  3. Выберите время. В больших базах проверка ссылок идёт от нескольких минут до часов и нагружает сервер. Лучше вечер или выходной.

Как удалить помеченные документы штатной обработкой

Это основной и самый безопасный способ. Где он находится в разных программах:

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

Если раздела «Обслуживание» не видно, проверьте, что вы вошли под администратором: обычным пользователям он скрыт.

Шаги удаления

  1. Откройте обработку по пути из таблицы.
  2. Выберите режим:
    • Автоматически удалить все отмеченные объекты — программа сама удалит всё, что можно;
    • Выборочное удаление — откроется дерево помеченных объектов по видам (документы, справочники), где можно снять галочки с того, что трогать пока нельзя.
  3. Для выборочного режима проставьте флажки и нажмите кнопку удаления внизу формы.
  4. Дождитесь окончания. Ход виден по индикатору, форму можно не трогать.
  5. Изучите результат. Сверху — сколько объектов удалено, ниже — список неудалённых с указанием, что именно на них ссылается.

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

Если программа просит монопольный режим

В некоторых релизах обработка предлагает перевести базу в монопольный режим. Тогда все остальные пользователи должны выйти из программы, а их незавершённые сеансы придётся закрыть. Предупредите коллег заранее: принудительное завершение сеанса обрывает работу без сохранения. В клиент-серверной базе сеансы смотрят и завершают в консоли администрирования серверов.

Стандартная функция платформы через «Все функции»

Помимо обработки конфигурации, в самой платформе 8.3 есть своя функция удаления. Она нужна, когда конфигурация нетиповая или переписанная и в разделе администрирования обработки нет.

  1. Включите меню: Сервис и настройки → Параметры, флажок Отображать команду «Все функции».
  2. Откройте Все функции → Стандартные → Удаление помеченных объектов.
  3. Нажмите кнопку поиска помеченных объектов, отметьте нужные и запустите контроль и удаление.

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

Почему помеченный объект не удаляется и как убрать ссылки на него

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

Что делать по шагам:

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

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

Цепочки и закрытые периоды

  • 🔗 Цепочка документов. Счёт держит реализацию, реализация держит счёт-фактуру. Помечайте всю цепочку, тогда обработка удалит её за один проход.
  • 📅 Дата запрета изменения. Если документ лежит в закрытом периоде, программа может не дать его удалить. Проверьте дату запрета в Администрирование → Проведение документов и временно сдвиньте её, если вы вправе это делать.
  • 👥 Блокировка. Объект открыт у другого пользователя. Попросите закрыть форму и запустите ещё раз.

Удаление кодом: консоль запросов и внешняя обработка

Сразу о частом заблуждении: язык запросов 1С умеет только читать данные. Командой из консоли запросов ничего удалить нельзя. Консоль полезна как разведка: найти помеченные объекты нужного вида и оценить их число.

Запрос, который покажет все помеченные реализации:

ВЫБРАТЬ
    Реализация.Ссылка,
    Реализация.Дата,
    Реализация.Номер
ИЗ
    Документ.РеализацияТоваровУслуг КАК Реализация
ГДЕ
    Реализация.ПометкаУдаления

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

&НаСервере
Процедура УдалитьПомеченныеРеализацииНаСервере()

    Запрос = Новый Запрос;
    Запрос.Текст =
    "ВЫБРАТЬ Ссылка ИЗ Документ.РеализацияТоваровУслуг ГДЕ ПометкаУдаления";
    Помеченные = Запрос.Выполнить().Выгрузить().ВыгрузитьКолонку("Ссылка");

    Удалено = 0;
    Пропущено = 0;

    Для Каждого Ссылка Из Помеченные Цикл
        Проверка = Новый Массив;
        Проверка.Добавить(Ссылка);
        Связи = НайтиПоСсылкам(Проверка);
        Если Связи.Количество() = 0 Тогда
            Объект = Ссылка.ПолучитьОбъект();
            Объект.Удалить();
            Удалено = Удалено + 1;
        Иначе
            Пропущено = Пропущено + 1;
        КонецЕсли;
    КонецЦикла;

    Сообщить(СтрШаблон("Удалено: %1, пропущено из-за ссылок: %2", Удалено, Пропущено));

КонецПроцедуры

Ключевая строка тут — проверка НайтиПоСсылкам. Метод Удалить() у объекта сам ссылки не проверяет: он сотрёт документ, даже если на него ссылаются другие. Без проверки вы получите битые ссылки.

Есть и глобальный метод платформы УдалитьОбъекты(). Он принимает массив ссылок и умеет контролировать ссылки сам, если передать вторым параметром Истина. Его удобно применять для пакетного удаления, но перед запуском в рабочей базе прогоните код на копии.

Код удаления запускают только на копии базы, сверив результат, и лишь потом в рабочей. Ошибка в условии запроса, например пропущенное ГДЕ ПометкаУдаления, сотрёт непомеченные документы.

Прямое удаление в SQL: почему так делать нельзя

Для клиент-серверной базы иногда советуют удалить строки прямо в СУБД. Это худший способ из всех, и вот почему:

  • ❌ таблицы называются служебными именами вроде _Document123, связи между ними СУБД не контролирует;
  • ❌ табличные части, движения по регистрам, итоги и версии объектов хранятся в отдельных таблицах, и пропустить одну из них легко;
  • ❌ платформа ничего не узнает об удалении: итоги регистров разойдутся с движениями, ссылки станут битыми;
  • ❌ фирма-разработчик не поддерживает базы, данные которых меняли в обход платформы.

Если удалять приходится миллионы записей и обработка не справляется, правильный путь — внешний код через УдалитьОбъекты() порциями по несколько тысяч объектов, ночью, после полной копии.

Как починить последствия удаления без проверки

Если объекты уже стерли в обход контроля и в документах появилось <Объект не найден>, запустите проверку базы:

  1. Сделайте копию базы .
  2. Попросите всех выйти: проверке нужен монопольный доступ.
  3. В Конфигураторе откройте Администрирование → Тестирование и исправление.
  4. Отметьте проверку ссылочной целостности и выберите действие для битых ссылок: «Создавать объекты» (появятся пустые заглушки, их можно заполнить) или «Очищать ссылки».
  5. Запустите и дождитесь окончания.

«Создавать объекты» безопаснее: вы увидите, где были ссылки, и решите вручную, что с ними делать.

Внешние обработки, расширения и удаление по расписанию

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

  • разово — через Файл → Открыть (если это разрешено настройками безопасности);
  • постоянно — через Администрирование → Печатные формы, отчеты и обработки → Дополнительные отчеты и обработки.

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

Расширение конфигурации нужно, если доработка удаления должна жить в базе постоянно и переживать обновления: например, своя команда «Удалить помеченные за период». Писать его — работа программиста.

Регламентное удаление

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

Перед удалением помеченных объектов
Выполнено: 0 / 5

Ошибки при удалении и что с ними делать

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

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

Можно ли восстановить объект после окончательного удаления?
Только из резервной копии. Удобно развернуть копию рядом, выгрузить из неё нужный объект через универсальный обмен и загрузить в рабочую базу.
Почему помеченные объекты занимают место?
Помеченный документ — полноценная запись базы с табличными частями. Пока его не удалили, он участвует в поиске и в размере файла базы.
Как часто удалять помеченные объекты?
Обычно раз в месяц-квартал, после закрытия периода и свежей копии. Ежедневная чистка не нужна.
Уменьшится ли файл базы после удаления?
В файловой базе размер 1Cv8.1CD сам не уменьшится. Сожмите базу через «Тестирование и исправление» с флажком сжатия таблиц.
Удалит ли обработка пометки других пользователей?
Да, она работает со всеми помеченными объектами базы, кто бы их ни пометил. В выборочном режиме можно снять лишнее.