Удаление регистра в 1С без потери данных: полный разбор

· 9 мин

Содержание

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

Удаление регистра накопления, регистра сведений и регистра бухгалтерии идёт по одной схеме, но отличается нюансами: у независимого регистра сведений нет регистратора, а регистр бухгалтерии завязан на план счетов . В типовых конфигурациях (УТ 11, БП 3.0, ЗУП 3.1) объект сначала снимают с поддержки.

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

Что проверить до удаления регистра

Регистр почти никогда не висит в конфигурации изолированно. На него ссылаются документы, которые пишут движения, отчёты, обработки и формы. Если удалить объект «в лоб», эти ссылки станут битыми, и конфигурация перестанет собираться.

Поэтому сначала выясняем, где регистр используется. Встаньте на объект в дереве конфигурации, нажмите правой кнопкой и выберите Поиск ссылок на объект. Конфигуратор покажет полный список: документы-регистраторы, модули с запросами, реквизиты форм, подсистемы.

Отдельно откройте каждый документ-регистратор и загляните в закладку Движения — именно там регистр подключён как приёмник движений. Пока эта связь есть, удалить регистр не получится.

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

Разберитесь и с тем, что физически удалится. Регистр — это таблица в базе. Вместе с объектом метаданных уйдут:

  • 📊 все записи (движения или наборы) этого регистра;
  • 🔗 ссылки на регистр в коде — их придётся править вручную;
  • ⚙️ подключения регистра в документах и отчётах.

Данные регистра не попадают в «Удаление помеченных объектов» и не восстанавливаются через корзину. Единственная страховка — резервная копия базы перед реструктуризацией.

Перед удалением регистра
Выполнено: 0 / 5

Типы регистров и чем отличается их удаление

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

Вид регистраС чем связанЧто убрать до удаления
Накопления (остатки/обороты)Документы-регистраторыДвижения в документах
Сведений, подчинённый регистраторуДокументы-регистраторыДвижения в документах
Сведений независимыйЗаписи ведутся вручную или кодомСсылки в формах и коде
БухгалтерииПлан счетов + регистраторыДвижения, обращения к субконто
РасчётаПлан видов расчёта + регистраторыДвижения, перерасчёты

У независимого регистра сведений регистратора нет — его записи никто не «держит», поэтому удаляется он проще остальных. А вот регистр бухгалтерии и регистр расчёта тянут за собой обращения к плану счетов и плану видов расчёта: прежде чем убирать регистр, проверьте, не завязана ли на него логика проведения.

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

Удаление регистра в конфигураторе: порядок действий

Основной способ — вручную в конфигураторе. Порядок строгий, пропуск шага приведёт к ошибке на обновлении.

  1. Откройте конфигуратор и загрузите дерево конфигурации (Конфигурация → Открыть конфигурацию).
  2. Разверните нужную ветку: Регистры накопления, Регистры сведений, Регистры бухгалтерии или Регистры расчёта.
  3. Выделите регистр, вызовите Поиск ссылок на объект и зафиксируйте список мест использования.
  4. В каждом документе-регистраторе на закладке Движения снимите флажок с удаляемого регистра.
  5. Уберите обращения к регистру из кода, запросов отчётов и реквизитов форм — по списку ссылок.
  6. Выделите регистр и нажмите Delete (или правой кнопкой Удалить). Конфигуратор ещё раз предупредит, если остались ссылки.
  7. Сохраните конфигурацию и выполните Конфигурация → Обновить конфигурацию базы данных (F7).

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

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

Обновление со структурными изменениями требует монопольного доступа. Все сеансы пользователей нужно завершить — иначе 1С не даст реструктуризировать базу. Делайте это в нерабочее время и предупредите коллег: активные сеансы оборвутся.

Снятие с поддержки в типовых конфигурациях

В УТ 11, БП 3.0 и ЗУП 3.1 объекты закрыты «замком» поставщика — конфигурация стоит на поддержке. Пока замок на месте, регистр удалить нельзя: пункт Удалить будет недоступен.

Чтобы снять замок, откройте Конфигурация → Поддержка → Настройка поддержки и включите возможность изменения. Для удаления объекта поставщика дополнительно разрешите удаление в настройках правил поддержки конкретного объекта.

Снятие типового регистра с поддержки ломает автоматическое обновление. После этого обновления ставятся только через сравнение-объединение, вручную, с разбором конфликтов. На типовой, стоящей на сопровождении 1С, это решение принимают осознанно.

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

