Администрирование · 11 мин
Как удалить битый документ в 1С
Как удалить битый документ в 1С: пометка на удаление, контроль ссылок, исправление через конфигуратор, тестирование и исправление ИБ. Безопасные методы и FAQ.
Битый документ в 1С — это объект, который невозможно открыть, провести или удалить штатными средствами: программа выдаёт ошибку «Объект не найден», «Ошибка формата потока» или зависает при обращении к записи. Такие повреждения возникают при аварийном завершении работы, сбоях сервера СУБД, разрыве сети во время записи или некорректном обмене данными. Удалить битый документ можно, но важно сначала понять характер повреждения — от этого зависит безопасный способ.
Существует несколько рабочих подходов: штатная пометка на удаление с последующим контролем ссылочной целостности, удаление через внешнюю обработку, исправление через конфигуратор и инструмент «Тестирование и исправление» информационной базы. Выбор метода зависит от того, открывается ли документ, есть ли на него ссылки и повреждена ли сама таблица базы данных.
Любые действия с повреждёнными объектами выполняйте только после создания резервной копии. Прямое удаление записей без проверки ссылок приводит к появлению «битых ссылок» в других документах, отчётах и регистрах, что усугубляет проблему вместо её решения.
Как понять, что документ действительно битый
Прежде чем удалять объект, убедитесь, что проблема именно в нём, а не в правах доступа или настройках программы. Характерный признак — ошибка при попытке открыть документ из списка: «Ошибка формата потока», «Объект не найден», «Поле объекта не обнаружено» или зависание формы. Иногда документ виден в списке, но при проведении возвращает ошибку обращения к табличной части.
Другой сценарий — «битая ссылка»: в списке вместо данных документа отображается надпись вида «<Объект не найден> (123:abc...)». Это означает, что сам объект уже удалён, но ссылки на него остались. В этом случае удалять нечего — нужно очищать ссылки на несуществующий объект.
Попробуйте открыть документ в конфигураторе через поиск по ссылке
Ищите битые ссылки через контроль ссылочной целостности
Проверьте регистры, по которым документ делает движения
Потребуется тестирование и исправление информационной базы
Подготовка: резервная копия и монопольный доступ
Первое и обязательное действие — создать резервную копию базы. Для файловой базы достаточно скопировать файл 1Cv8.1CD при закрытой программе или выполнить выгрузку через «Администрирование → Выгрузить информационную базу». Для клиент-серверной базы выгрузку делают через консоль кластера или средствами СУБД (MS SQL, PostgreSQL).
Большинство операций по удалению и исправлению требуют монопольного доступа: все пользователи должны выйти из программы, а фоновые задания — завершиться. Проверьте активные сеансы через «Администрирование → Обслуживание → Активные пользователи» или через консоль сервера 1С.
Способ 1: штатная пометка на удаление
Если документ открывается или хотя бы выделяется в списке без ошибки, начните со штатного механизма. Выделите документ в журнале и нажмите клавишу Delete или кнопку «Пометить на удаление» (значок с крестиком). Если документ проведён, программа предложит отменить проведение — согласитесь.
Затем перейдите в «Администрирование → Обслуживание → Удаление помеченных объектов» (в некоторых конфигурациях путь: «Операции → Удаление помеченных объектов»). Запустите удаление: программа проверит, нет ли ссылок на документ в других объектах. Если ссылки есть, удаление будет заблокировано и вы увидите список мест использования.
Это самый безопасный способ: механизм контроля ссылочной целостности не даст создать битые ссылки. Если удаление прошло успешно, документ физически удалён из базы, и задача решена.
- 1Сделайте резервную копию базы
- 2Завершите работу других пользователей (монопольный режим)
- 3Пометьте документ на удаление в журнале
- 4Откройте «Администрирование → Удаление помеченных объектов»
- 5Запустите контроль и удаление
- 6Проверьте список мест использования, если удаление заблокировано
- 7Убедитесь, что документ исчез из журнала и отчётов
Способ 2: удаление через обработку, если документ не открывается
Когда документ выдаёт ошибку при открытии, но виден в списке, пометка на удаление из интерфейса может не сработать. В этом случае используют универсальные обработки удаления объектов, которые работают напрямую с ссылкой, минуя открытие формы документа.
Логика такой обработки проста: получить ссылку на объект, установить пометку удаления программно и вызвать процедуру удаления помеченных. Аналогичный код можно выполнить и через встроенный язык в конфигураторе, если у вас есть права разработчика:
ДокументСсылка = Документы.РеализацияТоваровУслуг.ПолучитьСсылку(Новый УникальныйИдентификатор("..."));
ДокументОбъект = ДокументСсылка.ПолучитьОбъект();
ДокументОбъект.УстановитьПометкуУдаления(Истина);Если и это не помогает из-за повреждения данных объекта, остаётся вариант непосредственного удаления без контроля ссылок — методом Удалить() у объекта. Это крайняя мера: программа не проверит, где ещё используется документ, и битые ссылки придётся вычищать отдельно.
Способ 3: тестирование и исправление информационной базы
Если документ повреждён на уровне таблицы базы данных — программа падает при обращении к журналу, ошибка повторяется у всех пользователей, — поможет штатная утилита «Тестирование и исправление». Она запускается из конфигуратора: «Администрирование → Тестирование и исправление».
В настройках отметьте пункты «Реиндексация таблиц», «Проверка ссылочной целостности» и «Проверка логической целостности». Для повреждённых объектов, которые невозможно восстановить, утилита предложит варианты: создать заглушку объекта, удалить объект или очистить ссылки. Выбирайте удаление только если уверены, что документ не нужен.
Процедура может занять продолжительное время на больших базах и выполняется строго в монопольном режиме. Для файловых баз дополнительно можно запустить проверку утилитой chdbfl.exe из каталога установки платформы — она проверяет физическую целостность файла базы.
Что делать с битыми ссылками после удаления
Если документ уже удалён некорректно (напрямую из таблиц или через непосредственное удаление), в базе остаются ссылки вида «Объект не найден». Они мешают проведению связанных документов, искажают отчёты и выдают ошибки при обмене данными.
Найти такие ссылки можно через тот же «Удаление помеченных объектов» (он показывает места использования), через отчёт «Поиск ссылок на объекты» либо через тестирование и исправление с включённой проверкой ссылочной целостности. Для каждого найденного места решите: очистить ссылку, заменить её на корректный документ или восстановить удалённый объект из копии.
Как проверить результат
Документ отсутствует, список открывается без ошибок
Ошибка формата потока при прокрутке списка
Открываются и проводятся штатно
Ошибка «Объект не найден» в реквизитах
Суммы и обороты корректны
Расхождения с данными до удаления
Проверка завершается без ошибок
Утилита снова находит повреждённые объекты
Частые ошибки при удалении битых документов
Самая распространённая ошибка — попытка удалить документ напрямую из таблиц SQL-сервера запросом DELETE. Это нарушает внутреннюю структуру данных 1С: движения по регистрам, последовательности и итоги остаются, а платформа начинает вести себя непредсказуемо. Прямая работа с таблицами СУБД в обход платформы недопустима.
Вторая ошибка — удаление без резервной копии «на живой» базе в рабочее время. Параллельная работа пользователей при удалении может привести к блокировкам и новым повреждениям. Третья — игнорирование списка мест использования: пользователь принудительно удаляет объект, а потом неделями разбирается с битыми ссылками в десятках документов.
Как выбрать подходящий способ
Как выбрать действие
При сомнениях двигайтесь от менее разрушительных методов к более радикальным: сначала штатная пометка, затем программное удаление, затем тестирование и исправление. Восстановление из копии — всегда предпочтительнее, чем принудительное удаление с последующей ручной чисткой.
Что важно запомнить
Битый документ удаляется штатной пометкой с контролем ссылок, программным способом или через тестирование и исправление — в зависимости от характера повреждения. Всегда начинайте с резервной копии и монопольного режима, никогда не удаляйте записи напрямую из таблиц СУБД и обязательно проверяйте базу на битые ссылки после удаления.
Часто задаваемые вопросы
Можно ли удалить битый документ без монопольного режима?
Пометку на удаление иногда удаётся установить при работающих пользователях, но «Удаление помеченных объектов» и «Тестирование и исправление» требуют монопольного доступа. Попытка обойти это требование приводит к блокировкам и риску новых повреждений.
Что делать, если после удаления документа в отчётах появились расхождения?
Документ мог делать движения по регистрам, которые удалились вместе с ним. Сравните отчёты с данными резервной копии, проверьте связанные документы и при необходимости перепроведите документы за затронутый период. Если расхождения критичны — восстановите базу из копии и повторите удаление корректно.
Документ помечен на удаление, но не удаляется из-за ссылок. Как быть?
Откройте список мест использования в окне удаления помеченных объектов. Для каждого объекта решите: очистить реквизит со ссылкой, заменить документ на корректный или тоже удалить. Только после разбора всех ссылок удаление станет возможным.
Чем отличается chdbfl от тестирования и исправления в конфигураторе?
Chdbfl проверяет физическую структуру файла базы (только для файловых баз) и исправляет повреждения страниц данных. Тестирование и исправление работает на уровне логики 1С: ссылки, итоги, последовательности. При серьёзных повреждениях файловой базы сначала запускают chdbfl, затем ТиИ.
Можно ли восстановить удалённый битый документ?
Штатной корзины в 1С нет: физически удалённый документ восстанавливается только из резервной копии. Если копии нет, данные придётся вносить заново вручную — это ещё одна причина всегда делать копию перед удалением.
Битый документ мешает обмену данными. Что делать?
Зарегистрированный к обмену повреждённый объект вызывает ошибку выгрузки. Снимите регистрацию изменений для этого объекта в узле обмена, затем удалите документ одним из описанных способов и повторите обмен. Если ошибка сохраняется — проверьте базу на битые ссылки в связанных объектах.