Переход с платформы 1С:Предприятие 8.2 (и конфигурации ЗУП 2.5) на современную версию ЗУП 3.1 приносит не только новые функциональные возможности, но и меняет технологические подходы к обслуживанию базы данных. Одной из наиболее острых тем для системных администраторов и программистов является процесс обновления конфигурации, особенно когда требуется «накатать» сразу несколько релизов подряд. Разберемся, как правильно организовать этот процесс, чтобы не нарушить целостность данных и избежать конфликтов с фоновыми заданиями.
В ЗУП 3.1, построенной на базе Библиотеки стандартных подсистем (БСП), процесс обновления разделен на два принципиально разных этапа. Проанализируем их, чтобы понимать, на каком этапе допустима блокировка регламентных заданий, а на каком — нет.
ОтложенноеОбновлениеИнформационнойБазы.Рассмотрим подробнее, почему простая блокировка регламентных заданий через консоль сервера может привести к проблемам. Если мы заблокируем выполнение заданий и при этом обновим конфигурацию на несколько релизов вперед, накопится критическая масса невыполненных отложенных обработчиков. Последующие релизы могут опираться на данные, которые должны были быть подготовлены предыдущими обработчиками. В итоге мы рискуем получить ошибку структур данных.
Этот способ считается наиболее надежным для клиент-серверных баз. Посмотрим на алгоритм действий, который рекомендуют опытные специалисты:
Если вы не хотите постоянно переключаться между конфигуратором и консолью сервера, проанализируем возможности самой системы 1С. В форме «Результаты обновления программы» есть скрытые рычаги управления.
Выясним причину, по которой иногда обработчики не запускаются сами. Обычно это происходит как раз из-за активной блокировки на уровне сервера. Чтобы обойти это в тестовых базах или при необходимости ручного контроля, мы можем переключить режим выполнения:
ОтложенноеОбновлениеИнформационнойБазы.В файловом варианте работы 1С фоновые задания ведут себя иначе — они не запустятся, пока в базе нет активного сеанса. Рассмотрим по шагам, как ускорить процесс для файловой ЗУП:
Часто возникает вопрос: можно ли обновить базу сразу на 5-10 релизов, не запуская предприятие после каждого шага? Проанализируем риски такого подхода.
Критически важно: Каждое обновление может содержать так называемые приоритетные обработчики. Если вы обновите схему данных на версию N+5, а обработчик из версии N+1 не успел отработать, вы можете столкнуться с тем, что программа не сможет корректно прочитать старые данные для их трансформации.
Рекомендация: Оптимально делать «контрольные точки». Обновили на 2-3 релиза — запустили Предприятие — дождались завершения критических обработчиков данных — пошли дальше. Если объем данных в базе велик (десятки гигабайт), то запуск отложенного обновления после каждого релиза является обязательным правилом безопасности.
Для профессиональной работы разберем использование параметров запуска. Мы можем инициировать обновление через командную строку, используя специфические ключи БСП. Например, использование ключа /C ЗапуститьОбновлениеИнформационнойБазы при запуске 1cv8.exe позволяет системе сразу перейти к выполнению процедур обновления.
Также стоит упомянуть объект РегламентныеЗадания. Если вы хотите, чтобы работали только системные механизмы обновления, но не работали «пользовательские» задания (обмены, рассылки), можно поступить так:
Проанализируем программный способ отключения «лишнего» фона:
// Пример логики для программиста
Задания = РегламентныеЗадания.ПолучитьРегламентныеЗадания();
Для Каждого Задание Из Задания Цикл
Если Задание.Метаданные.Имя <> "ОтложенноеОбновлениеИнформационнойБазы" Тогда
Задание.Использование = Ложь;
Задание.Записать();
КонецЕсли;
КонецЦикла;
Такой подход позволяет снять блокировку на уровне консоли сервера, дав возможность работать механизму БСП, но при этом гарантированно защитить базу от нежелательной активности других подсистем во время технических работ.
Подведем итог: обновление ЗУП 3.1 требует более внимательного отношения к фоновым процессам, чем это было в версии 2.5. Не стоит бояться отложенного обновления, но и игнорировать его нельзя. Правильная последовательность действий — Блокировка -> Конфигуратор -> Предприятие + Снятие блокировки -> Контроль обработчиков — обеспечит стабильную работу системы и сохранность ваших данных.