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

Разработка и Конфигурация · 11 мин

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Действия: откройте документ, установите флажок «Ручная корректировка» (обычно доступен через «Ещё» или непосредственно в форме), перейдите на вкладку с движениями по нужному регистру, выделите все строки (Ctrl+A) и удалите их (Delete). Повторите для каждого регистра, затем запишите документ.

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

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

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

ДокОбъект = ДокументСсылка.ПолучитьОбъект();

Для Каждого Набор Из ДокОбъект.Движения Цикл

Набор.Очистить();

Набор.Записать();

КонецЦикла;

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

Набор = РегистрыНакопления.ТоварыНаСкладах.СоздатьНаборЗаписей();

Набор.Отбор.Регистратор.Установить(ДокументСсылка);

Набор.Записать(); // записывает пустой набор — старые записи удаляются

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

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

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

Способ 4. Групповое перепроведение и типовые обработки

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

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

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

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

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

Штатно и безопасно; ограничения — дата запрета, последовательности, права

Ручная корректировка

Подходит для 1–2 документов; трудоёмко и легко пропустить регистр

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

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

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

Штатная массовая обработка; не подходит, если нужно оставить документ проведённым

Риски и когда очищать движения нельзя

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

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

Перед любой массовой операцией сделайте выгрузку информационной базы (для файловой — копию файла 1Cv8.1CD, для клиент-серверной — бэкап средствами СУБД или выгрузку в dt). Проверяйте результат сначала на копии базы.

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

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

Программная проверка выполняется запросом: выбрать записи регистра с условием «Регистратор = &Ссылка». Если запрос возвращает пустой результат по всем регистрам из метаданных документа — очистка завершена корректно.

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

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

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

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

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

В одном из регистров остались строки — регистр пропущен

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

Записей нет, остатки изменились

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

Обороты документа по-прежнему видны

Запрос по регистратору
Норма

Пустой результат по всем регистрам

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

Есть строки — очистка неполная

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

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

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

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

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

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

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

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

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

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

Что делать, если движения остались от удалённого документа?

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

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

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

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

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

Итог

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

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