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

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

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

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

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

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

Ниже разобраны штатные способы (отмена проведения, запрет проведения), программная очистка через набор записей, типовые обработки и контроль результата. Материал ориентирован на платформу 1С:Предприятие 8.3, но подходит и для 8.2.

Подготовка: резервная копия и анализ регистров документа

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

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

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

Способ 1. Отмена проведения документа

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

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

Порядок действий при отмене проведения
  1. 1
    Сделайте резервную копию базы
  2. 2
    Откройте документ и запомните список регистров движений
  3. 3
    Выполните «Ещё → Отменить проведения»
  4. 4
    Откройте «Движения документа» и убедитесь, что список пуст
  5. 5
    Проверьте отчёты по затронутым регистрам на предмет изменений

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

Способ 2. Запрет проведения через свойства регистра

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

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

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

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

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

Ключевые моменты кода. Отбор устанавливается строго по регистратору — без него метод Записать() попытается очистить весь регистр, что для большинства регистров платформа запретит, но для регистров сведений без регистратора это реальная опасность. Параметр Истина в Записать() означает замещение существующих записей.

Для регистров бухгалтерии и расчёта синтаксис аналогичен: РегистрыБухгалтерии.Хозрасчетный.СоздатьНаборЗаписей() или РегистрыРасчета.Начисления.СоздатьНаборЗаписей(). Для подчинённых регистров сведений — РегистрыСведений.ИмяРегистра.СоздатьНаборЗаписей() с отбором по регистратору.

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

Способ 4. Типовые и универсальные обработки

В конфигурациях на Библиотеке стандартных подсистем есть обработка «Групповое изменение реквизитов» и «Проведение документов» (Администрирование → Обслуживание → Корректировка данных), позволяющие пакетно отменить проведение по отбору. Это удобно, когда очищать нужно сотни документов за период.

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

Сравнение способов очистки

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

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

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

Быстро очищает движения; документ остаётся помеченным, при восстановлении нужно перепроводить

Программная очистка набора записей

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

Снятие регистра в конфигураторе

Убирает движения всех документов вида; только для отказа от регистра целиком

Проверка результата и согласованность данных

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

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

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

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

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

Список регистров пуст или не содержит очищенный регистр

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

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

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

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

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

Итоги не изменились или изменились сильнее — затронуты лишние записи

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

Документ непроведённый либо осознанно проведён без движений

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

Документ проведён, движений нет, и это не планировалось

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

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

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

Ещё одна граница самостоятельной работы — регистры с периодическими итогами и большими таблицами. Массовая очистка движений за длительный период в клиент-серверной базе может вызвать блокировки и длительные транзакции; такие операции выполняют в нерабочее время порциями по периодам.

Итог

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

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

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

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

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

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

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

Что делать, если кнопка «Отменить проведение» недоступна?

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

Удалятся ли движения при пометке документа на удаление?

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

Как восстановить ошибочно очищенные движения?

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

Опасно ли очищать движения в клиент-серверной базе?

Сама операция безопасна при корректном отборе по регистратору, но массовая очистка создаёт длинные транзакции и блокировки, заметные другим пользователям. Выполняйте её пакетами в нерабочее время и обязательно после создания резервной копии средствами СУБД или выгрузки dt.