Как обновить конфигурацию поставщика в 1С через файл CF и исправить ошибку «Файл не содержит обновлений»

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

При обслуживании и доработке нетиповых или сильно измененных конфигураций 1С программисты часто сталкиваются с ситуацией, когда рабочая база отстает от актуального релиза поставщика на десятки версий. Установка последовательной цепочки из 15–20 обновлений (файлов .cfu) вручную занимает огромное количество времени. Логичным решением кажется обновление конфигурации поставщика «в один шаг» с помощью полного файла конфигурации (.cf) нужного релиза.

Однако при попытке выполнить стандартную процедуру через меню Конфигурация -> Поддержка -> Обновить конфигурацию и выборе подготовленного файла .cf система часто выдает ошибку: «Данный файл не содержит обновлений», после чего процесс прерывается. В этой статье мы подробно разберем, почему возникает эта ошибка, как правильно подготовить файл обновления и как безопасно обновить конфигурацию поставщика, не повредив доработки и учетные данные.

Выясняем причину: почему 1С не принимает обычный файл CF?

Главная причина ошибки кроется в непонимании разницы между двумя типами файлов конфигурации с расширением .cf, которые создает платформа «1С:Предприятие»:

  1. Обычный файл конфигурации. Он создается с помощью команды Конфигурация -> Сохранить конфигурацию в файл. Этот файл содержит только структуру метаданных (справочники, документы, регистры) конкретной информационной базы. В нем отсутствует специальная метка поставки. Для платформы этот файл является «слепком» пользовательской конфигурации, поэтому использовать его для штатного обновления конфигурации, стоящей на поддержке, невозможно.
  2. Файл конфигурации поставщика (файл поставки). Этот файл создается либо самим разработчиком (например, фирмой «1С» при подготовке дистрибутива), либо выгружается особым образом из базы, стоящей на поддержке. Он содержит в себе необходимую технологическую информацию, подтверждающую правомерность обновления и связь с поставщиком. Только такой файл платформа воспримет как корректный источник обновления.

Если вы самостоятельно выгрузили .cf из чистой или типовой базы через стандартное сохранение конфигурации, то при попытке обновить рабочую базу вы гарантированно получите ошибку «Файл не содержит обновлений».

Шаг 1. Как правильно получить CF-файл конфигурации поставщика

Для того чтобы получить корректный файл поставки нужного вам релиза, выполним следующие шаги:

  1. Развернем чистую базу (без доработок) того релиза, до которого планируется обновить рабочую базу. Это можно сделать из официального полного дистрибутива поставщика.
  2. Откроем чистую базу в режиме Конфигуратор.
  3. Перейдем в главное меню: Конфигурация -> Поддержка -> Настройка поддержки.
  4. В верхней части открывшегося окна найдем и нажмем кнопку «Сохранить в файл».
  5. Укажем путь на диске и сохраним файл. Полученный файл с расширением .cf теперь является полноценным файлом поставки, который содержит все необходимые заголовки и структуру для обновления.

Шаг 2. Обновление конфигурации поставщика (без изменения основной конфигурации)

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

  1. Обязательно создадим резервную копию (бэкап) рабочей базы данных перед любыми манипуляциями!
  2. Откроем рабочую базу в режиме Конфигуратор.
  3. Перейдем в меню Конфигурация -> Поддержка -> Обновить конфигурацию.
  4. В открывшемся окне выбора источника обновления переставим переключатель в положение «Выбор файла...» и укажем путь к файлу .cf, который мы сохранили на Шаге 1.
  5. Нажмите кнопку «Далее». Платформа успешно распознает файл и откроет окно сопоставления версий. Нажмите «ОК».
  6. Перед нами откроется окно сравнения и объединения конфигураций. Это ключевой момент! Чтобы не повредить ваши доработки, необходимо полностью снять абсолютно все флажки в дереве объектов метаданных. Для этого нажмите кнопку «Снять флажки со всех объектов» или снимите самый верхний флажок у корня конфигурации.
  7. Нажмите кнопку «Выполнить».
  8. Платформа обнаружит, что изменений для объединения нет, но предложит обновить саму конфигурацию поставщика до новой версии. Соглашаемся и нажимаем «Да».

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

Внимание: Опасность пропуска релизов и обработчики обновления БСП

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

В современных конфигурациях 1С (начиная с БСП — Библиотеки стандартных подсистем) обновление состоит из двух этапов:

Разработчики типовых решений пишут код обработчиков последовательно. Например, в релизе 3.0.50 данные переносятся из старого регистра накопления в новый справочник, а в релизе 3.0.55 старый регистр полностью удаляется из метаданных. Если вы «перепрыгнете» сразу с версии 3.0.48 на 3.0.60 через один .cf, то при запуске в режиме «1С:Предприятие» произойдет следующее:

Для наглядности рассмотрим пример того, как в коде БСП регистрируются обработчики обновления, жестко привязанные к версиям:


Процедура ПриДобавленииОбработчиковОбновления(Обработчики) Экспорт

    Обработчик = Обработчики.Добавить();
    Обработчик.Версия = "3.0.45.15";
    Обработчик.Процедура = "ОбновлениеИнформационнойБазыБП.ЗаполнитьНовыеРеквизитыКонтрагентов";
    Обработчик.РежимВыполнения = "Монопольно";
    
    Обработчик = Обработчики.Добавить();
    Обработчик.Версия = "3.0.52.20";
    Обработчик.Процедура = "ОбновлениеИнформационнойБазыБП.ПеренестиДанныеВНовыйРегистр";
    
КонецПроцедуры

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

  1. База абсолютно пустая (в ней нет учетных данных, документов и справочников).
  2. Вы предварительно выполнили все обновления на копии базы, запустили предприятие, дождались окончания работы всех обработчиков обновления данных, а затем перенесли итоговую конфигурацию в рабочую базу.

Рекомендуемая безопасная методика быстрого обновления

Чтобы сэкономить время и не запускать процедуру сравнения/объединения метаданных 18 раз на «живой» базе, используем следующую профессиональную методику:

  1. Создаем копию рабочей базы данных.
  2. На этой копии выполняем последовательное обновление по цепочке **ключевых** (узловых) релизов, которые разрешают переход друг на друга. На каждом ключевом релизе обязательно запускаем базу в режиме «1С:Предприятие» под правами администратора и дожидаемся 100% выполнения всех отложенных обработчиков обновления данных.
  3. После того как копия базы успешно обновлена до финального требуемого релиза и все данные реструктуризированы, выгружаем из нее итоговый файл конфигурации через Конфигурация -> Сохранить конфигурацию в файл.
  4. В рабочей базе (предварительно сделав свежую резервную копию!) заходим в Конфигуратор и делаем Конфигурация -> Загрузить конфигурацию из файла, выбрав наш подготовленный .cf. При этом структура метаданных обновится за один шаг, а обработчики обновления данных при запуске предприятия отработают корректно и без ошибок.

Таким образом, понимание механизмов поддержки 1С и структуры хранения конфигураций позволяет администраторам и программистам существенно ускорить рутинные процессы обновления, избегая критических ошибок потери данных.

← На главную