При обслуживании информационных баз 1С часто возникает ситуация, когда конфигурация отстает от актуального выпуска на несколько месяцев или даже лет. Среди специалистов ведутся споры: можно ли сэкономить время и разом загрузить итоговый файл конфигурации .cf, или же необходимо последовательно накатывать каждый промежуточный файл обновления .cfu?
В этой статье мы подробно проанализируем техническую сторону данного процесса, разберем работу подсистемы «Обновление информационной базы» из Библиотеки Стандартных Подсистем (БСП) и выясним, к каким последствиям может привести скачок через несколько релизов.
Многие разработчики полагают, что при загрузке итогового файла .cf система 1С сама корректно распознает пропущенные релизы и выполнит все необходимые алгоритмы конвертации данных. Отчасти это правда: в типовых конфигурациях запуск обработчиков данных отвечает Библиотека Стандартных Подсистем (БСП).
При старте программы в режиме «1С:Предприятие» БСП сравнивает текущий номер версии конфигурации, записанный в регистре сведений ВерсииПодсистем, с номером версии измененной конфигурации метаданных. Если версия метаданных выше, система определяет список процедур обновления, которые должны последовательно выполниться от старого номера к новому.
Однако успешность выполнения этого процесса зависит от того, как именно менялась структура данных СУБД между релизами.
Рассмотрим главные технические опасности, с которыми можно столкнуться при использовании метода загрузки .cf с пропуском промежуточных версий:
Реквизит1 в новый Реквизит2. Для этого Реквизит1 переименовывается в Удалить_Реквизит1, а в БСП закладывается обработчик, который при запуске переносит значения. В последующем релизе реквизит Удалить_Реквизит1 окончательно удаляется из метаданных. Если мы сразу загружаем итоговый .cf, платформа на уровне СУБД удаляет столбец Удалить_Реквизит1 еще до запуска режима «1С:Предприятие». Когда после этого БСП пытается выполнить обработчик переноса данных из пропущенного релиза, она обращается к реквизиту, которого физически уже нет в базе, что приводит к критической ошибке или полной потере информации..cf приведет к затиранию доработок или к потере связи с базовой конфигурацией поставщика. В дальнейшем накатить стандартный файл обновления .cfu станет невозможно.Рассмотрим, как устроена процедура автообновления, заложенная разработчиками платформы. В режиме «1С:Предприятие» при запуске поиска и установки обновлений программа скачивает цепочку файлов .cfu и формирует сценарии их последовательного применения.
Алгоритм работает по следующей схеме:
.cfu один за другим за один сеанс работы. При этом после каждого файла выполняется обновление конфигурации базы данных (команда /UpdateBD).Такой подход гарантирует сохранность конфигурации поставщика и верное построение диффов, однако риски реструктуризации СУБД (описанные в первом пункте) частично сохраняются и при пакетном применении .cfu, если между релизами с удалением объектов не выполнялся запуск режима «Предприятие».
Для безошибочного и безопасного обновления информационных баз с большим пропуском релизов рекомендуем придерживаться следующих правил:
1cv8upd.htm. Проанализируем список релизов, с которых разрешен прямой переход на данную версию..cf или .cfu, но не используем команду загрузки конфигурации.
1cv8.exe ENTERPRISE /F "C:\Bases\Trade" /C СтартОбновленияИнформационнойБазы
Вывод: Обновление через прямую загрузку .cf на типовых конфигурациях с большим пропуском релизов — это высокорискованная операция, которая может привести к неявной потере данных и повреждению структуры поддержки. Самым надежным решением остается последовательное движение по ключевым релизам с обновлением через конфигурацию поставщика.