Как безопасно обновить рабочую базу 1С с помощью заранее подготовленного файла .cf?

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

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

Понятие GUID метаданных и риски загрузки конфигурации

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

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

Важное правило: Идентификатор в пределах одной конфигурации никогда не изменяется при выгрузке/загрузке .cf или .dt. Он меняется только при копировании объекта внутри дерева метаданных или при некорректном объединении конфигураций из разных источников.

Сравнение методов: загрузка vs объединение

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

  1. Загрузить конфигурацию из файла: Этот метод полностью перезаписывает основную конфигурацию. Он работает быстро, так как не требует пообъектного сопоставления. Он идеален, когда вы подготовили обновление на точной копии рабочей базы и уверены, что за это время в рабочей базе никто не вносил изменений в конфигураторе.
  2. Сравнить и объединить с конфигурацией из файла: Более медленный, но гибкий процесс. Позволяет сопоставлять объекты по именам, а не только по GUID. Этот метод обязателен, если разработка велась параллельно в нескольких базах.

Алгоритм правильной подготовки обновления на копии

Рассмотрим пошагово, как подготовить идеальный файл обновления, чтобы избежать проблем в «боевой» базе:

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

Проблема конфигурации поставщика

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

Проанализируем решение из практики: наиболее профессиональным методом считается создание файла поставки. Это позволяет поставить рабочую базу на поддержку вашей собственной модифицированной конфигурации. Для этого в копии используйте меню Конфигурация — Расширения конфигурации — Создать файлы поставки и обновления.

Обновление в распределенных информационных базах (РИБ)

Если ваша система использует РИБ, процедура усложняется. Посмотрим на стандартную логику:

  1. Обновление конфигурации в главном узле.
  2. Синхронизация данных, в ходе которой изменения метаданных передаются в подчиненные узлы.
  3. В подчиненном узле при загрузке сообщения обмена конфигурация обновляется автоматически.

Использование метода «Загрузить конфигурацию» в главном узле РИБ может привести к тому, что платформа пометит всю конфигурацию как измененную. Это повлечет за собой передачу огромного файла обмена во все узлы. В условиях слабых каналов связи это может парализовать работу филиалов. Поэтому в РИБ крайне рекомендуется использовать штатные средства обновления или механизм файлов обновления .cfu.

Выполнение обработчиков обновления в режиме «Предприятие»

Загрузка .cf — это только половина дела. Любое обновление типовой конфигурации (например, БП 3.0) требует запуска программных методов обновления. Выясним, как это работает:

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

Пример кода, который можно использовать для мониторинга состояния обновления (в консоли кода или обработке):


// Проверим, все ли обработчики обновления завершены
Если ОбновлениеИнформационнойБазы.НеобходимоОбновление() Тогда
    Сообщить("Требуется запуск обработчиков обновления данных!");
Иначе
    Сообщить("Версия данных соответствует версии конфигурации.");
КонецЕсли;

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

Подведем итог: можно ли использовать метод Загрузить конфигурацию из файла? Да, но при строгом соблюдении условий:

Если есть малейшие сомнения в идентичности структур, используйте Сравнение и объединение. Это займет больше времени, но гарантирует сохранность ваших GUID и, соответственно, ваших данных. Рассмотрим этот процесс как инвестицию в стабильность системы.

← На главную