Чтобы сравнить между собой и объединить два проекта, выполните следующие действия в панели Навигатор:
Назначение полей:
Чтобы сравнить между собой и объединить два объекта, выполните следующие действия в панели Навигатор:
Назначение полей:
Операцию сравнения и объединения конфигураций можно вызвать прямой командой (например, Сравнить/объединить в контекстном меню проекта) либо опосредованно, выполняя слияние веток Git. Если это трехстороннее сравнение без конфликтных изменений, 1C:EDT объединит конфигурации автоматически. Трехстороннее сравнение, например, очень часто выполняется в Git.
Во всех остальных случаях после сравнения 1C:EDT автоматически установит настройки объединения конфигураций и откроет редактор сравнения и объединения. Это нужно для того, чтобы вы могли подтвердить или изменить настройки объединения, установленные автоматически.
В этом разделе описываются правила, в соответствии с которыми 1C:EDT устанавливает эти настройки.
В редакторе сравнения и объединения 1C:EDT показывает конфигурацию в виде, который очень похож на то представление, которое она имеет в панели Навигатор. Разница заключается в том, что в редакторе дерево конфигурации более подробное. Например, оно содержит в себе все те свойства объектов, которые при работе в панели Навигатор показываются в отдельной панели Свойства (на рисунке у узла Конфигурация есть дочерний узел Свойства).
Настройка объединения представляет собой совокупность флажка (в первой колонке слева) и режима объединения (в последней колонке). Такая настройка есть у каждого узла в дереве (у каждой строки).
Флажок отображается для всех узлов, но не во всех узлах можно его изменить. Например, если сравниваемые значения одинаковые, флажок будет сброшен и установить его нельзя.
Режим объединения отображается не для всех узлов, а только:
Каждый флажок имеет три состояния:
Состояние установлен частично возможно только для тех узлов, у которых есть потомки. Оно устанавливается автоматически, его нельзя установить в явном виде, нажимая на флажок.
Нажатие на флажок, который находится в состоянии установлен частично , переводит его в состояние снят .
При установке или снятии флажка у всех дочерних узлов также устанавливаются или снимаются флажки. При этом родительским узлам устанавливается состояние, соответствующее текущей расстановке флажков у детей.
Существует четыре режима объединения:
Если попытаться сформулировать эти правила в двух словах, то получится, что при двустороннем сравнении флажки объединения устанавливаются таким образом, чтобы все изменения были перенесены в главный источник. При трехстороннем сравнении дополнительно к этому флажки не устанавливаются в тех случаях, когда изменения есть только в главном источнике, чтобы случайно не "обнулить" их.
Поэтому в подавляющем большинстве случаев ваша задача будет заключаться не в том, чтобы установить флажки там, где они не установлены, а в том, чтобы проконтролировать конфликтные изменения модулей и, возможно, снять флажки у тех узлов, которые вы не хотите переносить в главный источник.
Если говорить подробно, то 1C:EDT автоматически устанавливает флажки в состояние снят и не позволяет изменять их в следующих случаях:
Если ни одно из этих правил не сработало, то дальше 1C:EDT действует следующим образом:
Есть исключение, которое касается настроек поддержки. Если при объединении конфигураций есть конфликтные изменения в настройках поддержки, настройки поддержки объединяются всегда с режимом объединения Взять справа;
При сравнении разных модулей или разных версий одного и того же модуля используется встроенный механизм сравнения файлов.
Он учитывает семантику встроенного языка и может определять перемещение фрагментов кода (процедур и функций) внутри модуля. В результате вы не просто видите, что строки одного модуля отличаются от строк другого, а понимаете, что в принципе модуль не изменился, изменилось лишь положение процедур внутри него.
(Отобразить изменения порядка / Скрыть изменения порядка)
Также можно группировать соседние измененные строки в один блок. Это облегчает анализ изменений в этих строках.
(Группировать соответствия / Разгруппировать соответствия)
Чтобы сравнивать и объединять модули с учетом их структуры, в параметрах 1C:EDT установите флажок Сравнивать модули с учетом структуры.
Этот режим позволяет вам анализировать отличия в разрезе отдельных методов модуля. При сравнении конфигураций методы отображаются в общей структуре конфигурации. Можно видеть, например, добавленные методы, можете исключить из объединения любой из методов.
При сравнении модулей в верхней части редактора сравнения и объединения модулей отображается список методов, а в нижней части сравнивается только выбранный метод.
В этом режиме 1C:EDT сначала выполняет разбор содержимого модуля, а после этого выполняет сравнение. Если разбор содержимого модуля завершился неудачно (например, из-за синтаксической ошибки), то модуль будет сравниваться без учета структуры, как один общий текст.
Чтобы сравнивать и объединять модули с помощью внешних программ, в параметрах 1C:EDT укажите путь к исполняемому файлу внешней программы и операции, для которых вы будете ее использовать.
Если вы хотите, чтобы в редакторе сравнения и объединения конфигураций режим объединения с помощью внешней программы автоматически устанавливался для всех модулей, также установите в параметрах 1C:EDT флажок Автоматически объединять с помощью выбранных программ. В противном случае вам нужно будет вручную выбрать этот режим для интересующих вас модулей.
Тут же вы можете выбрать, какие узлы объединять внешней программой: Все или Только дважды измененные, т. е. узлы с конфликтными изменениями.
Также в параметрах можно указать таймаут выполнения внешней программы, по истечении которого она будет прервана.
Прежде чем выполнять объединение, можно проанализировать некоторые модули. Для этого нажмите Сравнить с помощью внешней программы контекстном меню модуля.
С помощью этой команды можно сравнить тексты модулей в источниках.
При нажатии на шестеренку в строке модуля внешняя программа запускается для объединения модулей.
Результат объединения сохраняется в редакторе, при этом правило объединения меняется на Ручное объединение.
Если необходимость индивидуальной работы с модулями отсутствует, можно сразу запустить процедуру объединения. В этом случае сначала запустится объединение с помощью внешней программы для тех узлов, у которых установлен режим Объединить с помощью внешней программы. После этого будет выполнено основное обновление.
Если на этапе работы внешней программы вы не примите результат ее объединения для каких-то узлов, то будет снова открыт редактор сравнения объединения и на таких узлах появляется значок шестеренки с восклицательным знаком.
Этот редактор позволяет вам просматривать отличия одной конфигурации от другой, отмечать объекты и свойства, которые следует (или, наоборот, не следует) перенести в главную конфигурацию, и выполнять объединение двух конфигураций. Также из этого редактора можно вызвать редактор сравнения и объединения текстовых файлов (подробнее) — с его помощью можно для каждого модуля в отдельности выполнить сравнение и при необходимости отредактировать текст, который должен получиться в результате объединения двух модулей.
Редактор сравнения и объединения текстовых файлов позволяет вам сравнивать содержимое двух модулей и объединять его.
Редактор состоит из трех областей. Слева находится главный источник, справа — второй источник, а посередине — результат объединения.
Этот редактор вызывается для сравнения и объединения модулей, которые присутствуют в редакторе сравнения и объединения конфигураций. Чтобы открыть этот редактор, нажмите "шестеренку" в строке Модуль.
Редактор сравнения и объединения текстовых файлов можно использовать, например, для сравнения двух общих модулей. Также мы интегрировали его в редактор сравнения и объединения конфигураций, поэтому при сравнении модулей будет также использоваться этот редактор.
Можно выбирать разные стратегии сравнения и объединения. Набор этих стратегий расширяемый, поэтому при желании можно реализовать собственную стратегию.
Анализируя изменения, можно переходить по блокам изменений, можно принудительно переносить изменения слева и справа в результат, а также редактировать результат вручную.
Можно сравнивать любые две области попарно в отдельном диалоге.
Можно отключать и включать синхронную прокрутку всех трех областей — как горизонтально, так и вертикально.
Панель сравнения файлов позволяет вам сравнивать текстовое содержимое двух файлов.
Она может быть открыта при синхронизации локального и удаленного хранилища для просмотра отличий в модулях. Также она может быть открыта для просмотра отличий разных версий одного модуля в локальном хранилище.
Кроме того, можно с ее помощью сравнивать содержимое файлов метаданных и других объектов, хранящихся в формате XML.
В этой панели реализован встроенный в 1C:EDT механизм сравнения файлов. Его преимущество заключается в том, что он учитывает семантику и может определять перемещение фрагментов кода (процедур и функций). Например, можно включить показ изменения порядка , и тогда станет видно, что процедура ПриСозданииНаСервере() изменила свое местоположение в модуле.
Кроме этого, можно группировать соответствия , что облегчает восприятие изменений в нескольких соседних строках: без группировки (верхний рисунок) и с группировкой (нижний рисунок).
Группа параметров Сравнение и объединение позволяет вам выбрать способ сравнения модулей: с учетом их структуры или без учета.
Группа параметров Внешние программы позволяет вам настроить то, какие внешние программы и каким образом будут использоваться для сравнения модулей.