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

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

Как удалить все записи регистра сведений в 1С

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

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

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

Перед любыми действиями сделайте резервную копию: для файловой базы достаточно скопировать файл 1Cv8.1CD, для серверной — выгрузку через конфигуратор или средствами СУБД. Удаление записей регистра необратимо, и восстановить данные без копии не получится.

Как определить тип регистра перед удалением

Главное свойство, влияющее на способ очистки, — режим записи регистра. Откройте конфигуратор, найдите нужный регистр в ветке «Регистры сведений» и посмотрите свойство «Режим записи». Значение «Независимый» означает, что записи создаются напрямую и их можно удалить набором записей. Значение «Подчинение регистратору» означает, что каждая запись привязана к документу, и удалить её в обход регистратора нельзя.

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

Режим записиНезависимый

Очистка возможна набором записей или обработкой напрямую

Режим записиПодчинён регистратору

Очищается только через удаление документов-регистраторов

Использование регистраСлужебный (обмены, очереди)

Проверьте, не нарушит ли очистка работу механизмов синхронизации

ДоступНет права на внешние обработки

Понадобится конфигуратор или помощь администратора с полными правами

Очистка независимого регистра через консоль кода

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

НаборЗаписей = РегистрыСведений.КурсыВалют.СоздатьНаборЗаписей();

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

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

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

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

Очистка через стандартные средства и обработки

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

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

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

Очистка регистра, подчинённого регистратору

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

Практический вариант: пометить документы-регистраторы на удаление и выполнить операцию «Удаление помеченных объектов» (Операции — Удаление помеченных объектов). При физическом удалении документа платформа автоматически удаляет его записи из всех подчинённых регистров. Если документов много, используйте групповую обработку списка документов или типовые средства группового изменения реквизитов с установкой пометки удаления.

Альтернатива — программное удаление в цикле: выбрать регистраторы запросом и для каждого вызвать Удалить() у объекта документа. Это быстрее интерактивного удаления, но требует осторожности: удалённые документы могут быть связаны с другими данными, и ссылочная целостность нарушится.

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

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

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

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

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

Список регистра через «Все функции»
Норма

Таблица пуста, строк нет

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

Записи остались — код не выполнился или регистр подчинён регистратору

Запрос с подсчётом записей
Норма

Возвращает 0

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

Количество больше нуля — проверьте права и журнал ошибок

Работа связанных механизмов
Норма

Отчёты и обмены ведут себя предсказуемо

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

Ошибки в регламентных заданиях или обменах — регистр был служебным

Альтернативы полному удалению

Полная очистка нужна не всегда. Если цель — уменьшить объём, часто достаточно удалить записи старше определённой даты. Для периодического регистра это делается набором записей с отбором по периоду или запросом с удалением через набор по каждому отбору. Если цель — исправить данные, рассмотрите перезапись записей новыми значениями вместо удаления.

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

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

Пустой набор записей (код)

Быстро и надёжно для независимых регистров; требует права на выполнение кода

Удаление через форму списка

Не нужен код, но медленно на больших таблицах и не работает для подчинённых регистров

Удаление регистраторов

Единственный способ для подчинённых регистров; влияет на документы и связанные данные

Штатная очистка подсистемы

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

FAQ

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

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

Почему код очистки выдаёт ошибку «Не установлен отбор по регистратору»?

Регистр подчинён регистратору, и платформа запрещает запись набора без отбора по конкретному документу. Такой регистр очищается только удалением самих документов-регистраторов — пометьте их на удаление и выполните удаление помеченных объектов.

Удалятся ли записи регистра при удалении документа-регистратора?

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

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

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

Как очистить не весь регистр, а только старые записи?

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

Итог

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

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