Как исправить ошибку «неправильный формат строкаверсии2» при переходе с отраслевого решения на типовую 1С:Бухгалтерия?

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

Переход с отраслевого решения, такого как БИТ.Аппетит, обратно на типовую конфигурацию 1С:Бухгалтерия предприятия 3.0 (БП 3.0) — задача не самая тривиальная. Казалось бы, достаточно загрузить типовой файл конфигурации .cf поверх существующей базы, и система должна стать типовой. Однако на практике разработчики часто сталкиваются с ошибкой парсинга версии: «неправильный формат строкаверсии2». Это происходит потому, что Библиотека стандартных подсистем (БСП) хранит информацию о версиях не только в метаданных, но и в глубинах самой базы данных. Разберем подробно, почему возникает эта ошибка и как ее устранить несколькими способами.

Почему возникает ошибка формата версии?

Проанализируем механизм работы обновления. При запуске программы в режиме «1С:Предприятие» срабатывают процедуры БСП, которые сравнивают версию конфигурации из метаданных с версией, зафиксированной в базе при последнем успешном обновлении. Отраслевые решения часто имеют расширенный формат номера версии (например, пять групп цифр вместо стандартных четырех: 3.0.100.20.1). Типовая БП 3.0 ожидает строго формат X.X.X.X. Когда стандартная функция СравнитьВерсии натыкается на «лишние» сегменты или специфические строковые идентификаторы, оставшиеся от БИТ.Аппетит, происходит исключение, и процесс обновления прерывается.

Рассмотрим основные места, где может «спрятаться» старая версия отраслевого решения, и способы их очистки.

Способ 1: Очистка регистра «Параметры работы программы»

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

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

Способ 2: Корректировка константы «Сведения об обновлении ИБ»

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

Для исправления выполним следующие действия:

  1. Создадим или возьмем пустую типовую базу БП 3.0 той же версии, к которой мы приводим нашу конфигурацию.
  2. Используя обработку «Выгрузка и загрузка данных XML», выгрузим значение константы СведенияОбОбновленииИБ из чистой базы.
  3. Загрузим этот XML-файл в нашу базу, где возникает ошибка. Это перезапишет структуру версий на правильную, типовую.

Способ 3: Работа с регистром «Версии подсистем» и идентификаторами

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

Проверим и очистим следующие объекты:

  1. Регистр сведений ВерсииПодсистем: Проанализируем список записей. Если там остались строки, относящиеся к БИТ или другим отраслевым префиксам, их необходимо удалить.
  2. Справочник ИдентификаторыОбъектовМетаданных: Иногда БСП «залипает» на старых объектах. Помогает полная очистка этого справочника. После очистки при запуске система попытается пересоздать их, но для этого нужно сначала успешно войти в базу.

Способ 4: Программный сброс версий через консоль кода

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

Выполним следующий программный код:


// Установка версии основной конфигурации для БСП
ВерсияБП = "3.0.123.45"; // укажите вашу актуальную версию типовой БП
СтандартныеПодсистемыСервер.УстановитьВерсиюПодсистемы("БухгалтерияПредприятия", ВерсияБП);

// Если система все еще видит старую подсистему БИТ, затрем её версию
СтандартныеПодсистемыСервер.УстановитьВерсиюПодсистемы("БИТ_Аппетит", "");

После выполнения этого кода запустите базу с параметром /С ЗапуститьОбновлениеИнформационнойБазы.

Временный обход проверки через расширение

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

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

Важные рекомендации по очистке кэша

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

Выполним следующие шаги по очистке:

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

← На главную