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

Программист 1С v8.3 (Управляемые формы) 1С:Управление торговлей Торговля и дистрибуция
← К списку

Приветствуем вас, коллеги! Мы часто сталкиваемся с ситуациями, когда необходимо обновить конфигурацию 1С, но при этом база подключена к хранилищу конфигурации. Использование метода «Загрузить конфигурацию из файла» в таких условиях может привести к непредсказуемым результатам или потере истории изменений. Давайте вместе разберем эту непростую, но очень важную задачу и выясним, как действовать правильно, чтобы сохранить целостность данных и историю разработки.

Понимаем особенности метода «Загрузить конфигурацию из файла»

Прежде чем мы погрузимся в решения, давайте проанализируем, почему прямая загрузка файла .cf в базу, подключенную к хранилищу, является проблематичной. Метод «Загрузить конфигурацию из файла» (файл .cf) предназначен для полной замены текущей конфигурации на новую, содержащуюся в файле. Этот механизм не производит сравнения или интеллектуального объединения с существующими объектами конфигурации. Он просто перезаписывает всю конфигурацию. Теперь рассмотрим ключевой момент: использование этого метода несовместимо с подключенным хранилищем конфигурации. * Если ваша информационная база подключена к хранилищу, пункт меню «Загрузить конфигурацию из файла» будет недоступен в режиме «Конфигуратор». Система 1С не позволит вам выполнить эту операцию, чтобы предотвратить потерю связи с хранилищем и нарушение его целостности. * Теоретически, вы могли бы отключиться от хранилища, загрузить файл .cf, а затем попытаться подключиться к хранилищу снова. Однако такой подход с высокой долей вероятности приведет к тому, что конфигурация из хранилища либо заменит загруженную вами версию, либо система предложит заменить текущую конфигурацию на версию из хранилища, что в итоге приведет к потере всех загруженных вами изменений. Стандартный способ обновления типовых конфигураций, как вы, возможно, знаете, — это использование пункта меню «Поддержка - Обновить конфигурацию» с файлами обновления .cfu. Эти файлы содержат только изменения между версиями, и этот метод разработан специально для работы с поддержкой поставщика. Итак, что же делать, если у нас есть файл .cf (например, от поставщика или от другой базы) и мы хотим обновить нашу рабочую конфигурацию, подключенную к хранилищу, сохранив при этом всю историю изменений? Давайте рассмотрим несколько подходов.

Решение 1: Правильное обновление с сохранением истории в хранилище через «Сравнить, объединить»

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

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

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

  3. Захват объектов конфигурации: Для того чтобы иметь возможность вносить изменения в конфигурацию, подключенную к хранилищу, вам необходимо захватить все объекты конфигурации. Это можно сделать, выбрав в меню «Конфигурация» -> «Хранилище конфигурации» -> «Захватить все объекты рекурсивно». Этот шаг позволит вам редактировать объекты и затем поместить их в хранилище.

    Пример вызова метода для захвата объектов (в контексте программного кода это не используется для ручной операции, но для понимания):

    
    // В Конфигураторе: Конфигурация -> Хранилище конфигурации -> Захватить все объекты рекурсивно
    
  4. Выполнение сравнения и объединения: Перейдите в меню «Конфигурация» -> «Сравнить, объединить с конфигурацией из файла...». Выберите ваш файл .cf. Откроется окно сравнения и объединения.

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

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

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

  6. Помещение изменений в хранилище: Теперь, когда ваша конфигурация обновлена, необходимо поместить эти изменения в хранилище. Перейдите в меню «Конфигурация» -> «Хранилище конфигурации» -> «Поместить в хранилище...». Выберите все измененные объекты, добавьте комментарий к помещаемой версии (например, "Обновление до версии X.Y.Z") и нажмите «Поместить».

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

Решение 2: Двухбазовый подход для разработчиков

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

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

  2. Установка обновлений в "чистой" базе: В этой "чистой" базе мы можем применять обновления любым удобным способом, включая «Загрузить конфигурацию из файла» (если у нас есть .cf от поставщика) или «Обновить конфигурацию» (с файлом .cfu). Поскольку эта база не подключена к хранилищу, мы можем свободно экспериментировать с обновлениями без риска для основной разработки.

  3. Перенос обновлений в рабочую базу с хранилищем: После того как "чистая" база успешно обновлена, мы используем ее как источник для обновления нашей основной, продуктивной базы, которая подключена к хранилищу.

    Для этого в основной базе (подключенной к хранилищу) выполняем следующие шаги:

    • Выполняем шаги 1-3 из Решения 1 (резервная копия, завершение сеансов, захват всех объектов).

    • Переходим в меню «Конфигурация» -> «Сравнить, объединить с конфигурацией из файла...» (если сохранили конфигурацию "чистой" базы в .cf) или «Сравнить, объединить с конфигурацией из базы данных...» (если "чистая" база доступна по сети). Выбираем конфигурацию нашей "чистой" базы.

    • Внимательно сравниваем и объединяем изменения, принимая необходимые обновления от поставщика и сохраняя свои доработки.

    • Обновляем конфигурацию базы данных.

    • Помещаем все измененные объекты в хранилище, как описано в шаге 6 Решения 1.

    Этот подход обеспечивает чистую историю изменений в хранилище продуктивной базы, так как все изменения попадают туда через контролируемый процесс сравнения и объединения, а не через прямое замещение.

Решение 3: Создание нового хранилища (радикальный подход)

В некоторых случаях, особенно при значительных переходах между версиями конфигурации (например, 2.4 -> 2.5, как упоминалось в обсуждении), или если предыдущая история изменений в хранилище не представляет особой ценности, может быть принято решение о создании нового хранилища. Важное предупреждение: При этом подходе теряется вся предыдущая история из старого хранилища. Это равносильно началу новой истории разработки.

  1. Создание резервной копии: Снова подчеркиваем: сделайте резервную копию!

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

  3. Загрузка обновленной конфигурации: Теперь, когда база не подключена к хранилищу, пункт меню «Загрузить конфигурацию из файла...» станет доступен. Загрузите ваш файл .cf, содержащий новую версию конфигурации.

  4. Обновление конфигурации базы данных: После загрузки файла, обновите конфигурацию базы данных.

  5. Создание нового хранилища: Перейдите в меню «Конфигурация» -> «Хранилище конфигурации» -> «Создать хранилище...». Укажите путь к новому хранилищу и создайте его. Ваша текущая (уже обновленная) конфигурация станет первой версией в новом хранилище.

Этот метод прост, но его следует применять с осторожностью, понимая, что вы начинаете "с чистого листа" в плане истории версий.

Обязательные подготовительные шаги перед любым обновлением

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

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

  2. Завершите все сеансы пользователей: Убедитесь, что ни один пользователь не работает в базе данных. Обновление конфигурации должно производиться в монопольном режиме через «Конфигуратор».

  3. Проверьте режим поддержки: При использовании «Сравнить, объединить с конфигурацией из файла» иногда может потребоваться снять конфигурацию с поддержки или перевести ее в режим редактирования с сохранением поддержки, чтобы иметь возможность вносить изменения. Проверьте текущий режим поддержки через «Конфигурация» -> «Поддержка» -> «Настройка поддержки».

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

← К списку