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