К статье
Практический материал

Администрирование · 11 мин

Как удалить битый документ в 1С

Как удалить битый документ в 1С: пометка на удаление, контроль ссылок, исправление через конфигуратор, тестирование и исправление ИБ. Безопасные методы и FAQ.

Битый документ в 1С — это объект, который невозможно открыть, провести или удалить штатными средствами: программа выдаёт ошибку «Объект не найден», «Ошибка формата потока» или зависает при обращении к записи. Такие повреждения возникают при аварийном завершении работы, сбоях сервера СУБД, разрыве сети во время записи или некорректном обмене данными. Удалить битый документ можно, но важно сначала понять характер повреждения — от этого зависит безопасный способ.

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

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

Как понять, что документ действительно битый

Прежде чем удалять объект, убедитесь, что проблема именно в нём, а не в правах доступа или настройках программы. Характерный признак — ошибка при попытке открыть документ из списка: «Ошибка формата потока», «Объект не найден», «Поле объекта не обнаружено» или зависание формы. Иногда документ виден в списке, но при проведении возвращает ошибку обращения к табличной части.

Другой сценарий — «битая ссылка»: в списке вместо данных документа отображается надпись вида «<Объект не найден> (123:abc...)». Это означает, что сам объект уже удалён, но ссылки на него остались. В этом случае удалять нечего — нужно очищать ссылки на несуществующий объект.

Ошибка формата потокаПовреждены данные объекта

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

Объект не найденЗапись удалена, ссылки остались

Ищите битые ссылки через контроль ссылочной целостности

Ошибка при проведенииПовреждены движения документа

Проверьте регистры, по которым документ делает движения

Программа зависаетВозможно повреждение таблицы БД

Потребуется тестирование и исправление информационной базы

Подготовка: резервная копия и монопольный доступ

Первое и обязательное действие — создать резервную копию базы. Для файловой базы достаточно скопировать файл 1Cv8.1CD при закрытой программе или выполнить выгрузку через «Администрирование → Выгрузить информационную базу». Для клиент-серверной базы выгрузку делают через консоль кластера или средствами СУБД (MS SQL, PostgreSQL).

Большинство операций по удалению и исправлению требуют монопольного доступа: все пользователи должны выйти из программы, а фоновые задания — завершиться. Проверьте активные сеансы через «Администрирование → Обслуживание → Активные пользователи» или через консоль сервера 1С.

Способ 1: штатная пометка на удаление

Если документ открывается или хотя бы выделяется в списке без ошибки, начните со штатного механизма. Выделите документ в журнале и нажмите клавишу Delete или кнопку «Пометить на удаление» (значок с крестиком). Если документ проведён, программа предложит отменить проведение — согласитесь.

Затем перейдите в «Администрирование → Обслуживание → Удаление помеченных объектов» (в некоторых конфигурациях путь: «Операции → Удаление помеченных объектов»). Запустите удаление: программа проверит, нет ли ссылок на документ в других объектах. Если ссылки есть, удаление будет заблокировано и вы увидите список мест использования.

Это самый безопасный способ: механизм контроля ссылочной целостности не даст создать битые ссылки. Если удаление прошло успешно, документ физически удалён из базы, и задача решена.

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

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

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

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

bsl
ДокументСсылка = Документы.РеализацияТоваровУслуг.ПолучитьСсылку(Новый УникальныйИдентификатор("..."));
ДокументОбъект = ДокументСсылка.ПолучитьОбъект();
ДокументОбъект.УстановитьПометкуУдаления(Истина);

Если и это не помогает из-за повреждения данных объекта, остаётся вариант непосредственного удаления без контроля ссылок — методом Удалить() у объекта. Это крайняя мера: программа не проверит, где ещё используется документ, и битые ссылки придётся вычищать отдельно.

Способ 3: тестирование и исправление информационной базы

