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