При работе с программными продуктами 1С, особенно при попытке реанимировать старые базы данных или перейти на новые редакции, часто возникает критическая ошибка: «Запуск программы невозможен: Обновление на текущую версию допустимо только с версии X и выше». При этом в скобках указывается версия Y, которая значительно ниже требуемой. Разберем детально, почему это происходит и как восстановить работоспособность базы, сохранив данные.
Проанализируем ситуацию. Основная причина такого поведения системы — нарушение цепочки обновлений. В 1С процесс обновления состоит из двух этапов:
Если выполнить несколько обновлений в Конфигураторе подряд, не запуская программу в пользовательском режиме между ними, то «версия конфигурации» станет актуальной, а «версия данных» останется старой. В итоге при запуске система видит, что данные соответствуют, например, релизу 3.0.49.27, а текущая конфигурация 3.0.90.53 умеет работать с данными не старше 3.0.61.37. Процедуры обновления для более старых версий из кода новой конфигурации просто удалены разработчиками для оптимизации объема конфигурации.
Самый надежный и правильный метод — это восстановление последовательности. Рассмотрим пошагово, как это сделать:
Если у вас сохранилась резервная копия до начала неудачных манипуляций, вернитесь к ней. Если копии нет, нам придется «обмануть» систему или принудительно вернуть конфигурацию к старому релизу.
Поскольку автоматическое обновление через интернет или .cfu файлы может не сработать, нам потребуется полный файл конфигурации (.cf) того релиза, на котором база «застряла» (в примере автора это 3.0.49.27).
Для Базовых версий процедура загрузки .cf файла ограничена. Попробуем следующий алгоритм:
.cf файлу нужного релиза.После этого необходимо запустить базу в режиме Предприятия, дождаться завершения всех обработчиков обновления и только потом переходить к следующему релизу.
Проанализируем стратегию перехода. Нельзя обновлять базу с релиза 2019 года сразу на релиз 2024 года. В истории развития 1С:Бухгалтерии существуют так называемые «узловые релизы» (checkpoint releases). Это версии, на которые обязательно нужно зайти и выполнить обновление данных, прежде чем двигаться дальше.
Обычно такими релизами являются последние версии минорных веток (например, последний релиз 3.0.60.х, затем 3.0.75.х и т.д.). При обновлении внимательно читайте файл 1cv8upd.htm, входящий в состав дистрибутива — там всегда указано, с каких именно версий допустим переход.
Если у вас версия ПРОФ или вы временно перевели Базовую в ПРОФ (путем изменения типа лицензии), можно принудительно заставить систему пропустить проверку версии. Внимание: этот метод опасен и может привести к логической порче данных, используйте его только для просмотра старых данных!
Разберем, какой код отвечает за проверку. Нам нужно найти общий модуль, отвечающий за обновление. Обычно это ОбновлениеИнформационнойБазыКлиентПереопределяемый или аналогичный в зависимости от версии БСП.
Найдем процедуру ПриОпределенииВозможностиОбновления. Там будет примерно следующий код:
Процедура ПриОпределенииВозможностиОбновления(Знач ВерсияДанных) Экспорт
ДопустимаяВерсия = "3.0.61.37";
// Если ВерсияДанных меньше ДопустимаяВерсия, вызывается исключение
КонецПроцедуры
Специалисты иногда временно меняют значение ДопустимаяВерсия на ту, которая указана в ошибке как «текущая версия данных» (например, 3.0.49.27). Это позволит программе начать процесс обновления. Однако помните: если в коде текущего релиза нет обработчика для данных версии 3.0.49.27, то данные, которые должны были трансформироваться, могут быть просто потеряны или заполнены некорректно.
Если база «зависла» окончательно и штатные методы обновления не помогают, проанализируем вариант с выгрузкой данных. Выгрузка в формат .dt здесь не поможет, так как она переносит и «сломанную» конфигурацию.
Поскольку структура таблиц в базах одинаковая (обе обновлены до 3.0.90.53), данные должны лечь корректно, а системные таблицы, отвечающие за версию обновления, в новой базе уже будут в порядке.
Часто ошибка «Недопустимая попытка обновления с версии 3.0.1.13» возникает при неправильном переходе с редакции 2.0 на 3.0. Рассмотрим важный нюанс: для такого перехода нельзя использовать обычный файл обновления .cfu или стандартный .cf от тройки.
Для перехода разработчики выпускают специальный дистрибутив обновления. В списке релизов на портале ИТС он обычно помечен как «Дистрибутив обновления для перехода с редакции 2.0». Если вы попытаетесь обновиться обычным файлом, система запишет в заголовки базы версию 3.0.1.13 (техническая заглушка), но фактически структура останется от двойки, что и вызовет ошибку при старте «Предприятия».
Чтобы не сталкиваться с подобными ситуациями в будущем, придерживайтесь следующих правил:
EF_...), удалите их перед крупным обновлением, так как они могут блокировать работу механизмов обновления БСП.Подводя итог: если вы уже оказались в ситуации «недопустимого обновления», лучшим решением будет последовательный подъем версии через промежуточные .cf файлы или выгрузка данных XML в чистую базу аналогичного релиза.