Установка главного узла невозможна. В базе существуют расширения, переданные из другого главного узла. Как 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.

image_pdfimage_print

fixin

Программирую на 1С с 1999 года. В 1С просто Гений. В 2020 году ушел из офиса на вольные хлеба фриланса. Принимаю заказы.

Вам может также понравиться...

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *