Последствия обновления УНФ 1.6 на 3.0 в РИБ
У центральной базы есть одна периферийная (зеркальная копия).
После обновления на FTP выгрузился файл размером 1,56 Гб в архиве:
На сервере-получателе не грузится с FPT. Поэтому поставил копирование через свой компьютер:
В центре отключил сценарии синхронизации с этой базой. На это время нужно прекратить изменения конфигурации и расширений, чтобы данные успешно принялись базой-получателем и в центре принялось подтверждение получения данных.
Файл скачался примерно за 20 минут.
В не сжатом виде файл занимал 3.6 Гб:
ВАЖНО: Теперь, чтобы периферийная база не пробовала заново скачивать и загружать большой файл обмена, удаляю его на FTP (ориентируюсь на размер файла при выборе, что удалять):
Поставил распаковываться файл, распаковалось довольно быстро, минут за 5:
Далее упаковал в ZIP архив блоками по 30 Мб:
Упаковалось тоже быстро:
Сформировался архив из 53 частей:
Поставил копировать в RPD-сеанс через буфер обмена, прогноз был на 2 часа:
Файлы успешно передались с первого раза, без обрывов.
Распаковываю XML файл:
Через функции технического специалиста открываю План обмена — Распределенная информационная база:
И на базе II делаю Еще — Прочитать изменения:
Выбираю XML файл, но окно не закрывается сразу:
Если выбрать еще раз, то выдает ошибку:
Значит, 1С грузит файл обмена в базу в асинхронном режиме.
Наконец — появилось сообщение о загрузке в правом нижнем углу:
По окончании было выдано сообщение:
Закрываем 1С-Предприятие, переходим в Конфигуратор. И тут нас ждет интересный сюрприз:
Устанавливаю 8.3.21.1775:
После обновления платформы прописываю ключ debug в службе сервера 1С в ветке реестра «Компьютер\HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services\1C:Enterprise 8.3 Server Agent (x86-64)«:
И перезапускаю службу агента сервера 1С:
Теперь в конфигураторе видно по синему бочонку, что пришли изменения:
Обновляю конфигурацию и запускаю 1С, но 1С не дает зайти:
Поэтому запускаю 1С из конфигуратора, указав параметр ОтключитьЛогикуНачалаРаботыСистемы:
При запуске выдается сообщение:
Сам конфигуратор на всякий случай закрываю.
Захожу в 1С по ссылке e1cib/list/ПланОбмена.Полный в список узлов обмена и еще раз (как и в прошлый раз) запускаю чтение из файла.
После чтения выдалось сообщение, что получены изменения расширений и нужно перезапустить 1с. Перезапускаю в обычном режиме. Опять получаю окошко «Повторная синхронизация данных», запустить 1С не дает.
Тогда опять запускаю через конфигуратор с отключением логики начала работы системы.
Захожу в настройки синхронизации данных и запускаю синхронизацию, как обычно:
Почему-то 1С долго висит на загрузке данных. Оставляю ее так. Висит долго, ничего не происходит. Отменяю.
Проверяю в большом файле номера сообщений:
Сообщение в CH имеет номер 30045.
Нажимаю в периферийной базе кнопку «Состав отправляемых данных»:
Вижу, что принято сообщение 30040:
Значит, большой файл еще не подгрузился. Видимо, после обновления расширений нужно еще раз прочитать. Запускаю в третий раз чтение из файла, закрыв конфигуратор.
Ошибка при вызове метода контекста (ПрочитатьИзменения)
{mngbase/DataExchangeReadChanges.lf(92)}:ExchangePlans.ReadChanges(Message, TransactionSize);
{mngbase/DataExchangeReadChanges.lf(21)}:ReadChangesAtServer(URL, TransactionSize);
[ОшибкаВоВремяВыполненияВстроенногоЯзыка]
по причине:
Ошибка при выполнении обработчика - 'ПередЗаписью'
по причине:
Ошибка при работе со справочником "Идентификаторы объектов метаданных".
Критичные изменения могут быть выполнены только
в главном узле распределенной информационной базы.
Состав требуемых изменений см. в журнале регистрации.
[ОшибкаВоВремяВыполненияВстроенногоЯзыка, ИсключениеВызванноеИзВстроенногоЯзыка]
Это ошибка отсюда:
Поиском нахожу возможное решение проблемы:
Пробую.
Отключаю главный узел:
Далее из конфигуратора запускаем 1С для запуска обновления ИБ
Получаем предупреждение от 1С:
Выбираем Отключить. И получаем какую-то ошибку:
Поле объекта не обнаружено (ВидыСубконто)
{ОбщийМодуль.СтандартныеПодсистемыСервер.Модуль(3421)}:Для Каждого СтрокаВидаСубконто Из Объект.ВидыСубконто Цикл
{ОбщийМодуль.СтандартныеПодсистемыСервер.Модуль(3266)}:СохранитьСуществующиеПредопределенныеОбъектыПередСозданиемНедостающих(ОбъектМетаданных,
{ОбщийМодуль.СтандартныеПодсистемыСервер.Модуль(968)}:СоздатьНедостающиеПредопределенныеДанные(ОбъектыМетаданных);
{ОбщаяФорма.ВосстановлениеСвязиСГлавнымУзлом.Форма(86)}:СтандартныеПодсистемыСервер.ВосстановитьПредопределенныеЭлементы();
{ОбщаяФорма.ВосстановлениеСвязиСГлавнымУзлом.Форма(45)}:ОтключитьНаСервере();
[ОшибкаВоВремяВыполненияВстроенногоЯзыка, ОшибкаИспользованияВстроенногоЯзыка]
Не хочет 1С сдаваться! ОК, боремся дальше.
Запускаем в режиме ОтключитьЛогикуНачалаРаботыСистемы.
Будем выполнять код в консоли кода:
Справочники.ИдентификаторыОбъектовМетаданных.ВыполнитьОбновлениеДанных(Истина, ЛОЖЬ,Ложь)
Получаем сообщение об ошибке:
Приходится смотреть по коду, как подтвердить:
Находим через все функции константу «Главный узел» и очищаем:
После этого приходится перезайти в 1С и код обновления идентификаторов отрабатывает.
Подключаем обратно главный узел. И константу «Главный узел» заодно устанавливаем.
Запускаем в режиме ОтключитьЛогикуНачалаРаботыСистемы.
И в четвертый раз пробуем загрузить файл изменений.
На этот раз получаю ошибку:
Ошибка при вызове метода контекста (ПрочитатьИзменения)
{mngbase/DataExchangeReadChanges.lf(92)}:ExchangePlans.ReadChanges(Message, TransactionSize);
{mngbase/DataExchangeReadChanges.lf(21)}:ReadChangesAtServer(URL, TransactionSize);
[ОшибкаВоВремяВыполненияВстроенногоЯзыка]
по причине:
Не удалось записать: "Событие"!
[ОшибкаХранимыхДанных]
На этом я сдался и решил, что лучше скопировать базу целиком и сделать из неё РИБ. При этом не забыть очистить изменения для плана обмена перед выгрузкой в DT, чтобы эти изменения заново не пошли по обмену.
Объем: 1.5 час.
1 комментарий
[…] уже сталкивался с этой ошибкой ранее, но не смог ее побороть. Тогда я просто сделал РИБ из […]