Приветствуем вас, коллеги! Мы часто сталкиваемся с ситуациями, когда необходимо обновить конфигурацию 1С, но при этом база подключена к хранилищу конфигурации. Использование метода «Загрузить конфигурацию из файла» в таких условиях может привести к непредсказуемым результатам или потере истории изменений. Давайте вместе разберем эту непростую, но очень важную задачу и выясним, как действовать правильно, чтобы сохранить целостность данных и историю разработки.
Прежде чем мы погрузимся в решения, давайте проанализируем, почему прямая загрузка файла .cf в базу, подключенную к хранилищу, является проблематичной.
Метод «Загрузить конфигурацию из файла» (файл .cf) предназначен для полной замены текущей конфигурации на новую, содержащуюся в файле. Этот механизм не производит сравнения или интеллектуального объединения с существующими объектами конфигурации. Он просто перезаписывает всю конфигурацию.
Теперь рассмотрим ключевой момент: использование этого метода несовместимо с подключенным хранилищем конфигурации.
* Если ваша информационная база подключена к хранилищу, пункт меню «Загрузить конфигурацию из файла» будет недоступен в режиме «Конфигуратор». Система 1С не позволит вам выполнить эту операцию, чтобы предотвратить потерю связи с хранилищем и нарушение его целостности.
* Теоретически, вы могли бы отключиться от хранилища, загрузить файл .cf, а затем попытаться подключиться к хранилищу снова. Однако такой подход с высокой долей вероятности приведет к тому, что конфигурация из хранилища либо заменит загруженную вами версию, либо система предложит заменить текущую конфигурацию на версию из хранилища, что в итоге приведет к потере всех загруженных вами изменений.
Стандартный способ обновления типовых конфигураций, как вы, возможно, знаете, — это использование пункта меню «Поддержка - Обновить конфигурацию» с файлами обновления .cfu. Эти файлы содержат только изменения между версиями, и этот метод разработан специально для работы с поддержкой поставщика.
Итак, что же делать, если у нас есть файл .cf (например, от поставщика или от другой базы) и мы хотим обновить нашу рабочую конфигурацию, подключенную к хранилищу, сохранив при этом всю историю изменений? Давайте рассмотрим несколько подходов.
Это наиболее рекомендуемый и гибкий подход, особенно если ваша конфигурация доработана и вы хотите сохранить историю всех изменений в хранилище. Мы будем использовать механизм «Сравнить, объединить с конфигурацией из файла». Разберем этот процесс по шагам:
Создание резервной копии: Прежде чем начинать любые манипуляции с конфигурацией, обязательно создайте полную резервную копию вашей информационной базы. Это ваш "спасательный круг" в случае непредвиденных проблем.
Завершение сеансов пользователей: Убедитесь, что все пользователи завершили свою работу в информационной базе. Обновление конфигурации должно производиться в монопольном режиме.
Захват объектов конфигурации: Для того чтобы иметь возможность вносить изменения в конфигурацию, подключенную к хранилищу, вам необходимо захватить все объекты конфигурации. Это можно сделать, выбрав в меню «Конфигурация» -> «Хранилище конфигурации» -> «Захватить все объекты рекурсивно». Этот шаг позволит вам редактировать объекты и затем поместить их в хранилище.
Пример вызова метода для захвата объектов (в контексте программного кода это не используется для ручной операции, но для понимания):
// В Конфигураторе: Конфигурация -> Хранилище конфигурации -> Захватить все объекты рекурсивно
Выполнение сравнения и объединения: Перейдите в меню «Конфигурация» -> «Сравнить, объединить с конфигурацией из файла...». Выберите ваш файл .cf. Откроется окно сравнения и объединения.
В этом окне вы увидите все различия между вашей текущей конфигурацией и конфигурацией из файла. Внимательно проанализируйте каждое изменение. Вы сможете выборочно принять или отклонить изменения, а также разрешить конфликты, если они возникнут в доработанных вами объектах.
Важный момент: Мы рекомендуем снимать все галочки с объектов, которые вы не хотите обновлять или которые являются вашими доработками и должны остаться неизменными, если только цель не состоит в полном принятии изменений поставщика.
Обновление конфигурации базы данных: После того как вы приняли все необходимые изменения и нажали «Выполнить», система обновит вашу конфигурацию. Затем вам будет предложено обновить конфигурацию базы данных. Согласитесь на это, чтобы изменения были применены к данным.
Помещение изменений в хранилище: Теперь, когда ваша конфигурация обновлена, необходимо поместить эти изменения в хранилище. Перейдите в меню «Конфигурация» -> «Хранилище конфигурации» -> «Поместить в хранилище...». Выберите все измененные объекты, добавьте комментарий к помещаемой версии (например, "Обновление до версии X.Y.Z") и нажмите «Поместить».
Таким образом, мы сохраняем всю историю изменений в хранилище, и другие разработчики смогут получить обновленную версию.
Этот подход является более структурированным и часто используется в командах разработки, где требуется максимальная чистота истории в хранилище и гибкость при обновлении. Он позволяет избежать прямых конфликтов между "Загрузить конфигурацию из файла" и рабочим хранилищем.
Создание "чистой" базы для обновлений: Мы создаем отдельную информационную базу, которая будет использоваться исключительно для установки обновлений от поставщика. Эта база не должна быть подключена к основному хранилищу конфигурации.
Установка обновлений в "чистой" базе: В этой "чистой" базе мы можем применять обновления любым удобным способом, включая «Загрузить конфигурацию из файла» (если у нас есть .cf от поставщика) или «Обновить конфигурацию» (с файлом .cfu). Поскольку эта база не подключена к хранилищу, мы можем свободно экспериментировать с обновлениями без риска для основной разработки.
Перенос обновлений в рабочую базу с хранилищем: После того как "чистая" база успешно обновлена, мы используем ее как источник для обновления нашей основной, продуктивной базы, которая подключена к хранилищу.
Для этого в основной базе (подключенной к хранилищу) выполняем следующие шаги:
Выполняем шаги 1-3 из Решения 1 (резервная копия, завершение сеансов, захват всех объектов).
Переходим в меню «Конфигурация» -> «Сравнить, объединить с конфигурацией из файла...» (если сохранили конфигурацию "чистой" базы в .cf) или «Сравнить, объединить с конфигурацией из базы данных...» (если "чистая" база доступна по сети). Выбираем конфигурацию нашей "чистой" базы.
Внимательно сравниваем и объединяем изменения, принимая необходимые обновления от поставщика и сохраняя свои доработки.
Обновляем конфигурацию базы данных.
Помещаем все измененные объекты в хранилище, как описано в шаге 6 Решения 1.
Этот подход обеспечивает чистую историю изменений в хранилище продуктивной базы, так как все изменения попадают туда через контролируемый процесс сравнения и объединения, а не через прямое замещение.
В некоторых случаях, особенно при значительных переходах между версиями конфигурации (например, 2.4 -> 2.5, как упоминалось в обсуждении), или если предыдущая история изменений в хранилище не представляет особой ценности, может быть принято решение о создании нового хранилища. Важное предупреждение: При этом подходе теряется вся предыдущая история из старого хранилища. Это равносильно началу новой истории разработки.
Создание резервной копии: Снова подчеркиваем: сделайте резервную копию!
Отключение от старого хранилища: В вашей рабочей базе, подключенной к хранилищу, перейдите в меню «Конфигурация» -> «Хранилище конфигурации» -> «Отключиться от хранилища...».
Загрузка обновленной конфигурации: Теперь, когда база не подключена к хранилищу, пункт меню «Загрузить конфигурацию из файла...» станет доступен. Загрузите ваш файл .cf, содержащий новую версию конфигурации.
Обновление конфигурации базы данных: После загрузки файла, обновите конфигурацию базы данных.
Создание нового хранилища: Перейдите в меню «Конфигурация» -> «Хранилище конфигурации» -> «Создать хранилище...». Укажите путь к новому хранилищу и создайте его. Ваша текущая (уже обновленная) конфигурация станет первой версией в новом хранилище.
Этот метод прост, но его следует применять с осторожностью, понимая, что вы начинаете "с чистого листа" в плане истории версий.
Независимо от выбранного метода, мы настоятельно рекомендуем выполнить следующие действия:
Создайте резервную копию: Мы уже упоминали, но повторимся: создание резервной копии информационной базы является критически важным шагом перед любыми операциями по изменению конфигурации. Это позволит вам вернуться к исходному состоянию в случае непредвиденных проблем.
Завершите все сеансы пользователей: Убедитесь, что ни один пользователь не работает в базе данных. Обновление конфигурации должно производиться в монопольном режиме через «Конфигуратор».
Проверьте режим поддержки: При использовании «Сравнить, объединить с конфигурацией из файла» иногда может потребоваться снять конфигурацию с поддержки или перевести ее в режим редактирования с сохранением поддержки, чтобы иметь возможность вносить изменения. Проверьте текущий режим поддержки через «Конфигурация» -> «Поддержка» -> «Настройка поддержки».
Мы рассмотрели несколько подходов к решению проблемы обновления конфигурации 1С из файла .cf при работе с хранилищем. Выбор конкретного метода зависит от вашей ситуации, степени доработанности конфигурации и требований к сохранению истории изменений. Всегда действуйте осторожно, следуйте рекомендациям и не забывайте про резервные копии!