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

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

Как очистить таблицу регистрации изменений в 1С

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

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

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

Что такое регистрация изменений и почему таблицы растут

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

Характерные признаки разросшихся таблиц регистрации: замедление записи документов и справочников, увеличение времени регламентных операций, рост файла базы данных без видимого роста прикладных данных. В клиент-серверном варианте можно увидеть большие таблицы с именами, содержащими ChngR, в файловом — оценить рост только косвенно по размеру файла 1Cv8.1CD.

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

Когда очистка безопасна, а когда приведёт к рассинхронизации

Безопасные сценарии: узел обмена больше не используется (обмен отключён, база-приёмник ликвидирована), выполняется начальная настройка нового узла, где всё равно будет полная выгрузка, либо накопились записи по тестовым узлам. В этих случаях очистка только ускорит работу.

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

Очистка через форму узла плана обмена

Самый простой типовой способ доступен в конфигурациях на БСП (УТ, ERP, БП и других). Откройте список узлов плана обмена: «Администрирование» → «Синхронизация данных» → настройки синхронизации. В форме узла или в контекстном меню по кнопке «Ещё» найдите команду «Удалить регистрацию изменений» (в ряде конфигураций — «Изменить номера сообщений» рядом с ней).

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

Порядок действий через интерфейс
  1. 1
    Сделайте резервную копию базы или выгрузку .dt
  2. 2
    Откройте Администрирование → Синхронизация данных
  3. 3
    Выберите неиспользуемый узел обмена
  4. 4
    Через меню Ещё выполните «Удалить регистрацию изменений»
  5. 5
    Дождитесь завершения и проверьте размер таблиц
  6. 6
    При ненужности узла — пометьте его на удаление

Очистка обработкой и программным способом

В типовых конфигурациях есть обработка «Регистрация изменений для обмена данными» (обычно доступна через «Все функции» или из состава инструментов разработчика). Она показывает дерево объектов с количеством зарегистрированных изменений по каждому узлу и позволяет снять регистрацию выборочно — по конкретным типам объектов, а не целиком. Это удобно, когда нужно очистить, например, только регистры сведений, оставив документы.

Программный способ — метод ПланыОбмена.УдалитьРегистрациюИзменений(Узел). Вторым параметром можно передать массив метаданных или конкретные данные для точечной очистки. Пример выполняется через консоль кода или внешнюю обработку:

bsl
Узел = ПланыОбмена.ОбменУправлениеТорговлейБухгалтерия.НайтиПоКоду("001");
ПланыОбмена.УдалитьРегистрациюИзменений(Узел);
// Точечно, только по документам:
МассивМетаданных = Новый Массив;
МассивМетаданных.Добавить(Метаданные.Документы.РеализацияТоваровУслуг);
ПланыОбмена.УдалитьРегистрациюИзменений(Узел, МассивМетаданных);

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

Как проверить результат и объём таблиц

После очистки убедитесь, что записи действительно удалены. В обработке «Регистрация изменений для обмена данными» количество зарегистрированных объектов по очищенному узлу должно стать нулевым. В клиент-серверном варианте администратор СУБД может сравнить размер таблиц _ChngR/_NodeChngR до и после операции.

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

Контрольные точки

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

Количество зарегистрированных изменений по узлу
Норма

Равно нулю или близко к нулю

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

Записи остались — очистка не выполнена или пошли новые регистрации

Размер таблиц регистрации на СУБД
Норма

Таблицы ChngR заметно уменьшились

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

Размер прежний — записи не удалены

Скорость записи документов
Норма

Проведение стало быстрее

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

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

Типичные ошибки и ограничения

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

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

Ещё одно ограничение: в распределённых информационных базах (РИБ) очистка регистрации по узлам, с которыми обмен идёт штатно, может нарушить механизм квитирования. Для РИБ корректнее решать проблему через восстановление обмена и обработку «Настройка узлов распределенной информационной базы», а не через массовое удаление записей.

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

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

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

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

Удалятся ли документы при очистке регистрации изменений?

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

Как очистить регистрацию сразу по всем узлам?

Программно — перебрать узлы нужного плана обмена через ПланыОбмена.<ИмяПлана>.Выбрать() и для каждого вызвать УдалитьРегистрациюИзменений. В интерфейсе типовых конфигураций очистка выполняется по одному узлу.

Почему после очистки записи появились снова?

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

Нужно ли монопольный режим для очистки?

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

Как восстановить обмен после случайной очистки регистрации?

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