Зачем запускать базу в режиме предприятия после каждого обновления?

Программист 1С v8.3 (Управляемые формы) IT и автоматизация бизнеса
← На главную

Вопрос о необходимости запуска сеанса «1С:Предприятия» после каждого этапа обновления конфигурации часто вызывает споры среди администраторов и разработчиков. На первый взгляд кажется, что если база пустая или если мы используем «полный» файл конфигурации (.cf), то промежуточные запуски — это лишь пустая трата времени. Однако технологические процессы платформы и логика типовых конфигураций (особенно на базе БСП) говорят об обратном. В этой статье мы подробно разберем, что происходит «под капотом» системы во время обновления и почему попытка сэкономить время может привести к фатальным последствиям для данных.

Механизм регистрации версий и обработчики обновления

Рассмотрим ситуацию: мы обновляем конфигурацию с версии 3.0.45 сразу до 3.0.103, просто «накатив» актуальный .cf. С точки зрения Конфигуратора, метаданные изменились, и он готов применить их к базе данных. Однако для прикладного решения этого недостаточно. Проанализируем, почему:

  1. Регистр «Версии подсистем»: В каждой базе данных существует технический регистр, где хранится номер текущей версии конфигурации. Когда мы запускаем Предприятие, система сравнивает версию из метаданных с версией в этом регистре. Если они не совпадают, запускается процедура обновления информационной базы (ИБ).
  2. Цепочка обработчиков: Код обновления в типовых конфигурациях написан так, что он последовательно выполняет процедуры для каждого релиза. Например, если в версии 3.0.50 изменился алгоритм расчета налога, а в 3.0.60 — структура хранения этих данных, то система должна выполнить сначала обработчик версии 50, а затем 60.
  3. Проблема «удаленного кода»: Разработчики «1С» со временем удаляют старые обработчики обновления из кода новых релизов для оптимизации. Если вы «прыгнете» через 50 релизов, в актуальном .cf может просто не оказаться кода, который должен был сконвертировать данные для промежуточных версий. В итоге данные останутся в «старом» формате, который новая конфигурация уже не понимает.

Риск безвозвратной потери данных при реструктуризации

Разберем самый опасный сценарий, который часто называют «путь к могиле базы». Представим, что в релизе №2 разработчики решили заменить реквизит СтарыйАдрес (строка) на справочник Адреса. В коде релиза №2 написан обработчик: «Прочитать строку из СтарыйАдрес, создать элемент справочника и записать ссылку в новый реквизит».

В релизе №3 разработчики окончательно удаляют реквизит СтарыйАдрес из метаданных, так как он больше не нужен. Если вы обновляетесь последовательно (1 -> 2 -> запуск Предприятия -> 3), данные успешно переносятся. Но если вы обновляетесь сразу с 1 на 3 через .cf, происходит следующее:

Инициализация системных данных в пустых базах

Даже если в базе нет ваших учетных данных, запуск Предприятия критически важен для инициализации системных объектов. Проанализируем ситуацию с Библиотекой стандартных подсистем (БСП):

Справочник «Идентификаторы объектов метаданных»: Этот объект является фундаментом для работы прав доступа, дополнительных реквизитов и многих отчетов. При запуске Предприятия срабатывает модуль менеджера, который перезаполняет этот справочник:


// Пример логики, вызываемой при обновлении
Процедура ВыполнитьОбновлениеДанных() Экспорт
    Справочники.ИдентификаторыОбъектовМетаданных.ОбновитьДанныеСправочника();
КонецПроцедуры

Без этого справочника база может начать выдавать ошибки при попытке открыть любой документ или настроить права пользователя, так как система не сможет сопоставить объекты конфигурации с их внутренними ссылками в БД.

Отложенные обработчики обновления

В современных версиях «1С» используется механизм отложенного обновления. Это означает, что после запуска Предприятия выполняются только самые критичные операции, а остальные данные конвертируются в фоновом режиме. Если вы не дождетесь окончания этих процессов и начнете накатывать следующий релиз в Конфигураторе, вы заблокируете работу фоновых заданий, что приведет к логической несогласованности данных (часть таблиц обновлена, часть — нет).

Как автоматизировать процесс без потери качества?

Если релизов много и запускать каждый раз Предприятие вручную утомительно, правильно будет использовать средства автоматизации (скрипты), но соблюдать технологическую цепочку. Рассмотрим шаги правильного обновления:

  1. Обновление конфигурации в режиме Конфигуратора (/UpdateCfg).
  2. Применение изменений (/UpdateDBCfg).
  3. Запуск Предприятия в пакетном режиме для выполнения обработчиков. Для этого можно использовать параметры командной строки:

"C:\Program Files\1cv8\common\1cestart.exe" ENTERPRISE /F "ПутьКБазе" /N "Админ" /P "Пароль" /C СтартОбновленияИБ /Visible

Параметр /C СтартОбновленияИБ (в зависимости от версии БСП может отличаться) инициирует автоматическое выполнение всех процедур обновления без участия пользователя. Только после закрытия этого сеанса можно переходить к следующему этапу обновления.

Выводы

Подведем итог: обновление через «прыжок» по .cf-файлу допустимо только в исключительных случаях, когда вы точно знаете (проанализировав сравнение метаданных), что между версиями не было удаления или переименования объектов. В общем же случае, стратегия «обновил — запустил» является единственно верной для сохранения целостности информационной базы. Помните, что отсутствие ошибок при запуске после «кривого» обновления не означает, что данные в порядке — ошибки могут проявиться спустя месяцы при формировании регламентированной отчетности.

← На главную