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

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

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

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

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

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

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

Что проверить перед очисткой регистра

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

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

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

Регистр независимыйЗаписи не привязаны к документам

Можно очищать целиком или по отбору

Регистр подчинён регистраторуЗаписи создают документы

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

Регистр в плане обменаИзменения регистрируются для отправки

После очистки проверить состав регистрации изменений

Миллионы записейБольшой объём

Очищать порциями или в монопольном режиме

Способ 1. Очистка через внешнюю обработку групповой очистки

Самый распространённый способ для пользователей без доступа к конфигуратору — универсальная обработка очистки регистров. Такие обработки есть в составе стандартных библиотек (например, «Групповое изменение реквизитов» не подходит — она меняет, а не удаляет), поэтому обычно используют специализированные обработки «Очистка регистров сведений», которые администратор подключает через «Файл → Открыть».

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

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

Очистка обработкой: порядок действий
  1. 1
    Сделайте резервную копию базы
  2. 2
    Откройте обработку через Файл → Открыть
  3. 3
    Выберите регистр сведений из списка
  4. 4
    Задайте отбор, если нужно удалить не всё
  5. 5
    Выполните очистку и дождитесь сообщения о количестве удалённых записей
  6. 6
    Откройте список регистра и проверьте результат

Способ 2. Программная очистка кодом 1С

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

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

НаборЗаписей.Записать(Истина);

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

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

НаборЗаписей.Отбор.Организация.Установить(НужнаяОрганизация);

НаборЗаписей.Записать(Истина);

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

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

Способ 3. Ручное удаление записей из формы списка

Если записей немного (десятки, редко сотни), их можно удалить интерактивно. Откройте меню «Все функции → Регистры сведений», найдите нужный регистр, выделите записи (Ctrl+A выделяет все видимые) и нажмите Delete, подтвердив удаление. При необходимости предварительно установите отбор по колонкам, чтобы удалить только нужную часть.

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

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

Особенности очистки регистров с регистратором

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

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

Если документы уже не нужны совсем, их можно пометить на удаление и выполнить «Удаление помеченных объектов» в монопольном режиме — движения по всем регистрам будут удалены вместе с документами.

Сравнение способов очистки

Внешняя обработка

Подходит без доступа к конфигуратору; нужны права на открытие обработок

Программный код

Гибкий отбор и порционное удаление; требует навыков разработки

Ручное удаление

Только для небольшого числа записей; долго при больших объёмах

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

Единственно корректный путь для регистров с регистратором

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

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

В файловой базе после массового удаления физический размер файла 1Cv8.1CD не уменьшится автоматически — освободившееся место остаётся внутри файла. Чтобы реально сжать базу, выполните «Тестирование и исправление» с включённой опцией сжатия таблиц или выгрузите базу в DT и загрузите обратно.

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

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

Список регистра
Норма

Записи удалены согласно отбору

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

Остались записи, которые должны были удалиться

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

Данные соответствуют ожиданиям

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

Отчёт пустой там, где нужны данные

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

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

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

Ошибки несоответствия данных после очистки

Размер файла базы
Норма

Уменьшился после сжатия таблиц

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

Не изменился — нужно тестирование и исправление

Типичные ошибки
01
Очистка без резервной копии — данные невозможно восстановить
02
Удаление записей регистра с регистратором напрямую — расхождение документов и движений
03
Очистка регистра обмена перед синхронизацией — потеря зарегистрированных изменений
04
Ожидание уменьшения файла базы сразу — без сжатия таблиц размер не изменится
05
Очистка всего регистра вместо отбора — удалены актуальные записи

Часто задаваемые вопросы

Можно ли очистить регистр сведений без конфигуратора?

Да. Достаточно внешней обработки очистки регистров, открываемой через «Файл → Открыть» в режиме предприятия. Потребуются права на интерактивное открытие внешних обработок и на изменение данных регистра. Конфигуратор нужен только если вы пишете собственный код.

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

Удалённые записи освобождают место внутри файла базы, но сам файл не сжимается автоматически. В файловом варианте выполните «Тестирование и исправление» с опцией сжатия таблиц или сделайте выгрузку в DT и загрузку в новую базу. В клиент-серверном варианте сжатие выполняется средствами СУБД.

Чем отличается очистка регистра сведений от регистра накопления?

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

Безопасно ли очищать служебные регистры обмена?

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

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

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

Что делать, если при очистке возникает ошибка блокировки?

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

Итог

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

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