Можно ли обновлять типовую конфигурацию 1С через «Загрузить конфигурацию из файла» вместо штатного обновления?

Программист IT и автоматизация бизнеса
← На главную

При обслуживании большого количества типовых баз (например, 40 и более) у администраторов и программистов 1С часто возникает вопрос оптимизации времени. Штатное обновление через меню Конфигурация — Поддержка — Обновить конфигурацию требует времени на сравнение объектов и расчет разницы. Метод Загрузить конфигурацию из файла (через .cf) работает значительно быстрее. Однако за этой скоростью скрываются технические нюансы, которые могут привести к фатальной потере данных. Разберем детально, как работают эти механизмы, какие риски существуют и как правильно автоматизировать процесс.

Механика процесса: Загрузка против Обновления

Рассмотрим, что происходит внутри платформы при использовании разных методов. Когда мы используем штатное обновление через .cfu (файл обновления) или .cf (полный файл конфигурации) в режиме Обновить конфигурацию, платформа выполняет трехстороннее сравнение: текущая основная конфигурация, конфигурация поставщика и новая конфигурация. В этом режиме система сопоставляет объекты по их внутренним идентификаторам (UUID).

Проанализируем ситуацию с Загрузить конфигурацию из файла. В этом режиме платформа полностью замещает структуру метаданных основной конфигурации данными из файла. Если конфигурация абсолютно типовая, «стоит на замке» и файл .cf взят из официального дистрибутива той же версии, то UUID объектов совпадут. В этом случае загрузка действительно эквивалентна обновлению по поддержке. Но если в базе были минимальные изменения или база когда-то снималась с поддержки, идентификаторы могут разойтись.

Главная опасность: Потеря данных и UUID

Выясним основную причину, по которой опытные специалисты предостерегают от простой загрузки .cf. Если UUID объекта в загружаемом файле отличается от того, что был в базе, 1С воспримет это не как изменение старого объекта, а как удаление старого и создание нового.

При выполнении команды Обновить конфигурацию базы данных (F7) платформа удалит таблицу в SQL, содержащую данные старого объекта, и создаст пустую таблицу для нового. Разберем пример: в релизе «А» у справочника Номенклатура был реквизит СтавкаНДС. В релизе «Б» разработчики 1С решили его заменить. Если вы загрузите .cf «перепрыгнув» через промежуточные релизы, где происходила конвертация данных, вы рискуете получить пустые поля в документах и справочниках.

Обработчики обновления (БСП) и «прыжки» через релизы

Современные типовые конфигурации (БП 3.0, ЗУП 3.1, УТ 11) построены на базе Библиотеки стандартных подсистем (БСП). Процесс обновления в них состоит из двух этапов:

  1. Изменение структуры метаданных в конфигураторе.
  2. Выполнение обработчиков обновления данных в режиме «1С:Предприятие».

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

Однако здесь кроется ловушка: разработчики 1С периодически вычищают старый код БСП. Если в новом релизе уже нет кода для миграции данных из версии, которая была у вас три месяца назад, данные просто не будут перенесены. Проанализируем пример из практики: в конфигурации БГУ 2.0 в некоторых релизах вырезались обработчики для версий, вышедших полгода назад. В итоге, загрузив свежий .cf на старую базу, вы получите рабочую программу с «дырами» в учетных данных.

Сценарий, когда загрузка CF оправдана

Посмотрим на ситуацию, когда метод загрузки допустим. Это возможно, если:

Автоматизация: как обновить 40 баз быстро и безопасно

Вместо рискованной ручной загрузки .cf, правильнее использовать автоматизацию. Платформа 1С поддерживает пакетный режим работы. Мы можем написать командный файл (батник), который будет последовательно обновлять базы. Рассмотрим пример команды для пакетного обновления:


"C:\Program Files\1cv8\common\1cestart.exe" DESIGNER /F "D:\Bases\MyBase" /N "Admin" /P "Pass" /UpdateCfg "D:\Updates\1cv8.cfu" /UpdateDBCfg

Разберем параметры этого метода:

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

Итоги и рекомендации

Проанализировав все «за» и «против», можно сделать следующие выводы:

  1. Загрузка .cf через Загрузить конфигурацию из файла формально замещает конфигурацию поставщика, но не гарантирует корректность цепочки обновлений в будущем, если файл не является «родным» для этой базы.
  2. При перескакивании через множество релизов всегда проверяйте наличие обязательных обработчиков обновления в коде новой версии.
  3. Никогда не используйте загрузку .cf для нетиповых (доработанных) конфигураций — это гарантированно уничтожит все ваши доработки в метаданных.
  4. Для массового обновления баз используйте пакетный режим работы конфигуратора или готовые скрипты автоматизации. Это сэкономит время без риска разрушить базу данных.

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

← На главную