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

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

Как очистить записи регистра накопления по регистратору в 1С

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

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

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

Как платформа связывает регистратор и движения

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

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

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

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

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

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

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

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

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

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

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

Способ 3: стандартные обработки и групповое перепроведение

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

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

Порядок действий при программной очистке
  1. 1
    Сделайте резервную копию базы или выгрузку в dt
  2. 2
    Найдите ссылку на документ-регистратор и убедитесь, что это именно тот документ
  3. 3
    Откройте консоль кода или создайте внешнюю обработку
  4. 4
    Создайте набор записей нужного регистра и установите отбор по регистратору
  5. 5
    Выполните Записать(Истина) с пустым набором
  6. 6
    Проверьте результат через отчёт или выборку записей по регистратору

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

После очистки откройте любой отчёт, построенный на этом регистре (например, оборотно-сальдовую ведомость или универсальный отчёт), и установите отбор по регистратору. Записей по документу быть не должно. Альтернатива — консоль запросов с простым запросом к таблице регистра с условием ГДЕ Регистратор = &Регистратор: пустой результат подтверждает очистку.

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

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

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

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

Запрос или отчёт с отбором по регистратору возвращает пустой результат

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

Записи остались — отбор в наборе записей не сработал

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

Записи прочих регистраторов на месте, итоги изменились только на сумму удалённых движений

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

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

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

Документ в ожидаемом статусе (не проведён или проведён, по задаче)

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

Документ остался проведён, но движений нет — данные непротиворечивы только если так задумано

Типичные ошибки и риски

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

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

Третья ошибка — работа без резервной копии. Прямая запись в регистр не откатывается штатными средствами, и восстановить удалённые движения можно только перепроведением документа (если он есть и корректен) или из копии базы.

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

Что выбрать в разных ситуациях

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

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

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

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

Итог

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

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

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

Можно ли очистить записи регистра, если документ-регистратор уже удалён?

Да. Записи остаются в таблице регистра со ссылкой на несуществующий объект. Их удаляют либо через тестирование и исправление информационной базы с проверкой ссылочной целостности, либо программно — отбор по «битой» ссылке-регистратору и запись пустого набора с замещением.

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

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

Почему код с Записать(Истина) не удалил записи?

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

Нужно ли пересчитывать итоги после очистки записей?

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

Можно ли восстановить удалённые записи?

Штатной отмены операции нет. Восстановление возможно перепроведением документа-регистратора, если он существует и корректен, либо восстановлением базы из резервной копии. Поэтому перед очисткой копия обязательна.

Заблокирована отмена проведения из-за даты запрета — что делать?

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