Обновление измененных (кастомизированных) конфигураций 1С — это всегда ответственный процесс, требующий внимательности. Одной из наиболее эффективных методик является подготовка единого файла обновления на копии базы данных с последующей его установкой на рабочую (продуктивную) базу в один шаг. Это позволяет минимизировать время простоя системы и исключить ошибки ручного объединения непосредственно на проде.
В данной статье мы разберем, как правильно подготовить такой файл, как обеспечить автоматический запуск ваших обработчиков обновления и какие нюансы существуют для разных поколений конфигураций.
Суть методики заключается в том, что все манипуляции по сравнению и объединению конфигураций проводятся на тестовой базе (копии прода). После того как конфигурация на копии приведена к нужному виду (накачено типовое обновление + восстановлены ваши доработки), из нее выгружается файл конфигурации (.cf) или файл обновления (.cfu). При этом критически важно, чтобы при запуске обновленного прода система «поняла», что версия изменилась, и запустила необходимые процедуры обработки данных в режиме 1С:Предприятие.
Рассмотрим по шагам, как реализовать этот механизм для современных систем на базе БСП и для классических решений прошлых поколений.
В современных конфигурациях за процесс обновления отвечает Библиотека стандартных подсистем (БСП). Чтобы ваши изменения корректно «подцепились» механизмом БСП, необходимо выполнить следующие действия:
1. Регистрация собственной подсистемы или изменение версии основной конфигурации
Для того чтобы БСП увидела изменения, ей нужно зафиксировать факт смены номера версии. Если вы меняете типовую конфигурацию, вы можете либо изменять номер версии самой конфигурации (что не всегда удобно), либо добавить свою собственную «подсистему» в справочник описания конфигурации.
2. Добавление обработчиков обновления
Проанализируем программный интерфейс БСП. Основным местом для регистрации ваших действий по миграции данных является общий модуль ОбновлениеИнформационнойБазыБСП (или аналогичный модуль вашей конфигурации, например, ОбновлениеИнформационнойБазыМояДоработка). Вам необходимо использовать процедуру ПриДобавленииОбработчиковОбновления.
Рассмотрим пример кода для регистрации вашего обработчика:
Процедура ПриДобавленииОбработчиковОбновления(Обработчики) Экспорт
НовыйОбработчик = Обработчики.Добавить();
НовыйОбработчик.Версия = "1.0.1.5"; // Версия, при которой должен сработать код
НовыйОбработчик.Процедура = "МойОбщийМодуль.ВыполнитьМиграциюДанных";
НовыйОбработчик.ЗаполнениеДанных = Истина;
НовыйОбработчик.Очередь = 1;
КонецПроцедуры
В этом примере МойОбщийМодуль.ВыполнитьМиграциюДанных — это процедура, в которой вы опишете логику изменения данных (например, заполнение новых реквизитов). БСП сама отследит, что версия ИБ ниже 1.0.1.5, и запустит этот код при первом старте системы.
В решениях на «обычных формах» механизм обновления устроен проще. Здесь нет такой развитой системы регистрации, как в БСП, но логика схожа. Основным триггером запуска обновлений является сравнение номера версии в метаданных и значения в константе (обычно НомерВерсииКонфигурации).
Алгоритм действий для старых систем:
ОбновлениеИнформационнойБазы.ВыполнитьОбновлениеИнформационнойБазы.Посмотрим на пример реализации:
Процедура ВыполнитьОбновлениеИнформационнойБазы() Экспорт
ТекущаяВерсия = Константы.НомерВерсииКонфигурации.Получить();
// Проверяем, нужно ли запускать наши доработки
Если ТекущаяВерсия < "1.3.150.1" Тогда
МоиДоработки.ОбновитьДанныеНовыхРеквизитов();
КонецЕсли;
// Стандартные вызовы обновления...
КонецПроцедуры
Важный нюанс: Не забудьте в свойствах корня конфигурации вручную поднять номер версии (например, с 1.3.150.1 на 1.3.150.2), чтобы платформа инициировала процесс обновления при запуске.
Чтобы обновление на проде прошло максимально штатно, лучше всего подготовить файл поставки. Это позволит системе увидеть обновление как «родное». Для этого выполните следующие шаги:
.cfu). Для этого вам потребуется указать «базовый» файл (тот .cf, который сейчас стоит на проде) и текущий измененный .cf.Использование .cfu предпочтительнее, так как он содержит только дельту изменений и гарантирует, что структура объектов будет сопоставлена корректно.
Выясним, как применить подготовленный файл без долгого ручного объединения. Для этого используем запуск конфигуратора из командной строки. Проанализируем основные команды:
Для загрузки конфигурации из файла и обновления схемы базы данных используйте:
1cv8.exe CONFIG /F "ПутьКБазе" /UpdateCfg "ПутьКФайлу.cfu" /UpdateDBSchema
Рассмотрим подробнее этапы применения на проде:
Проанализируем типичную ошибку: программист подготовил файл, проверил, что он «накатывается», но не проверил сам процесс выполнения обработчиков в режиме Предприятия.
Критически важно: Перед тем как нести файл на прод, выполните полный цикл обновления на чистой копии прода. Убедитесь, что:
Такой подход позволяет превратить обновление сложной, кастомизированной системы в предсказуемую и быструю процедуру.