Что делать, если обновление 1С:Бухгалтерии прервалось с ошибкой 'Недопустимая попытка обновления с версии...'?

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

В процессе обновления конфигурации 1С, особенно длительного и сложного, как переход с Бухгалтерии 2.0 на 3.0, может произойти сбой: ошибка сервера, отключение электроэнергии или другая непредвиденная ситуация. При попытке возобновить процесс система может выдать сообщение вида: «Обновление на текущую версию допустимо только с версии X. Недопустимая попытка обновления с версии Y». Это ставит в тупик, ведь конфигурация уже загружена, а процедуры обновления данных не запускаются. Давайте разберемся, почему так происходит и как исправить ситуацию.

Выясним причину проблемы

Чтобы понять, как решить проблему, сначала проанализируем её корень. Процесс обновления в 1С состоит из двух основных этапов:

  1. Обновление конфигурации базы данных. На этом этапе платформа 1С применяет изменения в структуре метаданных: добавляет новые справочники, документы, регистры, изменяет существующие. Это то, что мы делаем в Конфигураторе.
  2. Выполнение обработчиков обновления. После изменения структуры метаданных необходимо обновить сами данные в информационной базе. Для этого в конфигурации существуют специальные процедуры (обработчики обновления), которые запускаются при первом входе в программу в режиме "1С:Предприятие". Они преобразуют данные, заполняют новые реквизиты, переносят информацию из старых структур в новые.

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

Где хранится версия для обновления?

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

Именно в этот регистр смотрит система обновления. Наша задача — скорректировать в нем запись, чтобы "убедить" программу, что она находится в правильном состоянии для запуска нужных обработчиков.

Пошаговое решение: корректируем регистр "Версии подсистем"

ВНИМАНИЕ! Перед выполнением любых действий с данными информационной базы обязательно сделайте резервную копию! Любая ошибка при ручном редактировании служебных данных может привести к полной неработоспособности базы.

Рассмотрим по шагам, как исправить информацию о версии.

  1. Определяем целевую версию

    Прочитаем внимательно текст ошибки: «Обновление на текущую версию допустимо только с версии 3.0.61.37 и выше. (Недопустимая попытка обновления с версии 3.0.19.28)». Из этого сообщения мы получаем два ключевых значения:

    • 3.0.19.28 — это "неправильная" версия, которая сейчас записана в регистре.
    • 3.0.61.37 — это "правильная" версия, которую система ожидает увидеть, чтобы начать обновление. Именно это значение нам и нужно будет установить.
  2. Получаем доступ к регистру

    Напрямую через пользовательский интерфейс регистр Версии подсистем недоступен для редактирования. Воспользуемся одним из следующих способов:

    • Через "Все функции". Запустите 1С в режиме "Предприятие". В главном меню выберите "Сервис и настройки" -> "Все функции". Если этого пункта нет, его нужно включить: "Сервис и настройки" -> "Настройки" -> "Параметры" -> установить флажок "Отображать команду 'Все функции'". В открывшемся списке найдите "Регистры сведений", раскройте список и выберите Версии подсистем.
    • Через "Функции для технического специалиста". В более новых версиях платформы этот режим заменяет "Все функции" и предлагает более широкие возможности.
  3. Редактируем запись

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

    Откройте эту запись и измените значение в поле "Версия" на то, которое система ожидает (в нашем примере — 3.0.61.37). Сохраните изменения, нажав "Записать и закрыть".

  4. Перезапускаем обновление

    После сохранения изменений закройте программу и запустите ее снова. Теперь система, проверив регистр Версии подсистем, увидит "правильную" версию и должна автоматически запустить процедуры обновления данных. Вы увидите окно "Выполняется обновление версии программы...", которое может работать довольно долго в зависимости от объема базы.

Альтернативные и продвинутые методы

Если описанный выше способ не помог или кажется слишком рискованным, существуют и другие подходы.

Запуск отложенного обновления

Иногда, если сбой произошел не на этапе проверки версий, а уже во время выполнения обработчиков, их можно запустить повторно. Для этого перейдите в раздел "Администрирование" -> "Обслуживание" -> "Регламентные операции" и найдите пункт "Отложенное обновление информационной базы". Если он активен, можно попробовать запустить его вручную. Однако в ситуации, описанной в теме, этот метод, скорее всего, не сработает, так как система блокирует запуск на более раннем этапе.

Принудительный запуск обработчиков через код

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

  1. Найдите в конфигураторе общий модуль, отвечающий за обновление. Его имя обычно содержит префикс ОбновлениеИнформационнойБазы, например, ОбновлениеИнформационнойБазыБухгалтерияПредприятия.
  2. Внутри этого модуля найдите экспортную процедуру, которая запускает весь процесс, например, ВыполнитьОбновление().
  3. С помощью внешней обработки или через "Функции для технического специалиста" выполните этот код. ОбновлениеИнформационнойБазыБухгалтерияПредприятия.ВыполнитьОбновление();

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

Рекомендация на будущее: используйте расширения

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

← На главную