Как исправить ошибку «Обновление на текущую версию допустимо только с версии...» при обновлении 1С:Управление торговлей 11

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

При обновлении типовых и доработанных конфигураций на платформе «1С:Предприятие 8.3» специалисты часто сталкиваются с неприятной ситуацией. В Конфигураторе процесс обновления файлов (CF или CFU) проходит успешно и без предупреждений. Однако при последующем запуске базы данных в режиме «1С:Предприятие» система аварийно завершает работу, выдавая сообщение следующего вида:

«Техническая информация об ошибке записана в журнал регистрации. Обновление на текущую версию допустимо только с версии 11.4.7 и выше (Недопустимая попытка обновления с версии 11.4.6.188)...»

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

Выясняем причину: почему Конфигуратор молчит, а Предприятие выдает ошибку?

Для того чтобы понять природу этой ошибки, проанализируем разницу между обновлением конфигурации и обновлением информационной базы (ИБ). Этот процесс состоит из двух принципиально разных этапов:

  1. Обновление метаданных в Конфигураторе. Когда мы применяем файл обновления (CFU) или загружаем новую конфигурацию (CF), платформа изменяет только структуру таблиц базы данных — добавляет новые реквизиты, удаляет старые объекты, меняет типы данных. Платформе «всё равно», какие данные хранятся внутри этих таблиц, для нее важна лишь техническая совместимость схем.
  2. Обновление данных в режиме «1С:Предприятие». За этот этап отвечает встроенный в конфигурацию программный код БСП. Когда база запускается после изменения метаданных, запускаются специальные процедуры — обработчики обновления. Их задача — физически преобразовать накопленную информацию под требования новой бизнес-логики.

Рассмотрим классический пример, почему нельзя «перепрыгивать» через релизы в режиме Предприятия:

Что произойдет, если мы обновим конфигурацию в Конфигураторе сразу с релиза №1 на релиз №3, минуя запуск Предприятия на релизе №2? Таблица базы данных лишится поля цены еще до того, как программный код успеет перенести эти данные в регистр сведений. В итоге вся история цен будет безвозвратно утеряна. Чтобы не допустить таких критических потерь, разработчики БСП внедрили жесткую проверку номеров версий.

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

Способ 1. Последовательное обновление (Рекомендуемый и самый безопасный метод)

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

Разберем по шагам правильный алгоритм последовательного обновления:

  1. Восстановите информационную базу из резервной копии до состояния, в котором она находилась до неудачной попытки обновления (в нашем случае — до версии 11.4.6).
  2. Откройте Конфигуратор и обновите конфигурацию до промежуточного релиза, который является переходным. Согласно тексту ошибки, нам необходим любой стабильный релиз ветки 11.4.7 (например, 11.4.7.150).
  3. После успешного обновления метаданных в Конфигураторе и нажатия клавиши F7 (принятие изменений) обязательно запустите базу в режиме «1С:Предприятие» от имени пользователя с административными правами.
  4. Дождитесь окончания выполнения всех процедур обновления. Обратите внимание: в современных конфигурациях обработчики делятся на оперативные (выполняются при запуске системы) и отложенные (выполняются в фоновом режиме).
  5. Для контроля перейдите в раздел НСИ и администрирование — Обслуживание — Результаты обновления программы. Убедитесь, что все отложенные обработчики завершены на 100%. Наличие невыполненных регламентных заданий обновления также приведет к ошибке на следующем шаге.
  6. Только после полного завершения обновления данных на промежуточном релизе закройте Предприятие, вернитесь в Конфигуратор и выполните обновление до финального релиза 11.4.9.70.
  7. Снова запустите режим Предприятия для выполнения финальных обработчиков конвертации данных.

Способ 2. Обход проверки через код (Только для демонстрационных и пустых баз)

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

Проанализируем программный код, отвечающий за эту блокировку. Проверка возможности обновления выполняется в общем модуле БСП. Чтобы обойти ее, выполним следующие действия:

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

Процедура ПриОпределенииВозможностиОбновления(Параметры) Экспорт
    Возврат; // Временный обход проверки БСП
    
    // Оригинальный код процедуры...
КонецПроцедуры

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

Способ 3. Ручная корректировка регистра «Версии подсистем»

Если база данных «зависла» в промежуточном состоянии, резервной копии под рукой нет, а запустить Предприятие необходимо, можно прибегнуть к искусственному изменению номера версии непосредственно в базе данных. Для этого нам потребуется скорректировать данные в служебном регистре.

Рассмотрим детально этот процесс:

  1. Поскольку обычным способом запустить Предприятие не удается, нам необходимо открыть таблицу регистра сведений ВерсииПодсистем напрямую. Для этого можно воспользоваться внешней обработкой по чтению/записи наборов записей регистров, либо запустить систему в режиме отладки с пропуском кода ошибки.
  2. В регистре сведений ВерсииПодсистем найдите строку, соответствующую основной конфигурации. Обычно в поле «Имя подсистемы» указано УправлениеТорговлей (или имя вашей отраслевой конфигурации).
  3. В колонке «Версия» будет записано старое значение, например, 11.4.6.188.
  4. Вам необходимо вручную изменить это значение на минимально требуемое для обновления — например, на 11.4.7.1.
  5. Сохраните изменения в регистре.

После этой манипуляции БСП при запуске будет «думать», что база данных уже успешно прошла этап конвертации данных версии 11.4.7, и позволит запустить финальные обработчики для релиза 11.4.9.70.

Внимание! Этот метод является экстремальным. Используя его, вы берете на себя полную ответственность за возможную несогласованность данных. Если в версии 11.4.7 были важные обработчики, переносящие информацию между регистрами, эти данные не перенесутся, что может повлечь за собой ошибки в отчетах по продажам, взаиморасчетам или складским остаткам.

Рекомендация по автоматизации рутины

Если вам приходится регулярно обслуживать большое количество баз данных 1С, которые редко обновляются, последовательный запуск десятков релизов вручную превращается в рутину. Для решения этой проблемы рекомендуется использовать специализированное программное обеспечение для автоматизации обновлений (например, утилиту «Обновлятор-1С» или аналогичные скрипты автоматизации).

Такой софт умеет самостоятельно определять цепочку необходимых релизов, скачивать их с портала техподдержки 1С, последовательно применять файлы обновлений в Конфигураторе, автоматически запускать сеанс Предприятия, контролировать завершение работы фоновых заданий БСП и переходить к следующему шагу без участия системного администратора.

← На главную