Как исправить ошибку недопустимой попытки обновления в периферийной базе РИБ, если нет резервной копии?

Программист 1С v8.3 (Управляемые формы) 1С:Управление торговлей Управленческий учет IT и автоматизация бизнеса
← На главную

При обслуживании распределенных информационных баз (РИБ) нередко возникает критическая ситуация: центральный узел успешно обновляется сразу через несколько релизов, после чего инициируется обмен с точкой. При запуске периферийного узла в режиме «1С:Предприятие» система аварийно завершает работу с сообщением: «Обновление на текущую версию допустимо только с версии X и выше. (Недопустимая попытка обновления с версии Y). Необходимо восстановить информационную базу из резервной копии...». Если резервной копии на точке перед синхронизацией сделано не было, стандартный откат становится невозможным.

Проанализируем природу этой ошибки и разберем по шагам проверенные способы восстановления работоспособности узла с сохранением накопленных данных.

Почему возникает данная ошибка

Механизм распределенных информационных баз на уровне платформы передает только финальное состояние конфигурации (разницу между метаданными узлов на момент формирования пакета). Если в центральной базе последовательно применили несколько обновлений без выполнения промежуточных сеансов обмена с периферией, в подчиненный узел прилетит сразу итоговая структура метаданных.

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

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

Способ 1. Восстановление через отвязку узла и пошаговую загрузку промежуточного релиза

Это наиболее надежный вариант, позволяющий корректно выполнить все обработчики БСП и не потерять локальные данные на точке. Разберем алгоритм по шагам.

  1. Создание физической резервной копии: перед началом любых манипуляций скопируйте текущий файл базы 1Cv8.1CD (или сделайте бэкап средствами СУБД) в отдельный каталог. Даже поврежденная база — это единственный источник несохраненных данных с точки.

  2. Отключение узла от распределенной базы: запустите Конфигуратор на точке. Чтобы снять блокировку изменения конфигурации подчиненного узла, необходимо программно очистить главный узел. Откройте внешнюю обработку или вызовите окно «Произвольный алгоритм» и выполните код:

    ПланыОбмена.УстановитьГлавныйУзел(Неопределено);

    После выполнения данного метода периферийная база станет автономной.

  3. Подготовка промежуточных файлов конфигурации: из дистрибутивов обновлений или из промежуточных копий центральной базы сохраните файл конфигурации промежуточного релиза (в нашем случае — файл .cf версии 11.5.27.41) и файл .cf финального релиза.

  4. Загрузка промежуточной конфигурации: в Конфигураторе автономной базы откройте меню Конфигурация → Загрузить конфигурацию из файла и выберите файл промежуточного релиза 11.5.27.41. Примените изменения по клавише F7. Платформа предупредит об удалении некоторых объектов метаданных, появившихся в более старшей версии — соглашаемся, так как реальных данных в этих новых объектах на точке еще не появлялось.

    Внимание: используйте именно команду полной загрузки конфигурации (CF), а не сравнение/объединение, чтобы не нарушить внутренние идентификаторы метаданных справочника ИдентификаторыОбъектовМетаданных.

  5. Запуск процедур обновления промежуточного релиза: запустите базу в пользовательском режиме «1С:Предприятие». Система обнаружит штатный переход с версии 11.5.26.103 на 11.5.27.41 и без ошибок выполнит все регламентные обработчики обновления данных, перезаписав регистр ВерсииПодсистем.

  6. Накатывание финальной конфигурации: снова закройте предприятие, откройте Конфигуратор и через меню Конфигурация → Загрузить конфигурацию из файла загрузите актуальный .cf финального релиза. Нажмите F7, примените изменения и запустите «1С:Предприятие». Дождитесь завершения оставшихся процедур обновления БСП.

  7. Восстановление привязки к РИБ: после успешного завершения всех обработчиков верните базе статус подчиненного узла РИБ. Выполните программный код:

    
    ГлавныйУзел = ПланыОбмена.ПоПредопределенномуЗначению("ПланОбмена.УдалениеПредопределенных.ЭтотУзел").ПланОбмена; 
    // Либо найдите ссылку на узел центральной базы по коду или наименованию:
    СсылкаНаЦентр = ПланыОбмена[ИмяПланаОбмена].НайтиПоКоду("ЦБ");
    ПланыОбмена.УстановитьГлавныйУзел(СсылкаНаЦентр);
    
  8. Синхронизация счетчиков сообщений: при отвязке и привязке узла значения номеров принятых и отправленных сообщений могут сбиться. Если при первом сеансе обмена платформа выдаст ошибку о недопустимом номере сообщения, выровняйте реквизиты НомерПринятого и НомерОтправленного в свойствах узлов обмена обеих баз.

Способ 2. Спасение локальных данных и пересоздание начального образа

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

Рассмотрим порядок действий:

  1. Отвяжите аварийную базу от РИБ с помощью вызова ПланыОбмена.УстановитьГлавныйУзел(Неопределено); в Конфигураторе.

  2. Чтобы зайти в базу предприятия и выгрузить накопившиеся документы (например, розничные чеки за смену, отчеты о продажах), временно обойдите проверку БСП. Для этого подключитесь к базе через внешнее COM-соединение, либо создайте расширение конфигурации, перехватывающее процедуру проверки версий подсистем при старте, либо воспользуйтесь обработкой прямого чтения таблиц информационной базы.

  3. С помощью универсальной обработки выгрузки и загрузки данных в формате XML выгрузите документы, созданные на точке в период отсутствия связи.

  4. В обновленной центральной базе создайте новый начальный образ для данного периферийного узла.

  5. Разверните новый образ на точке и загрузите в него ранее спасенные оперативные документы через ту же обработку XML.

Данные подходы позволяют полностью исключить потерю данных учета даже в условиях отсутствия бэкапа и восстановить штатную работу распределенной базы 1С.

← На главную