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