При обслуживании и доработке нетиповых или сильно измененных конфигураций 1С программисты часто сталкиваются с ситуацией, когда рабочая база отстает от актуального релиза поставщика на десятки версий. Установка последовательной цепочки из 15–20 обновлений (файлов .cfu) вручную занимает огромное количество времени. Логичным решением кажется обновление конфигурации поставщика «в один шаг» с помощью полного файла конфигурации (.cf) нужного релиза.
Однако при попытке выполнить стандартную процедуру через меню Конфигурация -> Поддержка -> Обновить конфигурацию и выборе подготовленного файла .cf система часто выдает ошибку: «Данный файл не содержит обновлений», после чего процесс прерывается. В этой статье мы подробно разберем, почему возникает эта ошибка, как правильно подготовить файл обновления и как безопасно обновить конфигурацию поставщика, не повредив доработки и учетные данные.
Главная причина ошибки кроется в непонимании разницы между двумя типами файлов конфигурации с расширением .cf, которые создает платформа «1С:Предприятие»:
Конфигурация -> Сохранить конфигурацию в файл. Этот файл содержит только структуру метаданных (справочники, документы, регистры) конкретной информационной базы. В нем отсутствует специальная метка поставки. Для платформы этот файл является «слепком» пользовательской конфигурации, поэтому использовать его для штатного обновления конфигурации, стоящей на поддержке, невозможно.Если вы самостоятельно выгрузили .cf из чистой или типовой базы через стандартное сохранение конфигурации, то при попытке обновить рабочую базу вы гарантированно получите ошибку «Файл не содержит обновлений».
Для того чтобы получить корректный файл поставки нужного вам релиза, выполним следующие шаги:
.cf теперь является полноценным файлом поставки, который содержит все необходимые заголовки и структуру для обновления.Если ваша рабочая конфигурация доработана (снята с замка, добавлены новые объекты или изменен код типовых), прямое объединение может затереть ваши изменения. Чтобы обновить только внутреннюю «невидимую» конфигурацию поставщика (чтобы база знала, на каком релизе поддержки она фактически находится), выполним следующую процедуру:
.cf, который мы сохранили на Шаге 1.После завершения процесса конфигурация поставщика рабочей базы будет обновлена до нужного актуального релиза, при этом ваша измененная основная конфигурация останется нетронутой.
Описанный выше метод прекрасно подходит для обновления метаданных и приведения базы к поддержке нужного релиза. Однако необходимо понимать критически важный нюанс, связанный с данными информационной базы.
В современных конфигурациях 1С (начиная с БСП — Библиотеки стандартных подсистем) обновление состоит из двух этапов:
Разработчики типовых решений пишут код обработчиков последовательно. Например, в релизе 3.0.50 данные переносятся из старого регистра накопления в новый справочник, а в релизе 3.0.55 старый регистр полностью удаляется из метаданных. Если вы «перепрыгнете» сразу с версии 3.0.48 на 3.0.60 через один .cf, то при запуске в режиме «1С:Предприятие» произойдет следующее:
Для наглядности рассмотрим пример того, как в коде БСП регистрируются обработчики обновления, жестко привязанные к версиям:
Процедура ПриДобавленииОбработчиковОбновления(Обработчики) Экспорт
Обработчик = Обработчики.Добавить();
Обработчик.Версия = "3.0.45.15";
Обработчик.Процедура = "ОбновлениеИнформационнойБазыБП.ЗаполнитьНовыеРеквизитыКонтрагентов";
Обработчик.РежимВыполнения = "Монопольно";
Обработчик = Обработчики.Добавить();
Обработчик.Версия = "3.0.52.20";
Обработчик.Процедура = "ОбновлениеИнформационнойБазыБП.ПеренестиДанныеВНовыйРегистр";
КонецПроцедуры
Если промежуточные метаданные отсутствуют, эти процедуры не смогут корректно завершить свою работу. Поэтому «прыгать» через множество релизов в один клик допускается только в двух случаях:
Чтобы сэкономить время и не запускать процедуру сравнения/объединения метаданных 18 раз на «живой» базе, используем следующую профессиональную методику:
Конфигурация -> Сохранить конфигурацию в файл.Конфигурация -> Загрузить конфигурацию из файла, выбрав наш подготовленный .cf. При этом структура метаданных обновится за один шаг, а обработчики обновления данных при запуске предприятия отработают корректно и без ошибок.Таким образом, понимание механизмов поддержки 1С и структуры хранения конфигураций позволяет администраторам и программистам существенно ускорить рутинные процессы обновления, избегая критических ошибок потери данных.