Если документ повреждён на уровне таблицы базы данных — программа падает при обращении к журналу, ошибка повторяется у всех пользователей, — поможет штатная утилита «Тестирование и исправление». Она запускается из конфигуратора: «Администрирование → Тестирование и исправление».

В настройках отметьте пункты «Реиндексация таблиц», «Проверка ссылочной целостности» и «Проверка логической целостности». Для повреждённых объектов, которые невозможно восстановить, утилита предложит варианты: создать заглушку объекта, удалить объект или очистить ссылки. Выбирайте удаление только если уверены, что документ не нужен.

Процедура может занять продолжительное время на больших базах и выполняется строго в монопольном режиме. Для файловых баз дополнительно можно запустить проверку утилитой chdbfl.exe из каталога установки платформы — она проверяет физическую целостность файла базы.

Что делать с битыми ссылками после удаления

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

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

Контрольные точки

Как проверить результат

Журнал документов
Норма

Документ отсутствует, список открывается без ошибок

Тревожный признак

Ошибка формата потока при прокрутке списка

Связанные документы
Норма

Открываются и проводятся штатно

Тревожный признак

Ошибка «Объект не найден» в реквизитах

Отчёты по регистрам
Норма

Суммы и обороты корректны

Тревожный признак

Расхождения с данными до удаления

Тестирование и исправление
Норма

Проверка завершается без ошибок

Тревожный признак

Утилита снова находит повреждённые объекты

Частые ошибки при удалении битых документов

Самая распространённая ошибка — попытка удалить документ напрямую из таблиц SQL-сервера запросом DELETE. Это нарушает внутреннюю структуру данных 1С: движения по регистрам, последовательности и итоги остаются, а платформа начинает вести себя непредсказуемо. Прямая работа с таблицами СУБД в обход платформы недопустима.

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

Типичные ошибки
01
Удаление напрямую из таблиц SQL — разрушает целостность регистров и итогов
02
Непосредственное удаление без контроля ссылок — появляются «Объект не найден» в связанных документах
03
Работа без резервной копии — откатить ошибочное удаление невозможно
04
Запуск тестирования и исправления без монопольного режима — процедура прерывается или повреждает данные
05
Игнорирование массовых ошибок — удаление одного документа не лечит повреждённую базу

Как выбрать подходящий способ

Маршрут решения

Как выбрать действие

Документ открывается и помечается на удалениеИспользуйте штатное удаление помеченных объектов с контролем ссылок
Документ в списке виден, но не открываетсяПометьте его на удаление через обработку или код, затем удалите помеченные
Вместо документа надпись «Объект не найден»Удалять нечего — очищайте битые ссылки через тестирование и исправление
Ошибки появляются массово в разных объектахПроверяйте физическую целостность базы (chdbfl, ТиИ), а не удаляйте документы
Ничего не помогаетВосстановите документ из резервной копии или обратитесь к специалисту по 1С

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

Итог

Что важно запомнить

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

Часто задаваемые вопросы

Можно ли удалить битый документ без монопольного режима?

Пометку на удаление иногда удаётся установить при работающих пользователях, но «Удаление помеченных объектов» и «Тестирование и исправление» требуют монопольного доступа. Попытка обойти это требование приводит к блокировкам и риску новых повреждений.

Что делать, если после удаления документа в отчётах появились расхождения?

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

Документ помечен на удаление, но не удаляется из-за ссылок. Как быть?

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

Чем отличается chdbfl от тестирования и исправления в конфигураторе?

Chdbfl проверяет физическую структуру файла базы (только для файловых баз) и исправляет повреждения страниц данных. Тестирование и исправление работает на уровне логики 1С: ссылки, итоги, последовательности. При серьёзных повреждениях файловой базы сначала запускают chdbfl, затем ТиИ.

Можно ли восстановить удалённый битый документ?

Штатной корзины в 1С нет: физически удалённый документ восстанавливается только из резервной копии. Если копии нет, данные придётся вносить заново вручную — это ещё одна причина всегда делать копию перед удалением.

Битый документ мешает обмену данными. Что делать?

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