Рассмотрим распространенную проблему, с которой сталкиваются системные администраторы и программисты при попытке обновить конфигурацию 1С:Зарплата и управление персоналом (редакция 3). Ситуация выглядит следующим образом: выполняется штатное обновление базы данных на новый релиз (например, переход с устаревшей ветки 3.1.10 на актуальную технологическую ветку 3.1.12), конфигурация базы данных успешно применяется в Конфигураторе, но при запуске приложения в режиме «1С:Предприятие» система аварийно завершает работу, выдавая критическую ошибку инициализации или сбой выполнения обработчиков обновления.
В этой статье мы подробно разберем, почему возникает эта проблема, проанализируем внутренние механизмы платформы 1С и Библиотеки стандартных подсистем (БСП), а также предоставим пошаговый алгоритм безопасного обновления крупных информационных баз без потери данных.
Для того чтобы понять корень проблемы, углубимся в архитектуру сопровождения программных продуктов фирмы «1С». В период активного развития решений на платформе «1С:Предприятие 8.3» разработчики часто поддерживают параллельно несколько веток конфигураций:
3.1.10.3.1.11, 3.1.12 и далее).Попытка совершить «резкий прыжок» и обновить конфигурацию, минуя промежуточные релизы (например, напрямую с релиза 3.1.10.135 на 3.1.12.113), практически всегда приводит к краху системы. Это происходит по следующим причинам:
3.1.12 содержит инструкции по миграции данных только со строго определенных предыдущих версий (так называемых «точек стыковки»). Если исходная база слишком старая, в целевом релизе просто не окажется обработчиков БСП, способных корректно преобразовать структуру данных из формата версии 3.1.10.135.3.1.12 совпал с масштабными государственными реформами — введением Электронных трудовых книжек (ЭТК) и отчетности по формам СЗВ-ТД и СТД-Р. Разработчики «1С» кардинально изменили структуру регистров, добавив специализированные объекты для хранения кадровых мероприятий. Прямое обновление ломает логику заполнения этих регистров, так как старые данные физически не могут быть автоматически сопоставлены с новыми метаданными без промежуточного кода.Сверимся с требованиями разработчиков к обновлению релиза 3.1.12.113. Согласно официальной информации, данная версия может быть установлена поверх ограниченного списка релизов:
3.1.12.563.1.12.763.1.10.2763.1.12.110Как мы видим, версия 3.1.10.135 отсутствует в этом списке. Следовательно, прямая установка обновления недопустима.
Для того чтобы успешно обновить базу данных и избежать ошибок инициализации БСП, мы воспользуемся методом транзитного обновления с использованием полного файла конфигурации (файла с расширением .cf) промежуточного релиза. Проанализируем этот процесс детально.
Перед проведением любых манипуляций в Конфигураторе в обязательном порядке создайте резервную копию базы данных. Если вы работаете в файловом варианте, скопируйте файл 1Cv8.1CD. Если используется клиент-серверный вариант (MS SQL, PostgreSQL), выполните резервное копирование средствами СУБД или выгрузите информационную базу в файл .dt через меню Администрирование -> Выгрузить информационную базу....
Вместо того чтобы последовательно скачивать и устанавливать десятки мелких обновлений (файлов формата .cfu), мы сократим время и снизим риск ошибок, применив полный файл конфигурации транзитной версии. Нашей точкой стыковки является релиз 3.1.10.276.
3.1.10.276 (или получите файл 1cv8.cf из шаблона установки этого релиза).1cv8.cf от релиза 3.1.10.276.F7 или синюю бочку на панели инструментов).Внимание! Это ключевой момент, на котором чаще всего ошибаются специалисты. Нельзя сразу после применения метаданных 3.1.10.276 накатывать целевой релиз 3.1.12.113. Если вы так сделаете, данные не пройдут конвертацию через промежуточные обработчики БСП, и база будет испорчена.
Необходимо выполнить следующие действия:
В коде конфигурации это выглядит как регистрация и выполнение процедур обновления, специфичных для релиза. Проанализируем упрощенный пример того, как система регистрирует транзитные обработчики:
Процедура ЗарегистрироватьОбработчикиОбновления(ОписаниеРелиза) Export
// Регистрация обработчиков для перехода на релиз 3.1.10.276
Обработчик = ОписаниеРелиза.Обработчики.Добавить();
Обработчик.Версия = "3.1.10.276";
Обработчик.Процедура = "ОбновлениеИнформационнойБазыЗУП.ЗаполнитьКадровыеМероприятияЭТК";
Обработчик.РежимВыполнения = "Отложенно";
КонецПроцедуры
Только после того, как все транзитные обработчики (включая отложенные фоновые задания, обрабатывающие большие массивы данных по кадровым документам) успешно завершат работу, можно переходить к следующему этапу.
После успешного завершения всех процедур обновления на транзитном релизе 3.1.10.276 структура вашей информационной базы полностью готова к переходу на новую ветку.
3.1.12.113 (используя стандартный файл обновления .cfu или полный файл конфигурации .cf данного релиза).F7.При переходе между такими крупными и архитектурно различающимися релизами, как 3.1.10 и 3.1.12, полезно обратить внимание на сопутствующие нюансы, которые могут вызвать непредвиденные сбои:
3.1.12 предъявляет более жесткие требования к версии платформы 1С:Предприятие 8.3. Если вы попытаетесь запустить обновленную конфигурацию на устаревшем релизе платформы, программа может завершать работу аварийно (с ошибкой СУБД или падением рабочего процесса сервера 1С) без вывода внятных сообщений. Перед началом обновления всегда устанавливайте версию платформы не ниже той, которая указана в файле ReadMe.txt целевого релиза конфигурации.EF_) для старой версии 3.1.10 может заблокировать запуск обновленной базы. Рекомендуется временно деактивировать или полностью удалить все установленные патчи и расширения перед накатыванием транзитного релиза 3.1.10.276, а после успешного завершения всего цикла обновления до 3.1.12.113 установить их обновленные версии, адаптированные под новую структуру метаданных./ClearCache).Следуя этой простой, но строгой последовательности, мы гарантируем сохранность кадровых и расчетных данных в информационной базе «1С:Зарплата и управление персоналом» и исключаем возникновение критических ошибок при переходе между различными ветками поддержки конфигурации.