Мы с вами столкнулись с ситуацией, когда конфигурация информационной базы 1С была отключена от хранилища, но при этом в ней были внесены важные изменения. Теперь перед нами стоит задача безопасно и правильно перенести эти доработки обратно в хранилище конфигурации, чтобы они стали доступны для других разработчиков и сохранилась история версий. Давайте вместе разберем, как это можно сделать, используя стандартные механизмы платформы 1С.
Прежде всего, важно понимать, что хранилище конфигурации является ключевым инструментом для командной разработки, обеспечивающим версионирование, контроль целостности и предотвращение конфликтов. Отключение от него и внесение изменений в "автономном" режиме обходит эти механизмы, что требует особого внимания при последующем возвращении изменений.
Если ваша конфигурация была временно отключена от хранилища, и связь с ним не была полностью потеряна или нарушена, наиболее прямой и часто используемый способ — это повторное подключение и использование встроенного механизма сравнения. Рассмотрим этот подход подробнее.
Повторное подключение к хранилищу: Убедитесь, что ваша информационная база (та самая, в которой вы вносили изменения) снова подключена к хранилищу конфигурации. Если вы просто отключались, а потом планируете подключиться обратно, это должно пройти без проблем.
Захват объектов: Перед тем как помещать изменения, настоятельно рекомендуем захватить (заблокировать) те объекты, которые вы изменяли. Это предотвратит параллельное изменение этих объектов другими разработчиками и поможет избежать конфликтов при помещении ваших изменений. Для этого перейдите в меню Конфигурация -> Хранилище конфигурации -> Захватить в хранилище.
Сравнение и объединение: После подключения и захвата объектов мы можем приступить к сравнению. Перейдите в меню Конфигурация -> Хранилище конфигурации -> Сравнить/объединить конфигурацию с хранилищем. Этот инструмент покажет все различия между вашей текущей конфигурацией и версией, находящейся в хранилище. Мы увидим подробный отчет, где сможем выборочно принять или отклонить изменения.
В процессе сравнения система позволит нам проанализировать каждую разницу. Будьте внимательны при выборе опций объединения, чтобы не потерять свои доработки и не перезаписать чужие.
Помещение изменений в хранилище: После успешного объединения и разрешения всех конфликтов, поместите измененные объекты в хранилище, используя Конфигурация -> Хранилище конфигурации -> Поместить в хранилище. Не забудьте указать осмысленное описание изменений.
Этот подход будет полезен, если прямое повторное подключение невозможно, или вы работаете с полностью новой или "чистой" базой, которую нужно подключить к хранилищу, а затем "накатить" на нее свои изменения из отключенной конфигурации. Разберем этот процесс по шагам.
Выгрузка локальных изменений в файл: Первым делом нам необходимо сохранить все ваши локальные доработки из отключенной информационной базы. Для этого откройте конфигуратор вашей отключенной базы и выгрузите конфигурацию в файл. Перейдите в меню Конфигурация -> Сохранить конфигурацию в файл.... Сохраните файл, например, с именем МоиИзменения.cf.
Подключение "целевой" базы к хранилищу: Теперь нам понадобится информационная база, которая будет подключена к хранилищу. Это может быть либо ваша основная рабочая база (если она была подключена к хранилищу до ваших "автономных" изменений и вы хотите на нее накатить свои доработки), либо новая, чистая база, которую мы специально подключим к хранилищу. Для подключения используйте Конфигурация -> Хранилище конфигурации -> Подключиться к хранилищу.
При подключении все метаданные из хранилища загружаются в эту базу, обеспечивая актуальное состояние конфигурации из хранилища.
Захват объектов: Аналогично предыдущему решению, обязательно захватите (заблокируйте) те объекты, которые вы планируете изменить или уже изменили локально. Это нужно, чтобы другие разработчики не могли их редактировать в это время. Меню Конфигурация -> Хранилище конфигурации -> Захватить в хранилище.
Сравнение и объединение с файлом: Теперь мы выполним сравнение и объединение текущей конфигурации (подключенной к хранилищу) с нашим файлом МоиИзменения.cf, который содержит наши доработки. Перейдите в меню Конфигурация -> Сравнить, объединить с конфигурацией из файла.... Укажите путь к вашему файлу МоиИзменения.cf.
Важный момент: В диалоге сравнения, который появится, укажите вашу текущую конфигурацию (подключенную к хранилищу) как вторую, а конфигурацию из файла (МоиИзменения.cf) — как первую. Это позволит вам "накатить" изменения из файла на конфигурацию, подключенную к хранилищу. В процессе объединения вы сможете выбрать, какие изменения из файла применить к текущей конфигурации.
Помещение изменений в хранилище: После завершения процесса сравнения и объединения, когда все ваши изменения применены к конфигурации, подключенной к хранилищу, поместите их в хранилище. Используйте Конфигурация -> Хранилище конфигурации -> Поместить в хранилище. Укажите информативное описание ваших изменений.
При работе с инструментом сравнения и объединения в 1С мы сталкиваемся с несколькими важными аспектами:
Идентификация объектов: 1С сопоставляет объекты конфигурации по их Имени и внутреннему идентификатору. Важно знать, что внутренний идентификатор объекта, как правило, не меняется при выгрузке в .cf файлы или при работе с хранилищем. Однако он может измениться при ручном копировании объектов или при некоторых операциях объединения, что может привести к дублированию объектов вместо их обновления.
Отчет о различиях: Инструмент сравнения предоставляет подробный отчет о всех различиях. Это позволяет нам "мягко" обновить конфигурацию, выборочно принимая или отклоняя изменения, а также анализировать потенциальные конфликты.
Давайте проанализируем ситуацию, чтобы понять, почему хранилище так важно:
Коллективная разработка: Хранилище конфигурации предназначено для коллективной разработки и отслеживания истории изменений всей конфигурации. Каждое помещение изменений в хранилище создает новую версию конфигурации, что позволяет откатиться к любой предыдущей версии при необходимости.
Пессимистическая блокировка: В 1С используется механизм пессимистической блокировки объектов. Это означает, что только один разработчик может редактировать объект после его "захвата". Работа с отключенной конфигурацией обходит этот механизм, что может привести к серьезным конфликтам при последующем объединении, если другие разработчики в это время меняли те же объекты.
Регулярные обновления: Мы рекомендуем периодически обновлять статусы объектов и получать актуальное состояние из хранилища, используя Конфигурация -> Хранилище конфигурации -> Обновить конфигурацию базы данных и Конфигурация -> Хранилище конфигурации -> Получить из хранилища. Это помогает избежать сложностей при помещении собственных изменений и минимизирует количество конфликтов.
В некоторых сложных средах разработки, особенно для быстрых исправлений ("хотфиксов") на рабочей системе, может использоваться механизм расширений конфигурации. Расширения позволяют вносить изменения, не затрагивая основную конфигурацию, а затем эти же доработки можно поместить в хранилище для последующего включения в основную конфигурацию. Этот метод требует отдельного изучения, но является мощным инструментом для гибкой разработки.
Пример использования расширений для добавления функционала:
// В модуле расширения
&НаКлиенте
Процедура МояНоваяКоманда(Команда)
Сообщить("Привет из расширения!");
КонецПроцедуры
// Пример, как расширение может изменять поведение основной конфигурации
// Допустим, в основной конфигурации есть процедура "ОбработатьДанные"
// В расширении мы можем создать обработчик события "ПередОбработкойДанных"
// Или даже переопределить саму процедуру, если это разрешено
Таким образом, хотя форумные сообщения дают общее направление, детальная работа с отключенной конфигурацией и хранилищем требует внимательного использования инструментов "Сравнение/объединение конфигураций" и понимания принципов работы хранилища для корректного внесения и сохранения всех изменений. Всегда стремитесь к работе с подключенным хранилищем, чтобы избежать подобных ситуаций.
← К списку