Очистка данных регистра средствами встроенного языка

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

Записи регистра, подчинённого регистратору, удаляют через пустой набор записей с отбором по регистратору:

Набор = РегистрыНакопления.ТоварыНаСкладах.СоздатьНаборЗаписей();
Набор.Отбор.Регистратор.Установить(ДокументСсылка);
Набор.Записать(); // запись пустого набора удаляет движения этого регистратора

Для независимого регистра сведений отбор ставят по его измерению:

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

Полную очистку регистра удобнее делать стандартной обработкой Удаление движений, доступной через Все функции, либо перебором регистраторов из запроса. Снимать отбор и писать пустой набор по всей таблице без нужды не стоит — легко задеть лишнее.

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

Повторю главное: ни одна из этих команд не удаляет сам регистр. Они обнуляют его записи. Объект метаданных остаётся в конфигурации.

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

Если регистр не удаляется

Чаще всего удаление упирается в незакрытые ссылки или в режим запуска. Вот как читать типовые симптомы.

Диагностика: выберите симптом

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

Как удалить регистр и сохранить данные

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

  • 📤 Выгрузить данные заранее. Запросом соберите записи регистра и сохраните в файл (ТаблицаЗначений → Сохранить/JSON/xls) или в служебный справочник. После этого регистр можно удалять.
  • 🔁 Перенести в другой регистр. Если данные продолжат жить в новой структуре, перепишите их в регистр-приёмник обработкой, сверьте итоги и лишь затем удаляйте старый.
  • ⏸️ Не удалять, а заморозить. Уберите регистр из движений документов — он перестанет наполняться, но таблица и история останутся. Для типовых это ещё и сохраняет обновляемость.

Перед переносом сверьте контрольные суммы: итоги по регистру-источнику и приёмнику должны совпасть. Расхождение — сигнал, что перенесли не все измерения или ресурсы.

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

Возврат изменений и восстановление из копии

Сценарий зависит от того, успели ли вы обновить конфигурацию базы данных.

Если F7 ещё не нажимали. Регистр удалён только в основной конфигурации, таблица в базе цела. Выполните Конфигурация → Вернуться к конфигурации базы данных — объект вернётся вместе со всеми записями, данные не пострадали.

Если конфигурацию базы данных уже обновили. Таблица удалена, записи стёрты. Остаётся восстановление из резервной копии:

  • из выгрузки .dt — через Администрирование → Загрузить информационную базу;
  • из бэкапа СУБД — средствами PostgreSQL или MS SQL для клиент-серверного варианта.

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

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

Поэтому резервная копия перед удалением — не формальность. Это единственный способ вернуть данные, если реструктуризация уже прошла. Для клиент-серверного варианта надёжнее полагаться на регулярный бэкап СУБД, а выгрузку .dt делать точечно перед опасной операцией.

Частые вопросы

Можно ли удалить регистр, не снимая конфигурацию с поддержки?
Нет. Пока объект под замком поставщика, пункт удаления недоступен. Либо снимаете с поддержки с разрешением на удаление, либо не удаляете регистр, а перестаёте его использовать.
Вернутся ли данные, если я нажму «Вернуться к конфигурации базы данных»?
Да, но только пока вы не обновили конфигурацию базы данных (F7). До реструктуризации таблица цела, и возврат восстановит и объект, и записи. После F7 данные уже стёрты.
Чем удаление независимого регистра сведений отличается от остальных?
У него нет регистратора, поэтому не нужно снимать движения с документов. Достаточно убрать ссылки в формах и коде и удалить объект. Записи при этом всё равно пропадут при обновлении структуры.
Удалятся ли движения из документов, если удалить регистр накопления?
Записи в таблице регистра удалятся полностью. Сами документы останутся, но на их закладке Движения этого регистра больше не будет — связь нужно убрать до удаления, иначе конфигуратор не даст реструктуризировать базу.
Нужен ли монопольный доступ, чтобы просто удалить регистр в дереве?
Нет. Редактировать и удалять объект в конфигурации можно при работающих пользователях. Монопольный доступ потребуется только на шаге обновления конфигурации базы данных со структурными изменениями.
Что выбрать, если нужно убрать только данные, а регистр оставить?
Тогда объект не удаляют — чистят записи кодом или обработкой Удаление движений. Сама таблица и структура остаются, документы продолжают писать в регистр новые движения. Удаление объекта метаданных нужно лишь тогда, когда регистр в конфигурации больше не используется.