Как очистить регистры 1С 8.3: от отмены проведения до набора записей

· 9 мин

Содержание

Чистить регистр в 1С 8.3 правильнее не «насквозь», а через документ-регистратор: отмените проведение — и движения этого документа из регистра уйдут. Записи в регистры накопления и бухгалтерии почти всегда создаются при проведении, поэтому прямое удаление строк рвёт связь с документом и ломает итоги.

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

Ниже — когда очистка вообще нужна, чем это грозит и как сделать её так, чтобы остатки и отчёты остались верными.

Когда регистр нужно чистить, а когда проблема не в нём

Прежде чем чистить, убедитесь, что причина в самом регистре, а не в документах. Типичные поводы:

  • 🔁 Задвоение движений — документ провёлся дважды или остались движения от удалённого объекта.
  • 📉 Неверные остатки в регистре накопления (Товары на складах, Взаиморасчёты), которые не бьются с документами.
  • 🧩 Мусор после переноса данных — загрузка оставила записи без регистратора.
  • 🛠 Доработка конфигурации — поменяли структуру регистра, старые записи больше не нужны.

А вот когда чистить регистр НЕ нужно:

  • Остатки «кривые» из-за непроведённых или неверно заполненных документов — чистить надо документы, а регистр перезаполнится сам.
  • Расходятся итоги — чаще помогает пересчёт итогов, а не удаление записей (см. раздел ниже).
  • Нужно «обнулить базу для нового периода» — это делается сверткой или начальными остатками, а не ручной очисткой регистров.

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

Что сделать до очистки: копия и разбор структуры

Перед любой операцией с регистрами сделайте резервную копию базы . Ошибка здесь не откатывается кнопкой «Отмена» — восстановить получится только из копии.

Порядок подготовки:

Подготовка к очистке регистра
Выполнено: 0 / 5

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

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

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

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

СпособКогда применятьРиск
Отмена проведения документаНужно убрать движения одного-двух документовНизкий
Групповое перепроведение / отменаМного документов за периодСредний: трогает остатки по всему периоду
Ручное редактирование регистра сведенийНезависимый регистр, точечная правкаСредний: нет контроля документом
Программная очистка набором записейМассовая чистка по отборуВысокий: нужен навык разработчика
Прямое удаление в СУБД (SQL)—Критический: рвёт целостность, теряется поддержка

О последней строке сразу: прямое удаление записей SQL-запросом в таблицах СУБД делать не нужно. Платформа хранит в своих таблицах служебные данные (итоги, индексы, ссылочную целостность), и ручная правка на уровне базы данных приводит к рассогласованию, которое 1С потом «не видит». Любая задача очистки решается штатными средствами — ниже они и разобраны.

Чтобы не путаться, какой способ брать под ваш случай:

Откуда взялись записи в регистре?

Очистка регистра накопления через регистратор

Регистр накопления (Остатки товаров, Денежные средства, Взаиморасчёты и т. п.) чистится только через документы, которые в него пишут.

Убрать движения одного документа:

  1. Откройте список документов нужного вида (например, Продажи → Реализация (акты, накладные)).
  2. Встаньте на документ, откройте меню Ещё в командной панели списка.
  3. Выберите команду отмены проведения (в типовых — Отменить проведение).
  4. Движения этого документа исчезнут из всех регистров, куда он писал.

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

Убрать движения за период (много документов): воспользуйтесь обработкой группового перепроведения. В «Бухгалтерии предприятия» 3.0 она лежит в разделе Операции → Сервис → Групповое перепроведение документов. Задайте период и виды документов. Обработка умеет и перепроводить (восстановить корректные движения), и, при доработке, снимать проведение.

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

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

Очистка регистров сведений: независимый и подчинённый

Здесь важно, кто «хозяин» записей.

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

  1. Откройте форму списка регистра (через меню раздела или команду Все функции, если включена в настройках).
  2. Выделите строки, которые надо убрать.
  3. Удалите их командой удаления в командной панели списка.

Команду Все функции включают в Главное меню → Сервис → Параметры → Отображать команду «Все функции». Через неё открывается список любого регистра, даже если на него нет пункта в интерфейсе.

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

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

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

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

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

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

Очистить независимый регистр сведений по значению измерения:

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

Метод Записать() без добавления строк в набор и с установленным отбором — это и есть корректное удаление: платформа сама снимет старые записи и обновит итоги.

Запускайте обработку в монопольном режиме или в заведомо свободное время. Массовая запись наборов в рабочей базе под нагрузкой приводит к блокировкам и ошибкам у пользователей.

Для разовой массовой задачи такую обработку удобнее отладить и запустить из Конфигуратора или как внешнюю обработку (*.epf), не меняя саму конфигурацию.

Документ «Корректировка регистров»: правим движения руками

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

В «Бухгалтерии предприятия» 3.0 он открывается так:

  1. Зайдите в Операции → Операции, введённые вручную.
  2. Нажмите Создать и выберите вид Корректировка регистров.
  3. По кнопке настройки состава (значок настройки в шапке документа) отметьте галочками регистры, которые нужно поправить.
  4. На появившихся закладках добавьте, измените или удалите строки движений и запишите документ.

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

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

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

Пересчёт итогов и восстановление после неудачной очистки

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

Исправляется это пересчётом итогов, а не новой чисткой:

  1. Закройте базу для пользователей.
  2. Откройте базу в Конфигураторе: Администрирование → Тестирование и исправление.
  3. Включите флаг пересчёта итогов регистров, при необходимости — реструктуризацию.
  4. Запустите и дождитесь завершения.

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

Если очистка пошла не так (удалили лишнее, остатки развалились):

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

Прямое «латание» таблиц на уровне СУБД в качестве восстановления не используйте: без копии и без документов надёжно восстановить логическую целостность всё равно не выйдет.

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

Можно ли удалить записи регистра прямо в таблице базы данных SQL-запросом?
Технически да, но делать так нельзя: платформа хранит в своих таблицах итоги и ссылочную целостность, которые при прямой правке рассогласуются. 1С такие изменения не контролирует, и база становится нештатной. Любую очистку делайте штатными средствами.
Почему после отмены проведения остатки стали неправильными?
Отмена проведения убирает движения с даты документа. Если дальше по регистру шли другие документы, их остатки пересчитались от нового, уменьшенного значения. Перепроведите документы за период и пересчитайте итоги.
Чем перепроведение отличается от очистки?
При перепроведении платформа сама удаляет старые движения документа и записывает новые по его текущим данным. Это безопаснее ручного удаления: регистр всегда остаётся согласованным с документом.
Как очистить регистр, если у записей пустой регистратор?
Пустой регистратор — признак независимого регистра сведений. Его записи редактируются и удаляются прямо в форме списка в режиме «Предприятие» либо программно через набор записей по отбору.
Нужна ли резервная копия, если чищу всего один документ?
Копия нужна перед любой правкой движений. Один документ может писать в несколько регистров, и последствия отмены видны не сразу. Копия — единственный способ откатить операцию целиком.
Хватит ли прав обычного пользователя, чтобы очистить регистр?
Отмена проведения доступна тем, у кого есть права на сам документ. А вот редактирование независимого регистра сведений в форме списка, запуск внешних обработок и тестирование-исправление в Конфигураторе требуют прав администратора. Если команд в интерфейсе нет, дело обычно в ограничении прав.