Удаление узлов и сброс регистрации изменений в плане обмена 1С
Содержание
Очистить план обмена в 1С — значит убрать лишние узлы-партнёры и сбросить накопившуюся регистрацию изменений. Штатно это делают в разделе Администрирование → Синхронизация данных: удаляют ненужную настройку синхронизации, и вместе с ней узел помечается на удаление, а очередь на выгрузку по нему очищается.
Браться за очистку приходится в нескольких ситуациях: зависла синхронизация и по узлу копятся тысячи незагруженных изменений; осталась настройка от базы, которую давно вывели из эксплуатации; служебные таблицы регистрации раздули размер базы; нужно повторить обмен «с нуля», полной выгрузкой.
Способов четыре — от безопасного штатного удаления до прямой работы кодом. Выбор зависит от одного вопроса: нужен вам сам узел дальше или нет. Если узел больше не используется — удаляют узел целиком. Если узел рабочий, а зависла только очередь — трогают не узел, а регистрацию изменений.
Что именно чистят: узлы и регистрация изменений
План обмена — это объект метаданных, в котором живут узлы. Один узел предопределённый — он обозначает текущую базу (в коде доступен как ПланыОбмена.ИмяПлана.ЭтотУзел()). Остальные узлы — это базы-партнёры, с которыми идёт обмен.
У каждого узла-партнёра платформа ведёт регистрацию изменений: когда в базе меняется объект, попадающий в обмен, по узлу регистрируется, что этот объект нужно выгрузить. Эти записи хранятся в служебных таблицах регистрации, напрямую через обычный запрос они не читаются.
Отсюда два разных действия, которые путают:
- 🗑️ Удаление узла — убирает саму настройку обмена с партнёром. Регистрация этого узла уходит вместе с ним.
- 🧹 Сброс регистрации изменений — очищает очередь на выгрузку, но узел остаётся. Нужен, когда обмен рабочий, но «завис».
Размер базы раздувают именно таблицы регистрации, а не записи узлов. Если база растёт из-за обмена — смотрите в сторону сброса регистрации, а не удаления узлов.
Отдельно стоит распределённая информационная база (РИБ): она тоже построена на плане обмена, но узлы там — это главная и подчинённые базы единой структуры.
В РИБ нельзя просто удалить узел подчинённой базы, как у обычного обмена: сначала подчинённую базу выводят из РИБ штатными средствами, и только потом убирают её узел. Удаление узла «в лоб» ломает структуру распределённой базы.
Диагностика: сколько узлов и что зависло в очереди
Начните с оценки масштаба — удалять вслепую нельзя.
Откройте Администрирование → Синхронизация данных → Настройки синхронизации данных. Здесь виден список активных настроек: с кем идёт обмен, когда была последняя успешная синхронизация. Настройки, по которым дата обмена «застряла» месяцы назад, — первые кандидаты на удаление.
В карточке настройки синхронизации есть команда, показывающая состав отправляемых данных по узлу — сколько объектов стоит в очереди на выгрузку. Если там десятки тысяч записей, а обмен давно не проходит, очередь нужно либо прокачать обменом, либо сбросить.
Полную картину по всем планам обмена и узлам удобнее смотреть через список самого плана обмена (о том, как его открыть, — в разделе ниже). Обратите внимание на узлы с пустым или странным кодом — это следы оборванных настроек.
У каждого узла платформа хранит два счётчика: номер отправленного сообщения и номер принятого (квитанция партнёра). Если номер отправленного давно обгоняет номер принятого — партнёр не подтверждает приём, обмен односторонний, и очередь будет копиться бесконечно. Такой узел либо чинят со стороны партнёра, либо чистят.
В клиент-серверной базе объём служебных таблиц регистрации удобно оценить средствами СУБД — по размеру таблиц плана обмена. В файловой базе косвенный признак — заметный рост файла 1Cv8.1CD без роста числа документов.
Прежде чем что-либо удалять, зафиксируйте, какие узлы реально используются. Удалённый по ошибке рабочий узел = повторная первоначальная выгрузка всей базы партнёру.
Способ 1. Штатное удаление настройки синхронизации
Это основной и самый безопасный путь. Платформа сама корректно подчистит и узел, и регистрацию.
- Откройте
Администрирование → Синхронизация данных → Настройки синхронизации данных. - Выделите ненужную настройку.
- В командной панели списка выберите удаление настройки синхронизации.
- Подтвердите удаление.
После этого узел помечается на удаление, а регистрация изменений по нему сбрасывается автоматически. Останется убрать помеченный объект: Администрирование → Обслуживание → Удаление помеченных объектов (путь к удалению помеченных в разных конфигурациях похож, название раздела обслуживания может отличаться).
Удаление настройки обрывает обмен с этим партнёром безвозвратно. Если партнёр ещё жив, восстановить обмен можно будет только новой первоначальной синхронизацией.
Если удалять настройку рано (партнёр, возможно, ещё вернётся), её можно не удалять, а временно отключить автоматический обмен в параметрах расписания той же настройки. Тогда узел и история останутся, но очередь перестанет прокачиваться по расписанию. Это промежуточный вариант между «оставить как есть» и «удалить навсегда».
Этот способ закрывает большинство случаев. К остальным переходят, когда штатная настройка почему-то не удаляется или когда узел нужно сохранить.
Способ 2. Удаление узлов вручную через список плана обмена
Пригодится, когда настройки синхронизации в списке уже нет, а узел-«сирота» в плане обмена остался.
Список узлов открывают через Все функции → Планы обмена → <имя нужного плана>. Если пункт Все функции не виден, включите его: Главное меню → Сервис → Параметры → Отображать команду «Все функции».
В открывшемся списке узлов:
- Найдите лишний узел-партнёр (предопределённый узел текущей базы трогать нельзя).
- Пометьте его на удаление.
- Запустите
Удаление помеченных объектов.
Если платформа не даёт удалить узел из-за ссылок, сначала сбросьте по нему регистрацию изменений (способ 3), а уже потом помечайте на удаление.
Ручное удаление узлов — для случаев, когда штатная настройка недоступна. Не используйте его вместо способа 1 для живых обменов: вы рискуете оставить за собой «хвосты» в настройках синхронизации.
Способ 3. Сброс регистрации изменений без удаления узла
Главный приём, когда узел рабочий, а очередь на выгрузку разрослась или встала. Узел остаётся — чистится только регистрация.
В встроенном языке за это отвечает метод УдалитьРегистрациюИзменений. Минимальный код в консоли запросов или внешней обработке:
// Узел берём по коду нужного плана обмена
Узел = ПланыОбмена.ИмяПланаОбмена.НайтиПоКоду("0001");
Если Не Узел.Пустая() Тогда
УдалитьРегистрациюИзменений(Узел);
КонецЕсли;
Вызов без второго параметра снимает регистрацию по узлу целиком. Если нужно убрать очередь только по одному типу объектов, вторым параметром передают метаданные:
УдалитьРегистрациюИзменений(Узел, Метаданные.Справочники.Номенклатура);
После сброса узел «думает», что у партнёра всё актуально. Поэтому следующий шаг — либо запустить обмен с полной выгрузкой (первоначальная синхронизация), либо сверить данные вручную. Иначе партнёр недополучит те изменения, регистрацию которых вы стёрли.
Если чистить нужно сразу по нескольким узлам, их перебирают в цикле и сбрасывают регистрацию по каждому:
Для Каждого Узел Из МассивУзлов Цикл
УдалитьРегистрациюИзменений(Узел);
КонецЦикла;
Массив узлов заранее отбирают по коду или наименованию — чтобы не задеть рабочие. Обратного действия у этого метода нет: восстановить стёртую очередь можно только повторной регистрацией данных или полной выгрузкой.
Запускать такой код лучше в монопольном режиме или в технологическое окно: во время сброса не должно идти регистрации новых изменений, иначе часть очереди пересоберётся.
Перед запуском любого кода, меняющего служебные данные, сделайте резервную копию базы
. Откатить УдалитьРегистрациюИзменений штатно нельзя.
Способ 4. Массовая очистка внешней обработкой
Когда узлов много и часть явно мусорная, перебирать их руками долго. Здесь выручает обработка «Регистрация изменений для обмена данными» — типовой инструмент, который поставляется для управления очередью обмена.
Она позволяет:
- 📊 посмотреть, сколько объектов зарегистрировано по каждому узлу;
- ➖ снять регистрацию по выбранным типам объектов или по узлу целиком;
- ➕ наоборот, зарегистрировать данные заново, если нужно догнать партнёра.
Открывается обработка как внешняя: Файл → Открыть и указать файл .epf, либо через Все функции → Обработки, если она добавлена в конфигурацию. Работа с ней безопаснее голого кода: видно состав очереди до и после, а снятие регистрации идёт пакетно.
Пакетное удаление самих узлов (а не только регистрации) удобно делать той же логикой: собрать коды ненужных узлов, по каждому снять регистрацию, затем пометить на удаление. Так за один проход чистится и очередь, и список узлов.
Отдельный плюс обработки — выборочность по типам объектов. Часто виснет не весь обмен, а очередь по одному-двум справочникам или регистрам: достаточно снять регистрацию точечно по ним, не трогая остальную очередь узла. Голым кодом так тоже можно, но в обработке состав очереди виден на экране, и ошибиться сложнее.
Внешнюю обработку запускайте только из проверенного источника. Обработка с полным доступом к плану обмена может необратимо изменить состав данных.
Сравнение способов: что когда выбрать
| Способ | Когда применять | Риск |
|---|---|---|
| Удаление настройки синхронизации | Обмен с партнёром больше не нужен | Обмен обрывается, нужна новая первоначальная выгрузка |
| Удаление узла вручную | Остался узел-сирота без настройки | Можно оставить «хвосты», если есть связанные настройки |
| Сброс регистрации кодом | Узел рабочий, очередь зависла или раздута | Партнёр недополучит данные без полной выгрузки |
| Внешняя обработка | Много узлов, нужна пакетная чистка | Зависит от прав обработки; обязателен доверенный источник |
Короткий ориентир по выбору — ниже.
УдалитьРегистрациюИзменений или внешней обработкой, затем запустите обмен заново.Профилактика: правила регистрации и порядок обмена
Чтобы план обмена не зарастал заново, стоит закрыть источники мусора.
Удаляйте обмен правильно. Если база-партнёр выводится из работы, не бросайте настройку — удаляйте её через Синхронизация данных. Брошенная настройка так и будет копить регистрацию «в никуда».
Сузьте состав отправляемых данных. В настройке синхронизации задаётся, какие организации и за какой период уходят партнёру. Чем уже отбор, тем меньше изменений регистрируется и тем легче очередь.
Следите за регламентным обменом. Если регламентное задание обмена отключено или падает с ошибкой, очередь растёт, пока кто-нибудь не спохватится. Настройте контроль: проверяйте дату последней синхронизации в списке настроек.
Не держите тестовые узлы в рабочей базе. Эксперименты с обменом удобнее ставить на копии. Один забытый тестовый узел способен годами регистрировать изменения вхолостую.
Планово ужимайте базу. После крупной чистки регистрации физический размер файловой базы сокращают через Тестирование и исправление со сжатием таблиц, в клиент-серверной — средствами СУБД. Пока таблицы не сжаты, освободившееся место остаётся занятым.
Если обмен между вашими базами настроен через типовой механизм синхронизации, менять правила регистрации вручную почти никогда не нужно — достаточно корректно настраивать отбор в самой настройке синхронизации.
Частые вопросы
Можно ли удалить узел «Этот узел»?
Чем удаление узла отличается от удаления настройки синхронизации?
Почему размер базы не уменьшился сразу после очистки?
Тестирования и исправления со сжатием таблиц (в клиент-серверной это делает СУБД).