В чем разница между обновлением конфигурации и сравнением/объединением в 1С?

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

При работе в среде 1С:Предприятие 8 начинающие и даже опытные разработчики часто задаются вопросом: зачем в конфигураторе существуют два, на первый взгляд, похожих механизма — «Конфигурация — Поддержка — Обновить конфигурацию» и «Конфигурация — Сравнить, объединить с конфигурацией из файла»? Казалось бы, в обоих случаях мы открываем окно сравнения и выбираем нужные объекты. Однако за внешней схожестью скрываются принципиально разные алгоритмы, игнорирование которых может привести к потере данных или «поломке» поддержки поставщика.

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

Трехстороннее сравнение (Three-way merge): Магия обновления

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

  1. Старая конфигурация поставщика: Это версия типового решения, которая была установлена у вас до текущего момента.
  2. Новая конфигурация поставщика: Это тот файл (.cf или .cfu), на который вы хотите перейти.
  3. Основная конфигурация: Ваша рабочая база, в которую уже могли быть внесены изменения вашими программистами.

Благодаря наличию «старого поставщика» система понимает контекст изменений. Если объект был изменен в новом релизе, но не тронут вами, 1С обновит его автоматически. Если же объект изменили и вы, и поставщик, система пометит его статусом «Дважды измененный». При обычном же Сравнении и объединении система видит только два состояния и не «знает», кто именно внес правки, что заставляет разработчика вручную анализировать тысячи строк кода, которые на самом деле могли бы обновиться автоматически.

Управление поддержкой и «Замок»

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

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

Работа с файлами обновления .cfu

Выясним техническую разницу в форматах файлов. Фирма 1С выпускает обновления в двух форматах: полном (.cf) и промежуточном (.cfu).

Файлы .cfu (Configuration Update) содержат только «дельту» — изменения между конкретными версиями. Они значительно меньше по объему. Механизм Сравнить и объединить принципиально не умеет работать с файлами .cfu. Ему требуется только полный .cf. Если у вас в распоряжении только файл обновления, вы просто не сможете применить его через обычное объединение без предварительной сборки полного файла, что добавляет лишние шаги в работу программиста.

Удаление объектов: Опасность «мусора»

Это критически важный момент, который часто упускают. Разберем, что происходит, когда поставщик в новом релизе решает удалить какой-то объект (например, устаревший регистр сведений или общий модуль).

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

Автоматизация и обработчики обновления данных

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

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

Специфические фильтры окна сравнения

Посмотрим на интерфейс окна объединения. В режиме Обновить конфигурацию нам доступны уникальные фильтры:

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

Когда все же стоит использовать «Сравнить и объединить»?

Несмотря на все вышесказанное, режим объединения — это мощный инструмент, но для других целей. Рассмотрим основные сценарии:

  1. Перенос функционала между базами: Если вам нужно перенести одну конкретную обработку или справочник из копии базы в рабочую.
  2. Разработка расширений: Когда мы хотим сравнить структуру расширения с основной конфигурацией.
  3. Работа с забалансовыми конфигурациями: Если база полностью снята с поддержки и вы используете её как хранилище кода.

Резюме для разработчика

Всегда используйте Конфигурация — Поддержка — Обновить конфигурацию для перехода на новые релизы от поставщика. Это единственный способ сохранить целостность системы поддержки, гарантировать выполнение обработчиков обновления данных в режиме «Предприятие» и обеспечить корректную работу трехстороннего сравнения. Обычное объединение оставьте для разовых задач по переносу кода между различными информационными базами.

← На главную