Установка главного узла невозможна. В базе существуют расширения, переданные из другого главного узла. Как 1С убивает РИБ.
Скопировал центральную базу в периферийную и хотел сделать из нее периферийную, но получаю ошибку при установке главного узла:

Ошибка при вызове метода контекста (УстановитьГлавныйУзел)
{ВнешняяОбработка.УстановкаОтключениеГлавногоУзлаРИБ.Форма.ФормаУправляемая.Форма(34)}:ПланыОбмена.УстановитьГлавныйУзел(Объект.ГлавныйУзел);
{ВнешняяОбработка.УстановкаОтключениеГлавногоУзлаРИБ.Форма.ФормаУправляемая.Форма(41)}:ПодключитсяКГлавномуУзлуНаСервере();
[ОшибкаВоВремяВыполненияВстроенногоЯзыка]
по причине:
Установка главного узла невозможна.
В базе существуют расширения, переданные из другого главного узла.
[ОшибкаИспользованияВстроенногоЯзыка]
Удалил все расширения, которые не используются в РИБ, не помогло. Попробовал убрать галочку «Используется в РИБ», не помогло:

Выгрузил из центральной базы конфигурацию, загрузил, не помогло.
Загрузил конфигурацию еще раз, не помогло.
Выгружать начальный образ не вариант — база огромная, будет идти несколько суток, блокируя базу. К тому же я очень быстро все сделал, на лету, через выгрузку из SQL. Хотелось бы получить быстрый результат.
Попробовал типовую привязку к главному узлу, установил константу «Главный узел»:

При запуске предложило восстановить связь с узлом:

Нажал восстановить, но все та же ошибка.
Сброс главного узла через конфигуратор /ResetMasterNode не помогает. Проблема все та же, уже типовой код выдает ошибк:
[ОшибкаВоВремяВыполненияВстроенногоЯзыка]
по причине:
Расширение конфигурации узла распределенной ИБ не найдено!
Доработки
В какой-то момент получил даже такую ошибку:
В итоге все же удалил расширения, потому что следовал золотому правилу РИБ — все новые реквизиты в конфигурацию, а не в расширение. Но как быть тем, у кого данные в расширениях?
После этого главный узел подключился. Напоминаю, что после подключения главного узла надо перезапустить службу агента 1С, иначе 1С не видит, что есть главный узел.
Потом расширения добавил заново, но у них не появился значок РИБ.
И обмен начал ругаться, что нет нужных расширений или даже так:

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

Видно по сравнению с полным расширением:

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

Но слишком много глупой ручной работы и как это автоматизировать, пока не ясно.
Вот как например, зарегистрировать расширение полностью? На заре РИБ с расширениями все расширения передавались целиком и только потом это «оптимизировали«.
Думаю, можно как-то программно загружать расширение из файла обмена, чтобы 1С думала, что получает его из главного узла. Но этот полезный для всех код надо еще написать.
Судя по всему, контроль с подключением узла добавили только на последних релизах, потому что тем по ошибке мало, нашел только одно обсуждение на Мисте.
На самом ИТС пишется скупо:
Если в информационной базе имеются расширения, которые поступили с помощью сообщений обмена распределенной информационной базы, то в такой информационной базе с помощью метода ГлавныйУзел() менеджера планов обмена можно установить только тот узел, из которого поступили расширения или отключить информационную базу от распределенной системы (установить значение Неопределено). В частности, это означает, что без удаления расширений невозможно переключить информационную базу из одного распределенной информационной базы в другую с помощью смены главного узла.
Тест на релизе 8.23
Решил проверить, всегда ли 1С себя так вела.
Создал пустую базу данных, добавил план обмена с РИБ и расширениями:

Добавил справочник Номенклатура и включил его в этот план обмена.
Добавил расширение, используемое в РИБ:

Создал узел Центр:



Нажал «Подключиться к главному узлу» и ошибок мне не выдало. Т.е. этого контроля на 23 релизе еще не было.
Но зашел в конфигуратор и увидел, что расширение не встало в РИБ:

Как его туда подключить, не понятно. То есть проблема была еще с 23 релиза. Почему раньше не сталкивался, не знаю. Возможно, в ранних релизах расширения соотносились по имени и при обмене включались в РИБ, а т.к. контроля подключения не было, ошибка не возникала.
Оставляю вам для экспериментов базу в формате 23 релиза, где отключил главный узел:
Выводы
1С планомерно, медленно и верно убивает РИБ. Для ее обслуживания нужно все больше и больше квалификации. Типовые весьма проблематично обновляются в РИБ. Стоимость владения РИБ становится чрезмерно дорогой.
А вот этот шаг уже убийство РИБ не на уровне типовых конфигураций, а на уровне платформы.
Могу пока дать совет не добавлять никаких данных в расширения с РИБ. Что будет дальше — неведомо. 1С опять выкрутит руки, очевидно.
Среда: УТ 11.5.25.105, 1С: 8.5.1.1150.




Свежие комментарии