В процессе обновления конфигурации 1С, особенно длительного и сложного, как переход с Бухгалтерии 2.0 на 3.0, может произойти сбой: ошибка сервера, отключение электроэнергии или другая непредвиденная ситуация. При попытке возобновить процесс система может выдать сообщение вида: «Обновление на текущую версию допустимо только с версии X. Недопустимая попытка обновления с версии Y». Это ставит в тупик, ведь конфигурация уже загружена, а процедуры обновления данных не запускаются. Давайте разберемся, почему так происходит и как исправить ситуацию.
Чтобы понять, как решить проблему, сначала проанализируем её корень. Процесс обновления в 1С состоит из двух основных этапов:
В нашем случае сбой произошел между этими двумя этапами. Конфигурация уже обновилась (первый этап завершен), но обработчики обновления не отработали (второй этап не начался или прервался). Система хранит служебную информацию о текущей версии данных, и перед запуском обработчиков она проверяет, соответствует ли эта версия той, с которой должно начинаться обновление. Поскольку обработчики не завершились, в служебных записях остался номер старой версии. В результате возникает конфликт: структура конфигурации уже новая, а версия данных – еще старая. Система видит это несоответствие и блокирует дальнейшие действия, выдавая ошибку.
Раньше во многих конфигурациях номер релиза хранился в константах. Однако в современных решениях на базе Библиотеки стандартных подсистем (БСП), к которым относится и 1С:Бухгалтерия 3.0, этот механизм устроен иначе. Информация о версиях теперь хранится в специальном регистре сведений Версии подсистем.
Именно в этот регистр смотрит система обновления. Наша задача — скорректировать в нем запись, чтобы "убедить" программу, что она находится в правильном состоянии для запуска нужных обработчиков.
ВНИМАНИЕ! Перед выполнением любых действий с данными информационной базы обязательно сделайте резервную копию! Любая ошибка при ручном редактировании служебных данных может привести к полной неработоспособности базы.
Рассмотрим по шагам, как исправить информацию о версии.
Прочитаем внимательно текст ошибки: «Обновление на текущую версию допустимо только с версии 3.0.61.37 и выше. (Недопустимая попытка обновления с версии 3.0.19.28)». Из этого сообщения мы получаем два ключевых значения:
3.0.19.28 — это "неправильная" версия, которая сейчас записана в регистре.3.0.61.37 — это "правильная" версия, которую система ожидает увидеть, чтобы начать обновление. Именно это значение нам и нужно будет установить.Напрямую через пользовательский интерфейс регистр Версии подсистем недоступен для редактирования. Воспользуемся одним из следующих способов:
Версии подсистем.Открыв регистр, мы увидим список подсистем и их версий. Нам нужно найти запись, в которой в поле "Версия" указано значение из ошибки (в нашем примере — 3.0.19.28). Скорее всего, это будет основная подсистема конфигурации, например, с именем "СтандартныеПодсистемы" или "БухгалтерияПредприятия".
Откройте эту запись и измените значение в поле "Версия" на то, которое система ожидает (в нашем примере — 3.0.61.37). Сохраните изменения, нажав "Записать и закрыть".
После сохранения изменений закройте программу и запустите ее снова. Теперь система, проверив регистр Версии подсистем, увидит "правильную" версию и должна автоматически запустить процедуры обновления данных. Вы увидите окно "Выполняется обновление версии программы...", которое может работать довольно долго в зависимости от объема базы.
Если описанный выше способ не помог или кажется слишком рискованным, существуют и другие подходы.
Иногда, если сбой произошел не на этапе проверки версий, а уже во время выполнения обработчиков, их можно запустить повторно. Для этого перейдите в раздел "Администрирование" -> "Обслуживание" -> "Регламентные операции" и найдите пункт "Отложенное обновление информационной базы". Если он активен, можно попробовать запустить его вручную. Однако в ситуации, описанной в теме, этот метод, скорее всего, не сработает, так как система блокирует запуск на более раннем этапе.
Это метод для опытных программистов, который требует понимания внутренней структуры конфигурации. Суть в том, чтобы найти и выполнить нужные экспортные процедуры обновления программно.
ОбновлениеИнформационнойБазы, например, ОбновлениеИнформационнойБазыБухгалтерияПредприятия.ВыполнитьОбновление().
ОбновлениеИнформационнойБазыБухгалтерияПредприятия.ВыполнитьОбновление();
Этот способ позволяет обойти стандартные проверки, но его следует применять с большой осторожностью, так как вы берете на себя контроль над процессом, который обычно автоматизирован.
Проблемы при обновлении часто возникают в сильно доработанных конфигурациях. Чтобы избежать их в будущем, рассмотрим современный подход к доработкам — расширения конфигурации. Перенос большей части изменений (новых отчетов, обработок, печатных форм и даже измененных форм существующих объектов) в расширения позволяет оставлять основную конфигурацию на полной поддержке. В этом случае процесс обновления типовой конфигурации становится в разы проще, быстрее и безопаснее, а вам остается лишь адаптировать расширение, если изменения в новой версии затронули используемые в нем объекты.