Администрирование · 9 мин
Как очистить движения документа в 1С
Как очистить движения документа в 1С: через проведение, запросом, обработкой и программно. Пошаговые инструкции, риски, проверка результата и ответы на вопросы.
Движения документа — это записи в регистрах (накопления, сведений, бухгалтерии, расчёта), которые документ формирует при проведении. Иногда их нужно очистить: документ проведён ошибочно, регистры «разъехались» после переноса данных, документ больше не должен влиять на остатки, но удалять его нельзя. Задача решается несколькими способами — от штатной отмены проведения до программной очистки наборов записей.
Выбор способа зависит от ситуации: нужно ли сохранить сам документ, есть ли права на изменение конфигурации, работаете ли вы в пользовательском режиме или с доступом к конфигуратору. Важно понимать, что очистка движений меняет отчётность и остатки, поэтому перед любыми действиями в рабочей базе делайте резервную копию или проверяйте операцию на копии базы.
Что такое движения документа и когда их очищают
При проведении документ создаёт записи в одном или нескольких регистрах: остатки товаров, взаиморасчёты, проводки по бухгалтерскому учёту, начисления. Эти записи называют движениями. Посмотреть их можно из формы документа через кнопку «Ещё» → «Движения документа» или через панель навигации по регистрам.
Типовые ситуации, когда требуется очистка движений:
- документ проведён по ошибке и искажает остатки или взаиморасчёты;
- после обмена или переноса данных появились «зависшие» записи в регистрах;
- документ помечен на удаление, но по какой-то причине движения остались;
- нужно обнулить влияние документа на учёт, не удаляя его из базы (например, для сохранения истории или печатной формы);
- при доработке конфигурации требуется перепровести документ «с нуля».
Способ 1. Отмена проведения — штатный и безопасный
Самый правильный способ убрать движения — отменить проведение документа. Платформа автоматически удаляет все записи документа из регистров, при этом сохраняется целостность учёта: последовательности и итоги пересчитываются штатно.
Для этого откройте документ и нажмите кнопку «Отменить проведение» (или снимите пометку проведения в списке документов через контекстное меню). Если документ находится в закрытом периоде, потребуются права на изменение данных прошлых периодов либо временное снятие даты запрета редактирования.
После отмены проведения документ остаётся в базе, его можно исправить и провести заново. Это единственный способ, который гарантирует, что регистры не останутся в рассогласованном состоянии.
Способ 2. Очистка движений без отмены проведения
Иногда документ должен остаться проведённым (например, он нужен для печати или синхронизации), но его записи в регистрах требуется удалить. Штатной кнопки для этого нет — задача решается программно или обработкой.
Логика такая: для каждого регистра, по которому документ делает движения, получается набор записей с отбором по регистратору, набор очищается и записывается пустым. После этого документ формально проведён, но в отчётах по регистрам его записей нет.
Для Каждого Регистр Из ДокументСсылка.Метаданные().Движения Цикл
НаборЗаписей = Регистры[Регистр.Имя].СоздатьНаборЗаписей();
НаборЗаписей.Отбор.Регистратор.Установить(ДокументСсылка);
НаборЗаписей.Прочитать();
НаборЗаписей.Очистить();
НаборЗаписей.Записать(Истина);
КонецЦикла;Обратите внимание: состав регистров у документа берётся из метаданных, а для бухгалтерских, накопления, сведений и расчёта используются разные менеджеры регистров. Универсальный вариант — перебирать коллекцию Движения у объекта документа, что корректно работает для всех видов регистров.
Способ 3. Очистка через консоль запросов и обработки
Если нужно найти и очистить «потерянные» движения массово — например, записи по помеченным на удаление документам, — удобнее использовать запрос. Сначала выберите регистраторов, у которых есть записи в регистре, затем по списку очистите наборы записей.
Для разовых операций подойдут типовые и сторонние обработки: «Удаление движений документов», «Групповая обработка справочников и документов» (в конфигурациях на БСП), консоль кода. Они позволяют выполнить произвольный код над отобранными документами без изменения конфигурации.
- 1Сделайте резервную копию базы или работайте на копии
- 2Запросом найдите документы с нежелательными движениями в конкретном регистре
- 3Проверьте выборку глазами по отчёту — не захвачены ли лишние документы
- 4Выполните программную очистку наборов записей по списку регистраторов
- 5Сформируйте отчёт по регистру и убедитесь, что записи исчезли
- 6Проверьте связанные отчёты: остатки, взаиморасчёты, оборотно-сальдовую ведомость
Как проверить результат очистки
Признак успешной очистки — отсутствие записей документа во всех регистрах, где он раньше делал движения. Откройте документ, перейдите в «Движения документа»: списки должны быть пустыми (при программной очистке без отмены проведения форма может показывать движения некорректно до обновления, надёжнее проверять отчётом).
Дополнительно сформируйте отчёты по затронутым регистрам: универсальный отчёт, «Остатки товаров», оборотно-сальдовую ведомость. Сверьте итоги до и после операции — изменения должны соответствовать именно удалённым движениям, без посторонних сдвигов.
Как проверить результат
Списки записей по всем регистрам пустые
Записи остались — очистка не выполнена или не по всем регистрам
Документ не фигурирует в оборотах
Документ виден в оборотах — записи не удалены
Итоги изменились ровно на сумму удалённых движений
Остатки ушли в минус или изменились непредсказуемо
Риски и ограничения
Очистка движений без отмены проведения нарушает внутреннюю логику учёта: документ «проведён», но не влияет на регистры. При следующем перепроведении (например, при восстановлении последовательностей или групповом перепроведении) движения будут созданы заново — данные «всплывут» обратно. Учитывайте это, если операция носит временный характер.
Другие риски: изменение закрытых периодов, расхождение данных с налоговой и бухгалтерской отчётностью, рассинхронизация при обменах. Если документ уже вошёл в сданную отчётность, корректировать его следует сторнирующими документами, а не механической очисткой движений.
Типичные ошибки при очистке движений
Отдельная частая проблема — попытка очистить движения у документа, который является регистратором в регистрах с подчинением, забыв про механизм проведения самого документа. Если в модуле проведения стоит автоматическое формирование движений, любое перепроведение вернёт записи на место.
Как выбрать подходящий способ
Как выбрать действие
В большинстве повседневных случаев достаточно отмены проведения. Программные методы оставьте для ситуаций, где штатный механизм неприменим: обмены, переносы данных, восстановление после сбоев, технологические операции при обновлении конфигурации.
Что важно запомнить
Безопасный путь — отмена проведения. Программная очистка наборов записей нужна, когда документ должен остаться проведённым или движения «зависли». Работайте на копии, очищайте все регистры документа, проверяйте результат отчётами и помните, что перепроведение вернёт движения обратно.
Частые вопросы
Можно ли очистить движения без прав администратора?
Отмена проведения доступна любому пользователю, у которого есть права на интерактивное изменение документа и период не закрыт датой запрета. Программная очистка и запуск обработок обычно требуют прав администратора или разработчика.
Почему после очистки движения появились снова?
Скорее всего, документ был перепроведён — вручную, при восстановлении последовательности, при групповом перепроведении или при обмене. При проведении модуль документа формирует движения заново. Чтобы этого избежать, отменяйте проведение, а не только чистите записи.
Как очистить движения у помеченного на удаление документа?
При пометке на удаление платформа обычно отменяет проведение автоматически, и записи исчезают. Если записи остались (например, из-за сбоя), снимите пометку, отмените проведение и пометьте снова — либо очистите наборы записей программно по ссылке регистратора.
Чем отличается очистка движений от удаления документа?
При удалении документа исчезает сам объект и все его записи. При очистке движений документ остаётся в базе, виден в журналах и доступен для печати, но не влияет на регистры. Это полезно, когда документ нужен для истории или синхронизации.
Влияет ли очистка движений на обмен данными?
Да. Изменение наборов записей регистрируется в планах обмена (если регистрация включена) и передаётся в другие узлы. Если очистка выполнена только в одной базе, в корреспондирующей базе движения останутся, что приведёт к расхождениям. Согласуйте операцию на всех узлах.
Как найти все регистры, по которым документ делает движения?
Откройте документ и перейдите в «Движения документа» — там перечислены все задействованные регистры. Программно список получают через свойство Движения объекта документа или через метаданные: ДокументСсылка.Метаданные().Движения.