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

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

Как почистить регистры в 1С и не повредить данные

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

Регистры в 1С — это таблицы, в которых накапливаются движения документов: остатки товаров, взаиморасчёты, данные о продажах, сведения о ставках и подписках. Со временем в них скапливаются лишние записи: движения от удалённых документов, дубли после неудачного обмена, устаревшие сведения. Это раздувает базу, замедляет отчёты и приводит к расхождениям в остатках.

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

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

Разберитесь, какой регистр и зачем нужно чистить

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

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

Сделайте резервную копию и подготовьте базу

Для файловой базы достаточно скопировать файл 1Cv8.1CD в отдельную папку при остановленной работе пользователей. Надёжнее — сделать выгрузку через конфигуратор: меню «Администрирование» → «Выгрузить информационную базу». Для клиент-серверной базы используйте средства СУБД (MS SQL, PostgreSQL) или выгрузку через конфигуратор.

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

Очистите движения конкретного документа

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

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

Порядок перепроведения документов
  1. 1
    Сделайте резервную копию базы
  2. 2
    Откройте обработку группового перепроведения
  3. 3
    Укажите период и виды документов
  4. 4
    Запустите перепроведение в монопольном режиме
  5. 5
    Сформируйте отчёты и сравните остатки с прежними значениями

Очистите регистр сведений или накопления полностью

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

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

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

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

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

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

Удалите записи за старый период

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

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

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

Способы очистки

Перепроведение документов

Подходит для исправления движений; безопасно, но не удаляет записи, не связанные с документами

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

Быстро и гибко, но необратимо; требует копии и понимания структуры данных

Свёртка базы

Правильный способ избавиться от старых периодов; долго на больших базах и требует проверки остатков

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

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

Дополнительно запустите тестирование и исправление базы (конфигуратор → «Администрирование» → «Тестирование и исправление») с проверкой логической и ссылочной целостности. Для клиент-серверных баз имеет смысл пересчитать итоги регистров: в конфигураторе через «Администрирование» → «Управление итогами» или программно.

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

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

Остатки в отчётах
Норма

Совпадают со значениями до очистки

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

Появились минусы или расхождения

Проведённые документы
Норма

У каждого есть корректные движения

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

Документ проведён, но движений нет

Скорость отчётов
Норма

Отчёты формируются быстрее или так же

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

Время построения выросло

Избегайте типичных ошибок

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

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

Типичные ошибки
01
Очистка регистра без резервной копии — данные теряются безвозвратно
02
Удаление движений без перепроведения — отчёты перестают сходиться
03
Прямые DELETE-запросы в СУБД — повреждение структуры базы
04
Очистка служебных регистров обмена — сбой синхронизации и повторная полная выгрузка
Перед большой чисткой полезно выполнить её сначала на копии базы и измерить результат: размер файла, скорость отчётов, корректность остатков. Только убедившись, что сценарий отработан, повторяйте его на рабочей базе.
ПЗ
Практическое замечание

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

Можно ли очистить регистр без программирования?

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

Что будет, если очистить регистр накопления, а документы оставить?

Документы останутся проведёнными, но их движения исчезнут: отчёты покажут нулевые или неполные остатки. Исправляется это полным перепроведением всех документов, которые писали в этот регистр.

Как почистить регистр сведений только по одной организации?

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

Помогает ли очистка регистров ускорить базу?

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

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

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

Итог

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

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