При попытке удалить узел плана обмена в конфигурациях на обычных формах (в частности, в «1С:Бухгалтерия предприятия 2.0») специалисты часто сталкиваются с ситуацией, когда система выдает предупреждения о нехватке прав или выводит обширный список ссылок, мешающих удалению объекта. Проанализируем, почему возникает эта проблема и как корректно очистить базу от неиспользуемого узла обмена.
Выясним, какие технические факторы блокируют удаление узла:
Соответствие объектов для обмена, Состояния обменов данными, Настройки выполнения обменов.Этот узел (обозначающий текущую информационную базу) удалить физически нельзя — это жесткое ограничение платформы 1С.Перед тем как удалять сам узел, необходимо обязательно очистить все накопленные для него изменения. Сделать это можно двумя способами:
Способ 1. С помощью типовой обработки
Откроем обработку Регистрация изменений для обмена данными, выберем нужный узел плана обмена и выполним команду отмены регистрации для всех объектов узла.
Способ 2. Программный сброс регистрации
Рассмотрим вариант очистки регистрации с помощью встроенного языка 1С. Для этого выполним следующий код во внешней обработке или консоли встроенного языка:
// Передаем ссылку на узел без второго параметра для полной очистки таблицы изменений
ПланыОбмена.УдалитьРегистрациюИзменений(СсылкаНаУзел);
После снятия регистрации изменений найдем все оставшиеся в базе ссылки на удаляемый узел. Для этого разберем применение внешних обработок с диска ИТС:
ПоискИЗаменаЗначений или Поиск ссылок на объекты.Когда все ссылки очищены и регистрация снята, перейдем к непосредственному удалению элемента.
Интерактивное удаление:
В форме списка плана обмена воспользуемся пунктом меню Действия → Удалить непосредственно (если у пользователя есть соответствующие права в роли) либо стандартно пометим элемент на удаление и запустим процедуру Удаление помеченных объектов.
Программное удаление:
Если требуется удалить узел программно, применим следующий алгоритм:
ОбъектУзел = СсылкаНаУзел.ПолучитьОбъект();
ОбъектУзел.Удалить();
Если удаляемый узел являлся главным в распределенной информационной базе (РИБ), перед его удалением или отсоединением базы от РИБ необходимо программно сбросить признак главного узла:
ПланыОбмена.УстановитьГлавныйУзел(Неопределено);
После отвязки от главного узла база переходит в автономный режим, и ненужные узлы обмена можно безопасно удалить из системы.