Администрирование · 8 мин
Как очистить регистр в 1С: инструкция для пользователя и разработчика
Как очистить регистр в 1С: обработка удаления записей, код для разработчика, очистка регистров сведений и накопления. Ограничения, риски и проверка результата.
Очистка регистра в 1С — типовая задача администрирования: она нужна при удалении ошибочных движений, переносе данных между базами, сокращении объёма информационной базы или подготовке тестовой копии. Способ зависит от типа регистра, наличия подчинения регистратору и прав пользователя.
Регистры сведений, накопления, бухгалтерии и расчёта очищаются по-разному. Независимые регистры сведений можно чистить напрямую, а регистры, подчинённые регистратору, обычно очищаются через отмену проведения документов — иначе нарушится связность данных.
Перед любыми действиями сделайте резервную копию базы. Удаление записей регистра необратимо: восстановить данные без копии не получится, а в файловой базе даже транзакция не спасёт от прерывания по питанию в момент массового удаления.
Определите тип регистра перед очисткой
Откройте конфигуратор или «Все функции» в режиме предприятия и найдите нужный регистр. Ключевой вопрос — подчинён ли он регистратору. Регистры накопления, бухгалтерии, расчёта и большинство регистров сведений в типовых конфигурациях подчинены регистратору: их записи создаются документами при проведении.
Независимые регистры сведений (например, курсы валют, штрихкоды, настройки) заполняются напрямую, и их можно очищать без всяких документов. Проверить подчинение можно в конфигураторе: свойство регистра «Режим записи» — «Подчинение регистратору» или «Независимый».
Способ 1: очистка независимого регистра сведений через обработку
Самый безопасный путь без программирования — типовая обработка «Групповое изменение реквизитов» или специализированные обработки очистки регистров. Во многих конфигурациях на платформе 8.3 есть встроенные инструменты администрирования: «Администрирование» → «Обслуживание», либо раздел удаления помеченных объектов, если записи связаны со справочниками.
Универсальный вариант — обработка «Все функции»: откройте регистр сведений, выделите все записи в таблице (Ctrl+A) и удалите (Shift+Del для удаления без пометки). Способ подходит для небольших регистров; при сотнях тысяч записей интерфейс будет работать медленно, и лучше использовать код.
- 1Сделайте резервную копию базы (Конфигуратор → Администрирование → Выгрузить информационную базу).
- 2Откройте регистр через «Все функции» → «Регистры сведений».
- 3Проверьте, что регистр независимый (нет колонки «Регистратор»).
- 4Выделите записи и удалите их.
- 5Проверьте, что регистр пуст, и смежные механизмы работают.
Способ 2: очистка регистра программным кодом
Разработчику проще всего очистить регистр пустой записью набора. Создайте внешнюю обработку или выполните код через консоль кода. Для независимого регистра сведений достаточно записать пустой набор без отбора — это удалит все записи одной операцией:
НаборЗаписей = РегистрыСведений.КурсыВалют.СоздатьНаборЗаписей();
НаборЗаписей.Записать(); // запись пустого набора удаляет все записиДля регистра накопления, подчинённого регистратору, та же логика требует отбора по регистратору — очистить «весь регистр целиком» пустым набором нельзя. Очищать придётся по каждому документу отдельно, перебирая регистраторы запросом, либо отменять проведение самих документов.
В клиент-серверном варианте массовые операции выполняйте в транзакции и вне пиковой нагрузки: запись пустого набора по большому регистру может блокировать таблицу и мешать работе пользователей.
Способ 3: очистка через отмену проведения документов
Если регистр подчинён регистратору и нужно сохранить целостность базы, правильный путь — отменить проведение документов, сформировавших записи. Для этого используют обработку «Проведение документов» (в типовых — «Операции» → «Проведение документов») или групповую отмену проведения по списку документов.
После отмены проведения записи в регистрах удаляются автоматически. Это единственный способ, при котором остатки, итоги и связанные отчёты останутся согласованными. Минус — трудоёмкость при большом числе документов и необходимость открывать периоды, если установлена дата запрета редактирования.
Частичная очистка: по организации, периоду или отбору
Часто требуется удалить не все записи, а часть — по организации, контрагенту или периоду. Для независимых регистров сведений используйте набор записей с отбором по измерениям: установите отбор и запишите пустой набор — удалятся только записи, попадающие под условие.
Для периодических регистров сведений отбор по периоду в наборе записей не поддерживается напрямую — выберите нужные записи запросом и удаляйте их наборами с отбором по измерениям. Для регистров с регистратором частичная очистка означает отмену проведения документов за выбранный период или по выбранной организации.
Перед массовой очисткой выполните запрос с тем же отбором и посчитайте количество записей. Если число совпадает с ожиданием — отбор настроен верно; если нет, вы избежали удаления лишнего.
Проверка результата и типичные ошибки
После очистки откройте регистр и убедитесь, что записей не осталось (или осталось ожидаемое количество при частичной очистке). Для регистров с итогами проверьте связанные отчёты: остатки по складу, взаиморасчёты, регистры бухгалтерии должны показывать нули или отсутствие данных за очищенный период.
Типичные ошибки: очистка регистра с установленной датой запрета редактирования (записи не удалятся без явной ошибки в некоторых сценариях), запуск кода без привилегированного режима при ограниченных правах, забытая регистрация изменений для узлов обмена и попытка очистить подчинённый регистр без отбора по регистратору.
Как проверить результат
Регистр пуст или содержит ожидаемый остаток записей
Записи остались без объяснения — проверьте права и дату запрета
Остатки и обороты соответствуют очищенному состоянию
Отчёт показывает данные, которых нет в регистре — возможно, задеты итоги, нужен пересчёт
Синхронизация проходит без ошибок
Растёт очередь зарегистрированных изменений — очистка зарегистрировала удаления для всех узлов
FAQ
Можно ли очистить регистр накопления целиком одной командой?
Нет. Для регистра, подчинённого регистратору, набор записей всегда требует отбора по конкретному документу. Целиком регистр очищается либо перебором всех регистраторов с записью пустых наборов, либо отменой проведения документов, либо инструментами среза базы в типовых конфигурациях.
Что делать, если записи не удаляются?
Проверьте три вещи: дату запрета редактирования, права пользователя на регистр и режим обмена данными (загрузка). Также убедитесь, что код выполняется в привилегированном режиме, если прав недостаточно.
Удалятся ли записи при удалении документа-регистратора?
Да. При непосредственном удалении документа его движения по всем регистрам удаляются вместе с ним. При пометке на удаление движения остаются до отмены проведения, поэтому перед удалением документ отменяют проведение.
Как очистить регистр в файловой базе без конфигуратора?
Через внешнюю обработку с кодом записи пустого набора или через «Все функции» для независимых регистров сведений. Конфигуратор для самой очистки не обязателен, но нужен для выгрузки резервной копии в формате dt.
Опасно ли очищать регистры сведений типовой конфигурации?
Зависит от регистра. Служебные регистры (например, версии объектов, кэши) чистить можно — они перезаполнятся. Регистры с учётными данными (курсы, адреса, ответственные лица) при очистке нарушат работу документов и отчётов — действуйте выборочно и с копией.
Что важно запомнить
Сначала определите тип регистра и сделайте копию базы. Независимые регистры сведений чистятся пустым набором записей или вручную, подчинённые регистратору — через отмену проведения документов. После очистки проверьте регистр, отчёты и обмены данными.