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

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

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

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

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

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

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

Что именно нужно очистить: три разные задачи

Термин «очистить план обмена» неоднозначен, и путаница здесь — частая причина ошибок. Разделите задачи:

  • Снятие регистрации изменений — удаление служебных записей о том, какие объекты изменены и должны быть выгружены в узел. Сам узел и настройки обмена сохраняются.
  • Удаление узла плана обмена — полное отключение корреспондента от обмена с удалением настроек синхронизации для него.
  • Очистка очередей и сообщений обмена — удаление файлов сообщений, записей в очередях (актуально для обменов через БСП, EnterpriseData, веб-сервисы и РИБ).

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

Подготовка перед очисткой

Любые манипуляции с планом обмена выполняйте только после резервного копирования. Для файловой базы достаточно скопировать файл 1Cv8.1CD при отсутствии активных сеансов, для клиент-серверной — сделать выгрузку в dt или штатный бэкап СУБД.

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

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

Снятие регистрации изменений через интерфейс

В конфигурациях на базе Библиотеки стандартных подсистем (УТ, ERP, БП, КА и других) есть штатный инструмент. Путь может немного отличаться в зависимости от версии, но логика одинакова.

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

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

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

Снятие регистрации программно

Когда узлов много или очистку нужно автоматизировать (например, регламентным заданием после вывода базы из обмена), используется метод платформы. Он выполняется в конфигураторе через «Функции для технического специалиста» → внешнюю обработку, консоль кода или через обработку в режиме предприятия.

bsl
// Снять регистрацию изменений со всех данных для узла
Узел = ПланыОбмена.ОбменССайтом.НайтиПоКоду("000000002");
ПланыОбмена.УдалитьРегистрациюИзменений(Узел);

Метод ПланыОбмена.УдалитьРегистрациюИзменений() удаляет всю регистрацию для указанного узла. Если нужно снять регистрацию только по конкретному объекту, передайте его вторым параметром:

bsl
// Снять регистрацию по одному документу
ДокументСсылка = Документы.РеализацияТоваровУслуг.НайтиПоНомеру("0000-000123", ТекущаяДатаСеанса());
ПланыОбмена.УдалитьРегистрациюИзменений(Узел, ДокументСсылка);

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

Удаление узла плана обмена

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

В конфигурациях с БСП узел обычно удаляется из списка настроек синхронизации: «Администрирование» → «Синхронизация данных» → выбрать настройку → удалить. Если настройка не удаляется из-за связанных данных, сначала отключите сценарии обмена и регламентные задания, ссылающиеся на этот узел.

Для РИБ (распределённой информационной базы) удаление узла — более серьёзная операция: подчинённый узел после отключения не сможет вернуться в обмен без создания нового образа. Удаляйте узел РИБ только если база-корреспондент точно не понадобится.

Очистка очередей и сообщений обмена

Отдельная проблема — накопленные файлы сообщений и записи очередей. При обмене через каталог или FTP файлы Message_*.xml могут копиться в папке обмена, если приём на той стороне не выполняется. Эти файлы можно удалить вручную, но только после того, как обмен остановлен и вы уверены, что сообщения не нужны — иначе вторая база пропустит пакет изменений.

В механизмах БСП (обмен через веб-сервисы, «Синхронизация данных через универсальный формат») очереди хранятся в служебных регистрах сведений, например в регистрах очередей сообщений. Очистка выполняется через форму настройки синхронизации или удалением записей этих регистров по конкретному узлу. Не очищайте регистры «вслепую» — сначала убедитесь, что они относятся именно к нужному узлу.

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

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

Регистрация изменений
Норма

В обработке регистрации для узла список объектов пуст

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

Записи появляются снова — работает регламентное задание или пользователи изменяют данные

Узлы обмена
Норма

Ненужный узел отсутствует в списке настроек синхронизации

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

Узел есть, но с ошибками — удалены настройки, но не сам узел

Папка обмена
Норма

Нет накопленных файлов Message_*.xml

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

Файлы продолжают появляться — обмен не отключён

Размер базы
Норма

После очистки и сжатия таблиц размер уменьшился

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

Размер не изменился — требуется реструктуризация или сжатие таблиц СУБД

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

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

Типичные ошибки
01
Снятие регистрации при активном обмене — базы расходятся, требуется повторная начальная выгрузка
02
Удаление узла РИБ вместо штатного отключения — подчинённая база теряет связь с главной без возможности восстановления
03
Очистка без резервной копии — при ошибке восстановить регистрацию невозможно
04
Удаление файлов сообщений при работающем приёме — часть пакетов теряется, обмен зависает с ошибкой номера сообщения
05
Очистка служебных регистров очередей без привязки к узлу — повреждаются очереди других обменов

Ещё одно ограничение: после удаления регистрации физическое место в базе не освобождается автоматически. В клиент-серверном варианте нужно сжатие таблиц средствами СУБД, в файловом — тестирование и исправление с включённым сжатием.

Маршрут решения

Как выбрать действие

Обмен временно остановлен, потом будет восстановленНичего не очищайте — регистрация нужна для передачи накопленных изменений
Узел больше не нужен, но обмен с другими узлами продолжаетсяУдалите конкретный узел — регистрация по нему удалится автоматически
Обмен зависает на одном объекте с ошибкойСнимите регистрацию точечно по этому объекту и повторите обмен
База раздулась от регистрации по давно неработающему узлуСделайте копию, удалите узел, затем выполните сжатие таблиц

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

Что будет, если снять регистрацию изменений, а потом снова включить обмен?

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

Можно ли очистить регистрацию только по одному типу объектов, например по документам?

Да. В обработке «Регистрация изменений для обмена данными» можно открыть конкретный тип метаданных и удалить регистрацию только по нему. Программно для этого передают объект метаданных или конкретные ссылки вторым параметром метода УдалитьРегистрациюИзменений.

Почему после очистки размер базы не уменьшился?

Удаление записей регистрации помечает место как свободное, но физически файл базы или таблицы СУБД не сжимаются. Для файловой базы выполните «Тестирование и исправление» с включённым сжатием таблиц, для клиент-серверной — штатные процедуры сжатия средствами вашей СУБД.

Как узнать, сколько изменений зарегистрировано для узла?

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

Можно ли полностью удалить план обмена из конфигурации?

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

Регистрация появляется снова сразу после очистки — в чём причина?

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

Итог

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

Очистка плана обмена — это снятие регистрации изменений или удаление узла, и делать это можно только при остановленном или ненужном обмене. Используйте штатную обработку «Регистрация изменений для обмена данными» или метод ПланыОбмена.УдалитьРегистрациюИзменений, всегда начинайте с резервной копии, а после очистки проверяйте, что регистрация не появляется снова и обмены с другими узлами работают.