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