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

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

Как почистить регистр в 1С 8.3 вручную

Как вручную очистить регистр сведений и накопления в 1С 8.3: через конфигуратор, обработку и запрос. Резервная копия, проверка результата, типичные ошибки.

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

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

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

Определите тип регистра и роль записей в учёте

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

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

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

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

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

Очистка регистра сведений через режим «Предприятие»

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

Установите отбор по нужным условиям — периоду, измерению, значению ресурса. Выделите записи (Ctrl+A для всех отображённых) и удалите их клавишей Delete или командой «Удалить». Платформа удалит записи напрямую, минуя прикладную логику, поэтому отбор должен быть выверен точно: лишний снятый фильтр — и удалится всё содержимое.

Когда список недоступен или записей слишком много

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

Порядок действий в режиме «Предприятие»
  1. 1
    Сделайте резервную копию базы (файл .dt или копию СУБД)
  2. 2
    Откройте «Все функции» → «Регистры сведений» → нужный регистр
  3. 3
    Установите точный отбор по периоду и измерениям
  4. 4
    Выделите записи и удалите их командой «Удалить»
  5. 5
    Проверьте связанные отчёты и журналы на отсутствие ошибок

Очистка регистра запросом или кодом

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

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

bsl
Набор = РегистрыСведений.КурсыВалют.СоздатьНаборЗаписей();
Набор.Отбор.Период.Установить(Дата(2020,1,1));
Набор.Записать(Истина); // удалит записи за выбранную дату

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

Очистка регистров накопления и бухгалтерии: допустимые сценарии

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

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

Способы очистки: что выбрать

Удаление через список (Предприятие)

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

Набор записей с отбором (код)

Подходит для массовой и точечной очистки любых регистров. Ограничение: требует навыков встроенного языка и проверки на копии.

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

Единственный корректный путь для регистров накопления и бухгалтерии. Ограничение: трудоёмко при большом числе документов.

Свёртка базы

Подходит для очистки старых периодов целиком. Ограничение: необратима, требует подготовки и тестирования.

Проверка результата и типичные ошибки

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

Частые ошибки: очистка без отбора (удалён весь регистр), удаление записей подчинённого регистра без отмены проведения (рассинхронизация документов и отчётов), забытая регистрация в планах обмена (в другие узлы уходит массовое удаление) и работа без копии, когда откат невозможен.

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

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

Количество записей в регистре
Норма

Совпадает с расчётным после отбора

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

Записей ноль при частичной очистке или остались лишние

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

Итоги ожидаемо изменились, нет битых ссылок

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

Пустые строки, ошибки обращения к удалённым объектам

Журнал регистрации
Норма

Зафиксировано одно контролируемое удаление

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

Массовые ошибки, обрывы транзакций

Обмены данными
Норма

Синхронизация проходит без ошибок

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

Коллизии, зависшие сообщения, удаления в других узлах

FAQ

Можно ли очистить регистр напрямую в SQL-таблице?

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

Что делать, если случайно очистили весь регистр?

Немедленно прекратите работу пользователей с базой и восстановите данные из резервной копии. Если копии нет, данные можно попытаться восстановить из узлов обмена или архивных выгрузок, но гарантий нет.

Почему после очистки записи появились снова?

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

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

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

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

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

Опасно ли чистить служебные регистры обмена и очередей?

Да. Такие регистры обслуживают механизмы синхронизации и фоновых заданий. Их очистка без анализа приводит к потере очередей сообщений и повторной полной выгрузке данных. Сначала изучите назначение регистра в документации конфигурации.

Итог

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

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