Переход с отраслевого решения, такого как БИТ.Аппетит, обратно на типовую конфигурацию 1С:Бухгалтерия предприятия 3.0 (БП 3.0) — задача не самая тривиальная. Казалось бы, достаточно загрузить типовой файл конфигурации .cf поверх существующей базы, и система должна стать типовой. Однако на практике разработчики часто сталкиваются с ошибкой парсинга версии: «неправильный формат строкаверсии2». Это происходит потому, что Библиотека стандартных подсистем (БСП) хранит информацию о версиях не только в метаданных, но и в глубинах самой базы данных. Разберем подробно, почему возникает эта ошибка и как ее устранить несколькими способами.
Проанализируем механизм работы обновления. При запуске программы в режиме «1С:Предприятие» срабатывают процедуры БСП, которые сравнивают версию конфигурации из метаданных с версией, зафиксированной в базе при последнем успешном обновлении. Отраслевые решения часто имеют расширенный формат номера версии (например, пять групп цифр вместо стандартных четырех: 3.0.100.20.1). Типовая БП 3.0 ожидает строго формат X.X.X.X. Когда стандартная функция СравнитьВерсии натыкается на «лишние» сегменты или специфические строковые идентификаторы, оставшиеся от БИТ.Аппетит, происходит исключение, и процесс обновления прерывается.
Рассмотрим основные места, где может «спрятаться» старая версия отраслевого решения, и способы их очистки.
Как показывает практика практикующих специалистов, одним из самых эффективных методов является работа с системным регистром. Выясним причину: в хранилище значений одного из параметров могут быть записаны данные о проверках ведения учета, привязанные к старой версии.
ПараметрыРаботыПрограммы.СтандартныеПодсистемы.КонтрольВеденияУчета.СистемныеПроверки.Посмотрим на ситуацию с другой стороны. Информация об обновлениях также хранится в константе СведенияОбОбновленииИБ. Отредактировать ее напрямую в пользовательском режиме невозможно, так как это сложное хранилище значения.
Для исправления выполним следующие действия:
СведенияОбОбновленииИБ из чистой базы.Если предыдущие шаги не помогли, разберем более глубокие уровни хранения данных БСП. Система может пытаться инициализировать подсистемы, которых в метаданных уже нет, но записи о которых остались в таблицах базы данных.
Проверим и очистим следующие объекты:
ВерсииПодсистем: Проанализируем список записей. Если там остались строки, относящиеся к БИТ или другим отраслевым префиксам, их необходимо удалить.ИдентификаторыОбъектовМетаданных: Иногда БСП «залипает» на старых объектах. Помогает полная очистка этого справочника. После очистки при запуске система попытается пересоздать их, но для этого нужно сначала успешно войти в базу.Рассмотрим вариант, когда мы можем запустить внешнюю обработку или выполнить код через консоль разработчика. Мы можем принудительно установить нужную нам версию основной конфигурации, используя экспортные методы самой БСП.
Выполним следующий программный код:
// Установка версии основной конфигурации для БСП
ВерсияБП = "3.0.123.45"; // укажите вашу актуальную версию типовой БП
СтандартныеПодсистемыСервер.УстановитьВерсиюПодсистемы("БухгалтерияПредприятия", ВерсияБП);
// Если система все еще видит старую подсистему БИТ, затрем её версию
СтандартныеПодсистемыСервер.УстановитьВерсиюПодсистемы("БИТ_Аппетит", "");
После выполнения этого кода запустите базу с параметром /С ЗапуститьОбновлениеИнформационнойБазы.
Если ошибка формата версии не дает даже зайти в программу для запуска обработок, проанализируем возможность временного отключения проверки. Мы можем создать небольшое расширение конфигурации, в котором перехватим процедуру, выдающую исключение.
СравнитьВерсии или место в модуле ОбновлениеИнформационнойБазыСлужебный, где происходит прерывание.&Вместо или &Перед), который будет игнорировать некорректный формат или возвращать 0 в случае ошибки сравнения.Не забудем про еще один важный момент — серверный кэш. При переходе с отраслевых решений, где активно используются защищенные модули, информация о них может кэшироваться на стороне сервера 1С:Предприятие.
Выполним следующие шаги по очистке:
snccntx в каталоге описания информационной базы на сервере.Резюмируя: основная причина ошибки кроется в том, что после удаления метаданных отраслевого решения в базе данных остаются строковые значения версий в системных регистрах (ПараметрыРаботыПрограммы, ВерсииПодсистем) и константах (СведенияОбОбновленииИБ). Последовательная очистка этих данных типовыми значениями из пустой базы полностью решает проблему перехода на типовую 1С:Бухгалтерия 3.0.