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

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

Как удалить движения удалённого документа в 1С

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

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

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

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

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

Главный признак — в отчётах и оборотно-сальдовых ведомостях появляются строки с регистратором вида «Объект не найден» или с длинным шестнадцатеричным кодом вместо номера документа. При двойном щелчке по такой строке 1С выдаёт ошибку, потому что документа физически нет в базе.

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

Регистратор «Объект не найден»Документ удалён, движения остались

Откройте регистр и посмотрите колонку «Регистратор»

Остатки не сходятсяВозможны осиротевшие записи

Сравните отчёт с оборотами по живым документам

Ошибка при расчёте итоговПовреждение или мусор в итогах

Запустите пересчёт итогов в тестировании и исправлении

Подготовка: резервная копия и права доступа

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

Для работы понадобятся полные права или права администратора. В файловой базе на время тестирования и исправления все пользователи должны выйти — режим требует монопольного доступа. Заранее предупредите коллег и запланируйте окно для работ.

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

Самый безопасный типовой инструмент — «Тестирование и исправление» в конфигураторе («Администрирование» → «Тестирование и исправление»). Отметьте пункт «Проверка ссылочной целостности информационной базы» и выберите режим «Тестирование и исправление». Система найдёт записи регистров, ссылающиеся на несуществующие объекты.

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

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

Способ 2: типовые обработки и функции конфигурации

Во многих конфигурациях на базе БСП (УТ, ERP, Бухгалтерия, ЗУП) есть раздел «Администрирование» → «Обслуживание» с инструментами корректировки данных. Также распространена универсальная обработка «Поиск и удаление битых ссылок» — её варианты доступны в составе типовых поставок и на диске ИТС.

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

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

Способ 3: программное удаление через набор записей

Когда битые движения нужно удалить точечно — по одному регистру или по конкретному регистратору — удобнее написать небольшой код в консоли кода или через внешнюю обработку. Суть метода: создать набор записей регистра, установить отбор по регистратору (битой ссылке) и записать пустой набор с замещением.

Получить битую ссылку можно из отчёта по регистру: скопируйте значение регистратора из строки с «Объект не найден». Далее набор записей с отбором по этой ссылке очищается стандартным способом платформы.

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

Аналогичный подход работает для регистров бухгалтерии, сведений и расчёта — меняется только объект метаданных. Для массовой очистки можно перебрать регистраторы запросом: выбрать записи регистра, где регистратор не существует (проверка через левое соединение с таблицей документа или функцию ЕСТЬNULL), и в цикле очистить наборы записей.

Способ 4: прямой запрос для поиска проблемных записей

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

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

Сравнение способов

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

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

Обработка битых ссылок

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

Программное удаление

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

Проверка результата и пересчёт итогов

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

Затем сверьте ключевые отчёты: оборотно-сальдовую ведомость, складские остатки, взаиморасчёты. Значения должны измениться ровно на суммы удалённых записей — вы их зафиксировали до очистки. Если цифры разошлись сильнее, значит, удалили лишнее, и базу проще восстановить из копии и повторить операцию аккуратнее.

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

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

Отчёт по регистру с группировкой по регистратору
Норма

Строк «Объект не найден» нет

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

Битые ссылки остались — повторите поиск

Остатки до и после
Норма

Изменились точно на сумму удалённых записей

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

Разница больше — удалено лишнее, восстановите копию

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

Пустой результат

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

Записи находятся — есть движения в других регистрах

Типичные ошибки и ограничения

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

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

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

FAQ: частые вопросы

Можно ли восстановить документ по оставшимся движениям?

Частично. По записям регистров видно дату, суммы, номенклатуру и контрагентов, поэтому документ можно создать заново вручную и заполнить по данным движений. Автоматического восстановления штатными средствами нет — проще ориентироваться на выгруженные до удаления данные.

Удалятся ли движения при пометке документа на удаление?

Да. При установке пометки на удаление платформа автоматически очищает движения документа (отменяет проведение). Отдельно удалять записи регистров в этом случае не нужно — проблема возникает только при физическом удалении объекта в обход штатного механизма.

Почему тестирование и исправление не удалило битые движения?

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

Опасно ли удалять движения в закрытом периоде?

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

Как найти битые движения сразу по всем регистрам?

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

Нужен ли монопольный режим для программного удаления?

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

Итог

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

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