Удаление узлов и сброс регистрации изменений в плане обмена 1С

· 9 мин

Содержание

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

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

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

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

План обмена — это объект метаданных, в котором живут узлы. Один узел предопределённый — он обозначает текущую базу (в коде доступен как ПланыОбмена.ИмяПлана.ЭтотУзел()). Остальные узлы — это базы-партнёры, с которыми идёт обмен.

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

Отсюда два разных действия, которые путают:

  • 🗑️ Удаление узла — убирает саму настройку обмена с партнёром. Регистрация этого узла уходит вместе с ним.
  • 🧹 Сброс регистрации изменений — очищает очередь на выгрузку, но узел остаётся. Нужен, когда обмен рабочий, но «завис».

Размер базы раздувают именно таблицы регистрации, а не записи узлов. Если база растёт из-за обмена — смотрите в сторону сброса регистрации, а не удаления узлов.

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

В РИБ нельзя просто удалить узел подчинённой базы, как у обычного обмена: сначала подчинённую базу выводят из РИБ штатными средствами, и только потом убирают её узел. Удаление узла «в лоб» ломает структуру распределённой базы.

Диагностика: сколько узлов и что зависло в очереди

Начните с оценки масштаба — удалять вслепую нельзя.

Откройте Администрирование → Синхронизация данных → Настройки синхронизации данных. Здесь виден список активных настроек: с кем идёт обмен, когда была последняя успешная синхронизация. Настройки, по которым дата обмена «застряла» месяцы назад, — первые кандидаты на удаление.

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

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

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

В клиент-серверной базе объём служебных таблиц регистрации удобно оценить средствами СУБД — по размеру таблиц плана обмена. В файловой базе косвенный признак — заметный рост файла 1Cv8.1CD без роста числа документов.

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

Способ 1. Штатное удаление настройки синхронизации

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

  1. Откройте Администрирование → Синхронизация данных → Настройки синхронизации данных.
  2. Выделите ненужную настройку.
  3. В командной панели списка выберите удаление настройки синхронизации.
  4. Подтвердите удаление.

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

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

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

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

Способ 2. Удаление узлов вручную через список плана обмена

Пригодится, когда настройки синхронизации в списке уже нет, а узел-«сирота» в плане обмена остался.

Список узлов открывают через Все функции → Планы обмена → <имя нужного плана>. Если пункт Все функции не виден, включите его: Главное меню → Сервис → Параметры → Отображать команду «Все функции».

В открывшемся списке узлов:

  1. Найдите лишний узел-партнёр (предопределённый узел текущей базы трогать нельзя).
  2. Пометьте его на удаление.
  3. Запустите Удаление помеченных объектов.

Если платформа не даёт удалить узел из-за ссылок, сначала сбросьте по нему регистрацию изменений (способ 3), а уже потом помечайте на удаление.

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

Способ 3. Сброс регистрации изменений без удаления узла

Главный приём, когда узел рабочий, а очередь на выгрузку разрослась или встала. Узел остаётся — чистится только регистрация.

В встроенном языке за это отвечает метод УдалитьРегистрациюИзменений. Минимальный код в консоли запросов или внешней обработке:

// Узел берём по коду нужного плана обмена
Узел = ПланыОбмена.ИмяПланаОбмена.НайтиПоКоду("0001");
Если Не Узел.Пустая() Тогда
    УдалитьРегистрациюИзменений(Узел);
КонецЕсли;

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

УдалитьРегистрациюИзменений(Узел, Метаданные.Справочники.Номенклатура);

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

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

Для Каждого Узел Из МассивУзлов Цикл
    УдалитьРегистрациюИзменений(Узел);
КонецЦикла;

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

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

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

Способ 4. Массовая очистка внешней обработкой

Когда узлов много и часть явно мусорная, перебирать их руками долго. Здесь выручает обработка «Регистрация изменений для обмена данными» — типовой инструмент, который поставляется для управления очередью обмена.

Она позволяет:

  • 📊 посмотреть, сколько объектов зарегистрировано по каждому узлу;
  • ➖ снять регистрацию по выбранным типам объектов или по узлу целиком;
  • ➕ наоборот, зарегистрировать данные заново, если нужно догнать партнёра.

Открывается обработка как внешняя: Файл → Открыть и указать файл .epf, либо через Все функции → Обработки, если она добавлена в конфигурацию. Работа с ней безопаснее голого кода: видно состав очереди до и после, а снятие регистрации идёт пакетно.

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

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

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

Сравнение способов: что когда выбрать

СпособКогда применятьРиск
Удаление настройки синхронизацииОбмен с партнёром больше не нуженОбмен обрывается, нужна новая первоначальная выгрузка
Удаление узла вручнуюОстался узел-сирота без настройкиМожно оставить «хвосты», если есть связанные настройки
Сброс регистрации кодомУзел рабочий, очередь зависла или раздутаПартнёр недополучит данные без полной выгрузки
Внешняя обработкаМного узлов, нужна пакетная чисткаЗависит от прав обработки; обязателен доверенный источник

Короткий ориентир по выбору — ниже.

Нужен ли вам сам узел обмена дальше?
Порядок безопасной очистки плана обмена
Выполнено: 0 / 7

Профилактика: правила регистрации и порядок обмена

Чтобы план обмена не зарастал заново, стоит закрыть источники мусора.

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

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

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

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

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

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

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

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