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

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

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

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

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

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

Что такое движения документа и когда их очищают

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

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

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

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

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

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

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

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

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

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

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

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

Способ 3. Очистка через консоль запросов и обработки

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

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

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

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

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

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

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

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

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

Списки записей по всем регистрам пустые

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

Записи остались — очистка не выполнена или не по всем регистрам

Отчёт по регистру за период документа
Норма

Документ не фигурирует в оборотах

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

Документ виден в оборотах — записи не удалены

Итоги и остатки
Норма

Итоги изменились ровно на сумму удалённых движений

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

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

Риски и ограничения

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

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

Типичные ошибки при очистке движений

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

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

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

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

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

Документ проведён ошибочно и можно его изменитьОтмените проведение штатно, исправьте и проведите заново
Документ должен остаться проведённым, но не влиять на регистрыОчистите наборы записей программно или обработкой, зафиксировав причину в комментарии документа
Нужно исправить закрытый периодСоздайте сторнирующий или корректировочный документ текущей датой
Движения «зависли» у помеченных на удаление документов массовоИспользуйте запрос по регистру и групповую очистку наборов записей на копии базы

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

Итог

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

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

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

Можно ли очистить движения без прав администратора?

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

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

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

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

При пометке на удаление платформа обычно отменяет проведение автоматически, и записи исчезают. Если записи остались (например, из-за сбоя), снимите пометку, отмените проведение и пометьте снова — либо очистите наборы записей программно по ссылке регистратора.

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

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

Влияет ли очистка движений на обмен данными?

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

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

Откройте документ и перейдите в «Движения документа» — там перечислены все задействованные регистры. Программно список получают через свойство Движения объекта документа или через метаданные: ДокументСсылка.Метаданные().Движения.