Удаление регистра в 1С без потери данных: полный разбор
Содержание
Регистр в 1С удаляют в конфигураторе: находят объект в дереве конфигурации, проверяют ссылки командой Поиск ссылок на объект, убирают движения из документов-регистраторов и только потом нажимают Delete и обновляют конфигурацию базы данных (F7). При обновлении структуры таблица регистра и все её записи удаляются безвозвратно — поэтому до любой правки делают резервную копию.
Удаление регистра накопления, регистра сведений и регистра бухгалтерии идёт по одной схеме, но отличается нюансами: у независимого регистра сведений нет регистратора, а регистр бухгалтерии завязан на план счетов . В типовых конфигурациях (УТ 11, БП 3.0, ЗУП 3.1) объект сначала снимают с поддержки.
Сразу уточню частое заблуждение: удалить сам объект метаданных программно, кодом, нельзя. Встроенный язык управляет только данными — очистить записи регистра он умеет, а убрать регистр из состава конфигурации можно исключительно в конфигураторе.
Что проверить до удаления регистра
Регистр почти никогда не висит в конфигурации изолированно. На него ссылаются документы, которые пишут движения, отчёты, обработки и формы. Если удалить объект «в лоб», эти ссылки станут битыми, и конфигурация перестанет собираться.
Поэтому сначала выясняем, где регистр используется. Встаньте на объект в дереве конфигурации, нажмите правой кнопкой и выберите Поиск ссылок на объект. Конфигуратор покажет полный список: документы-регистраторы, модули с запросами, реквизиты форм, подсистемы.
Отдельно откройте каждый документ-регистратор и загляните в закладку Движения — именно там регистр подключён как приёмник движений. Пока эта связь есть, удалить регистр не получится.
Отдельно проверьте, не входит ли регистр в состав подсистем, критериев отбора и планов обмена. Такие связи не всегда очевидны в коде, но тоже относятся к ссылкам и мешают удалению.
Разберитесь и с тем, что физически удалится. Регистр — это таблица в базе. Вместе с объектом метаданных уйдут:
- 📊 все записи (движения или наборы) этого регистра;
- 🔗 ссылки на регистр в коде — их придётся править вручную;
- ⚙️ подключения регистра в документах и отчётах.
Данные регистра не попадают в «Удаление помеченных объектов» и не восстанавливаются через корзину. Единственная страховка — резервная копия базы перед реструктуризацией.
Типы регистров и чем отличается их удаление
Схема удаления общая, но каждый вид регистра имеет свою связку с другими объектами. Это и определяет, что чистить перед удалением.
| Вид регистра | С чем связан | Что убрать до удаления |
|---|---|---|
| Накопления (остатки/обороты) | Документы-регистраторы | Движения в документах |
| Сведений, подчинённый регистратору | Документы-регистраторы | Движения в документах |
| Сведений независимый | Записи ведутся вручную или кодом | Ссылки в формах и коде |
| Бухгалтерии | План счетов + регистраторы | Движения, обращения к субконто |
| Расчёта | План видов расчёта + регистраторы | Движения, перерасчёты |
У независимого регистра сведений регистратора нет — его записи никто не «держит», поэтому удаляется он проще остальных. А вот регистр бухгалтерии и регистр расчёта тянут за собой обращения к плану счетов и плану видов расчёта: прежде чем убирать регистр, проверьте, не завязана ли на него логика проведения.
Отдельно по регистру бухгалтерии: его движения несут значения субконто, а алгоритмы проведения документов часто обращаются к нему в запросах остатков. Если удалить такой регистр, не разобрав проведение, документы перестанут корректно формировать проводки. Поэтому для регистра бухгалтерии список ссылок читают особенно внимательно и правят модули проведения до удаления, а не после.
Удаление регистра в конфигураторе: порядок действий
Основной способ — вручную в конфигураторе. Порядок строгий, пропуск шага приведёт к ошибке на обновлении.
- Откройте конфигуратор и загрузите дерево конфигурации (
Конфигурация → Открыть конфигурацию). - Разверните нужную ветку:
Регистры накопления,Регистры сведений,Регистры бухгалтерииилиРегистры расчёта. - Выделите регистр, вызовите
Поиск ссылок на объекти зафиксируйте список мест использования. - В каждом документе-регистраторе на закладке
Движенияснимите флажок с удаляемого регистра. - Уберите обращения к регистру из кода, запросов отчётов и реквизитов форм — по списку ссылок.
- Выделите регистр и нажмите Delete (или правой кнопкой
Удалить). Конфигуратор ещё раз предупредит, если остались ссылки. - Сохраните конфигурацию и выполните
Конфигурация → Обновить конфигурацию базы данных(F7).
Чтобы не искать регистраторы вручную по всем документам, используйте результат команды Поиск ссылок на объект: в нём документы-регистраторы видны отдельной группой. Пройдите по ним списком — так ни один не останется с подключённым движением.
На седьмом шаге 1С сравнит основную конфигурацию с конфигурацией базы данных и покажет, что таблица регистра будет удалена. Это и есть точка невозврата: после подтверждения данные стираются. На больших базах реструктуризация таблицы может занять заметное время — закладывайте запас в технологическом окне.
Обновление со структурными изменениями требует монопольного доступа. Все сеансы пользователей нужно завершить — иначе 1С не даст реструктуризировать базу. Делайте это в нерабочее время и предупредите коллег: активные сеансы оборвутся.
Снятие с поддержки в типовых конфигурациях
В УТ 11, БП 3.0 и ЗУП 3.1 объекты закрыты «замком» поставщика — конфигурация стоит на поддержке. Пока замок на месте, регистр удалить нельзя: пункт Удалить будет недоступен.
Чтобы снять замок, откройте Конфигурация → Поддержка → Настройка поддержки и включите возможность изменения. Для удаления объекта поставщика дополнительно разрешите удаление в настройках правил поддержки конкретного объекта.
Снятие типового регистра с поддержки ломает автоматическое обновление. После этого обновления ставятся только через сравнение-объединение, вручную, с разбором конфликтов. На типовой, стоящей на сопровождении 1С, это решение принимают осознанно.
Практика проще: в типовой конфигурации регистр чаще не удаляют, а перестают использовать — убирают из движений своих доработок и оставляют пустым. Так конфигурация остаётся обновляемой.
Очистка данных регистра средствами встроенного языка
Раздел для случая, когда нужно не удалить объект, а очистить его записи — например, перед переносом данных или повторным проведением. Встроенный язык работает именно с данными.
Записи регистра, подчинённого регистратору, удаляют через пустой набор записей с отбором по регистратору:
Набор = РегистрыНакопления.ТоварыНаСкладах.СоздатьНаборЗаписей();
Набор.Отбор.Регистратор.Установить(ДокументСсылка);
Набор.Записать(); // запись пустого набора удаляет движения этого регистратора
Для независимого регистра сведений отбор ставят по его измерению:
Набор = РегистрыСведений.КурсыВалют.СоздатьНаборЗаписей();
Набор.Отбор.Валюта.Установить(ВалютаСсылка);
Набор.Записать();
Полную очистку регистра удобнее делать стандартной обработкой Удаление движений, доступной через Все функции, либо перебором регистраторов из запроса. Снимать отбор и писать пустой набор по всей таблице без нужды не стоит — легко задеть лишнее.
Очистку большого регистра выполняйте порциями — выберите регистраторы запросом и обходите их пакетами, а не одним набором на всю таблицу. Так меньше риск разрастания транзакции и блокировок. После очистки регистра накопления его остатки обнулятся: если на этих остатках строятся отчёты, пересчитайте их и убедитесь, что цифры соответствуют ожиданиям.
Повторю главное: ни одна из этих команд не удаляет сам регистр. Они обнуляют его записи. Объект метаданных остаётся в конфигурации.
Расширение конфигурации (появились в платформе 8.3.6) тоже не поможет убрать регистр поставщика — расширения добавляют и изменяют объекты, но не удаляют базовые. Удаление регистра всегда идёт через основную конфигурацию.
Если регистр не удаляется
Чаще всего удаление упирается в незакрытые ссылки или в режим запуска. Вот как читать типовые симптомы.
Если ошибок много и часть ссылок неочевидна, не спешите с реструктуризацией. Отмените удаление, доведите список ссылок до нуля и только потом нажимайте F7.
Как удалить регистр и сохранить данные
Иногда регистр нужно убрать, но его записи важны — остатки, история, движения. Прямое удаление их уничтожит. Есть три рабочих подхода без потери данных.
- 📤 Выгрузить данные заранее. Запросом соберите записи регистра и сохраните в файл (
ТаблицаЗначений→Сохранить/JSON/xls) или в служебный справочник. После этого регистр можно удалять. - 🔁 Перенести в другой регистр. Если данные продолжат жить в новой структуре, перепишите их в регистр-приёмник обработкой, сверьте итоги и лишь затем удаляйте старый.
- ⏸️ Не удалять, а заморозить. Уберите регистр из движений документов — он перестанет наполняться, но таблица и история останутся. Для типовых это ещё и сохраняет обновляемость.
Перед переносом сверьте контрольные суммы: итоги по регистру-источнику и приёмнику должны совпасть. Расхождение — сигнал, что перенесли не все измерения или ресурсы.
Выбор зависит от того, нужны ли данные в работе дальше. Для отчётности прошлых периодов обычно хватает выгрузки в файл; для продолжения учёта — переноса в новый регистр. Перенос всегда делайте на копии базы: убедитесь, что приёмник заполняется корректно, сверьте итоги, и только потом повторяйте операцию в рабочей базе и удаляйте исходный регистр.
Возврат изменений и восстановление из копии
Сценарий зависит от того, успели ли вы обновить конфигурацию базы данных.
Если F7 ещё не нажимали. Регистр удалён только в основной конфигурации, таблица в базе цела. Выполните Конфигурация → Вернуться к конфигурации базы данных — объект вернётся вместе со всеми записями, данные не пострадали.
Если конфигурацию базы данных уже обновили. Таблица удалена, записи стёрты. Остаётся восстановление из резервной копии:
- из выгрузки
.dt— черезАдминистрирование → Загрузить информационную базу; - из бэкапа СУБД — средствами PostgreSQL или MS SQL для клиент-серверного варианта.
Загрузка .dt замещает всю базу целиком. Если после удаления регистра в базе уже успели поработать, свежие данные пропадут. Для частичного восстановления разворачивают копию отдельно и переносят только нужный регистр.
Если конфигурация ведётся через хранилище, вернуть сам объект метаданных можно откатом на нужную версию конфигурации. Но помните: хранилище хранит код и структуру, а не данные базы. Записи удалённого регистра оно не вернёт — для них всё равно нужна резервная копия базы .
Поэтому резервная копия перед удалением — не формальность. Это единственный способ вернуть данные, если реструктуризация уже прошла. Для клиент-серверного варианта надёжнее полагаться на регулярный бэкап СУБД, а выгрузку .dt делать точечно перед опасной операцией.
Частые вопросы
Можно ли удалить регистр, не снимая конфигурацию с поддержки?
Вернутся ли данные, если я нажму «Вернуться к конфигурации базы данных»?
F7). До реструктуризации таблица цела, и возврат восстановит и объект, и записи. После F7 данные уже стёрты.Чем удаление независимого регистра сведений отличается от остальных?
Удалятся ли движения из документов, если удалить регистр накопления?
Движения этого регистра больше не будет — связь нужно убрать до удаления, иначе конфигуратор не даст реструктуризировать базу.Нужен ли монопольный доступ, чтобы просто удалить регистр в дереве?
Что выбрать, если нужно убрать только данные, а регистр оставить?
Удаление движений. Сама таблица и структура остаются, документы продолжают писать в регистр новые движения. Удаление объекта метаданных нужно лишь тогда, когда регистр в конфигурации больше не используется.