Каждый специалист 1С рано или поздно сталкивается с необходимостью обновления нетиповой (измененной) базы данных. При обновлении конфигурации «1С:Зарплата и Управление Персоналом 3.1» через длинную цепочку релизов (например, с версии 3.1.14.305 на 3.1.14.369, а затем на 3.1.14.395) часто возникает соблазн сэкономить время. Кажется логичным последовательно применить все файлы обновлений (cfu) в Конфигураторе один за другим, обновить конфигурацию базы данных по клавише F7 лишь в самом конце и только тогда запустить режим «1С:Предприятие». Однако такой подход таит в себе скрытые и очень серьезные угрозы для целостности ваших данных.
В этой статье мы подробно разберем внутреннюю архитектуру процесса обновления современных конфигураций 1С, выясним причины возможных сбоев при «сквозном» обновлении и сформируем пошаговый безопасный алгоритм проведения работ.
Все современные конфигурации фирмы «1С» (включая ЗУП 3.1) функционируют на технологической основе Библиотеки стандартных подсистем (БСП). БСП управляет логикой обновления структуры данных и переноса информации из устаревших объектов в новые. Процесс обновления в БСП разделен на два принципиально разных этапа:
РегламентныеЗадания уже после того, как база открылась для работы пользователей. Отложенные обработчики предназначены для обработки огромных массивов данных (например, постепенного пересчета исторических записей в регистрах расчета или переноса сведений из старых реквизитов в новые справочники). Это сделано для того, чтобы не держать базу заблокированной часами.Проанализируем ситуацию, когда мы решили применить «сквозной» метод обновления без промежуточного запуска режима «1С:Предприятие». Предположим, мы обновляем базу с релиза 305 до 395 через промежуточный релиз 369.
В релизе 369 разработчики решили оптимизировать хранение данных. Они создали новый регистр сведений, добавили в код обработчик обновления, который должен скопировать информацию из старого регистра в новый, а старый регистр пометили префиксом «Удалить...». При этом в релизе 395 старый регистр с префиксом «Удалить...» окончательно вырезается из структуры метаданных конфигурации.
Если мы накатываем обновления последовательно в Конфигураторе (305 -> 369 -> 395) и только после этого запускаем «1С:Предприятие», происходят следующие деструктивные процессы:
Именно поэтому для любых измененных (нетиповых) конфигураций жестко действует золотое правило обновления: один шаг обновления в Конфигураторе — один запуск «1С:Предприятие» до полного завершения всех обработчиков обновления.
После успешного обновления базы данных в Конфигураторе (нажатия клавиши F7 или кнопки «Обновить конфигурацию базы данных») и последующего запуска сеанса «1С:Предприятие» перед нами открывается служебное окно БСП: «Выполнение дополнительных процедур обработки данных».
Выясним, как правильно вести себя в этой ситуации:
1cv8.exe или выключать компьютер (сервер). Прерывание транзакции монопольного обновления гарантированно приведет к разрушению логической целостности базы данных.Рассмотрим по шагам правильную методику работы с измененной базой «1С:ЗУП 3.1»:
1Cv8.1CD (для файловых баз) / бэкап на сервере SQL (для клиент-серверного варианта).Если нам нужно обновить базу через множество релизов, а запуск каждого промежуточного обновления вручную занимает слишком много времени из-за ожидания отложенных обработчиков, мы можем ускорить этот процесс. Существует специальный ключ запуска программы, который заставляет БСП выполнять отложенные обработчики не в фоновом режиме по чайной ложке, а монопольно на полную мощность процессора.
Для этого запустите базу в режиме «1С:Предприятие» из командной строки (или настройте параметры запуска в окне выбора баз), передав специальный параметр ВыполнитьОтложенноеОбновлениеСейчас.
Посмотрим на пример командной строки для запуска такого форсированного обновления:
"C:\Program Files\1cv8\8.3.22.1709\bin\1cv8.exe" ENTERPRISE /F "C:\1C_Bases\ZUP" /N "Администратор" /P "Пароль" /C "ВыполнитьОтложенноеОбновлениеСейчас"
При использовании этого параметра программа не просто откроется для пользователей, а сразу начнет выполнять все отложенные процедуры обновления в один поток на максимальной скорости. По завершении всех процедур система автоматически закроется, и вы сможете без промедления приступить к обновлению на следующий релиз в Конфигураторе.
Для минимизации рутинного труда и исключения человеческого фактора (когда специалист может забыть запустить Предприятие или запустить его слишком рано) настоятельно рекомендуется использовать специализированный софт, такой как «Обновлятор-1С».
Эта утилита умеет делать следующее:
Использование подобных инструментов автоматизации полностью страхует базу данных от случайных сбоев, связанных с нарушением последовательности выполнения регламентных процедур БСП.