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

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

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

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

Движения документа — это записи в регистрах (накопления, сведений, бухгалтерии), которые документ формирует при проведении. Иногда возникает задача удалить эти записи, не удаляя сам документ: например, документ ошибочно создал лишние проводки, нужно временно «заморозить» его влияние на учёт или очистить движения перед повторным проведением после исправления данных.

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

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

Что такое движения документа и когда их нужно удалять

При проведении документ записывает строки в один или несколько регистров: например, «Реализация товаров» делает записи в регистрах остатков товаров, взаиморасчётов и в регистре бухгалтерии. Совокупность этих записей и называется движениями документа. Посмотреть их можно из формы документа по кнопке «Дт/Кт» или через меню «Ещё — Движения документа» (в зависимости от конфигурации).

Типовые ситуации, когда требуется удалить движения:

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

Способ 1. Отмена проведения — штатный и безопасный вариант

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

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

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

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

Способ 2. Программное удаление движений через встроенный язык

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

bsl
ДокументОбъект = ДокументСсылка.ПолучитьОбъект();
Для Каждого Движение Из ДокументОбъект.Движения Цикл
    Движение.Прочитать();
    Движение.Очистить();
    Движение.Записать(Истина);
КонецЦикла;

Метод Записать(Истина) записывает пустой набор с замещением существующих записей — именно это и удаляет движения. Сам документ при этом остаётся проведённым: флаг «Проведен» не меняется, что важно учитывать — в базе появится проведённый документ без движений, и это несоответствие может смутить других пользователей и отчёты.

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

Способ 3. Универсальные обработки и типовые механизмы

Если нет желания писать код, существуют готовые решения. Во многих типовых конфигурациях есть обработка «Групповое перепроведение документов» (раздел «Администрирование» или «Все функции») — она не удаляет движения напрямую, но полноценно очищает и пересоздаёт их, что решает проблему некорректных записей.

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

Ещё один вариант — пометить документ на удаление. При установке пометки удаления платформа предложит отменить проведение, и движения будут удалены. Это подходит, если документ вообще не нужен в учёте.

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

Отмена проведения

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

Программная очистка наборов

Работает в любых условиях, но требует навыков, прав и создаёт рассинхронизацию статуса документа и движений

Пометка на удаление

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

Групповое перепроведение

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

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

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

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

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

Движения документа в форме
Норма

Все наборы записей пусты

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

Остались строки в одном или нескольких регистрах

Отчёт по остаткам (склад, взаиморасчёты)
Норма

Остатки изменились ровно на величину документа

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

Остатки не изменились или изменились дважды

Оборотно-сальдовая ведомость
Норма

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

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

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

Статус документа
Норма

Соответствует задуманному (распроведён или проведён без движений осознанно)

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

Статус неожиданный, документ попал в чужие руки для перепроведения

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

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

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

Отдельно стоит упомянуть обмены данными (РИБ, синхронизация с другими системами). Если движения удалены в одном узле, а документ перепроведён в другом, при обмене возможны конфликты и рассинхронизация остатков между базами. В распределённых системах такие операции согласуют с администратором обмена.

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

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

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

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

Почему после удаления движений они появились снова?

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

Чем отличается удаление движений от пометки документа на удаление?

Пометка на удаление — это предварительный этап физического удаления документа из базы; при ней движения удаляются вместе с отменой проведения. Удаление только движений сохраняет сам документ в списке, его можно перепровести или исправить позже.

Нужны ли права администратора для удаления движений?

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

Как удалить движения у большого количества документов сразу?

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

Нарушит ли удаление движений целостность базы?

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

Итог

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

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