Araxis Merge и 1С: сравнение конфигураций и модулей

Разработчик 1С, который сливает доработки из филиальной базы в основную конфигурацию, быстро упирается в ограничения штатного сравнения конфигураций: оно показывает различия объектов, но не даёт удобного построчного анализа кода модулей. Именно здесь подключается Araxis Merge — внешний инструмент трёхстороннего сравнения текста, который многие команды используют как дополнение к конфигуратору 1С при работе с выгруженными модулями и файлами поставки.

Связка «Araxis Merge + 1С» не является официальной интеграцией: платформа 1С:Предприятие не имеет встроенной поддержки этого редактора. Поэтому применение строится вокруг выгрузки текстов модулей во внешние файлы, сравнения их в Araxis Merge и переноса изменений обратно. Ниже разберём, в каких задачах такой подход оправдан, как его настроить и где его ограничения.

Зачем 1С-разработчику внешний инструмент сравнения

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

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

Отдельный сценарий — сравнение текстовых выгрузок конфигурации между версиями. Выгрузка конфигурации в файлы (через соответствующую команду конфигуратора) создаёт дерево XML- и текстовых файлов, которые можно сравнивать каталогами — а это одна из сильных сторон Araxis Merge.

Типовые сценарии использования с 1С

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

  • 🔀 Слияние доработок из двух баз — выгрузка текстов модулей из основной и филиальной конфигурации, сравнение и перенос изменений.
  • 📦 Анализ обновления типовой конфигурации — сравнение модулей старой и новой версии поставщика, чтобы найти места, где доработки пересекаются с изменениями вендора.
  • 🗂 Сравнение выгрузок конфигурации в файлы — анализ различий двух полных выгрузок на уровне каталогов.
  • 🧾 Код-ревью — визуальное сравнение версии модуля до и после правки перед отправкой в хранилище.
  • 🌍 Трёхстороннее слияние — базовая версия поставщика плюс две независимые доработки, объединяемые в одну.

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

Порядок работы: от выгрузки до переноса изменений

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

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

☑️ Цикл сравнения модулей 1С через Araxis Merge

Выполнено: 0 / 6

Далее в Araxis Merge откройте сравнение двух файлов или каталогов. Переносите нужные блоки кнопками слияния, сохраняя результат как новый файл. Итоговый текст загружается обратно в модуль через конфигуратор — после чего обязательна проверка синтаксиса модуля и обновление конфигурации базы данных на тестовой копии.

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

Настройка Araxis Merge под специфику 1С

Тексты модулей 1С имеют особенности, которые стоит учесть в настройках сравнения. Русскоязычный код, директивы компиляции (&НаКлиенте, &НаСервере), инструкции препроцессора (#Если ... #КонецЕсли) — всё это обычный текст для Araxis Merge, но корректная кодировка критична.

Проверьте, что при сохранении модулей из конфигуратора и при открытии файлов в Araxis Merge используется согласованная кодировка (как правило, UTF-8). При несовпадении кодировок кириллица отобразится нечитаемо, и сравнение потеряет смысл. Если видите «кракозябры» — сначала исправьте кодировку, а не пытайтесь сливать текст.

Полезные настройки для 1С-кода:

  • 🔤 Игнорирование различий в пробелах — отсекает шум от разной табуляции и отступов.
  • 🔡 Учёт или игнорирование регистра — встроенный язык 1С нечувствителен к регистру, поэтому игнорирование регистра часто уместно.
  • 📁 Фильтры файлов при сравнении каталогов — позволяют исключить служебные файлы выгрузки и сравнивать только модули.

Сравнение с альтернативами

Araxis Merge — коммерческий продукт, и перед покупкой лицензий на команду разумно сопоставить его с доступными альтернативами. Ниже — сравнение по критериям, важным именно для 1С-разработки, без привязки к конкретным ценам, которые меняются со временем.

ИнструментТрёхстороннее слияниеСравнение каталоговЛицензияПодходит для выгрузок 1С
Araxis MergeДаДаКоммерческаяДа
KDiff3ДаДаСвободнаяДа
WinMergeОграниченноДаСвободнаяДа, для двустороннего сравнения
Штатное сравнение конфигураций 1СНетНет (на уровне метаданных)Входит в платформуДа, но без построчного анализа модулей

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

📊 Какой инструмент сравнения кода вы используете в 1С-проектах?
Только штатное сравнение конфигуратором
Araxis Merge
KDiff3 или WinMerge
EDT со встроенным сравнением

Ограничения и подводные камни

Главное ограничение принципиально: Araxis Merge работает с текстом, а конфигурация 1С — это не только код. Формы, макеты, роли, права, настройки подсистем хранятся в собственных форматах, и их сравнение текстовым инструментом либо невозможно, либо бессмысленно. Для метаданных основным инструментом остаётся штатное сравнение конфигураций или среда 1C:Enterprise Development Tools (EDT).

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

Второй момент — семантика. Инструмент сравнения не понимает логику встроенного языка: он покажет различие строк, но не подскажет, что перенос фрагмента сломал обращение к переименованной процедуре в другом модуле. Поэтому после каждого слияния обязательна полная проверка синтаксиса конфигурации, а не только изменённого модуля.

Что делать, если после слияния конфигурация не обновляется

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

Когда связка не нужна

Честная оценка инструмента включает и понимание, когда он избыточен. Если разработка ведётся одним специалистом в одной базе, внешнее сравнение почти ничего не даёт — штатных механизмов хватает. Аналогично, если команда уже перешла на EDT с системой контроля версий (например, Git), то сравнение и слияние выполняются средствами самой VCS, и роль отдельной утилиты сокращается до разрешения сложных конфликтов.

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

Часто задаваемые вопросы

Можно ли подключить Araxis Merge напрямую к конфигуратору 1С как внешний инструмент сравнения?

Штатной интеграции, при которой конфигуратор вызывает Araxis Merge автоматически, платформа не предоставляет. Работа строится через промежуточную выгрузку текстов модулей или конфигурации в файлы, сравнение их внешним инструментом и обратную загрузку результата.

Подходит ли Araxis Merge для сравнения файлов выгрузки конфигурации целиком?

Да, сравнение каталогов — одна из сильных сторон инструмента. Выгрузите обе версии конфигурации в файлы в отдельные каталоги и сравните их как папки. Учтите, что значимыми для анализа будут прежде всего тексты модулей; бинарные и служебные файлы выгрузки текстовое сравнение не осмыслит.

В какой кодировке сохранять модули для сравнения?

Ориентируйтесь на UTF-8 и главное — на одинаковую кодировку на этапах выгрузки и открытия. Если кириллица в окне сравнения отображается некорректно, проблема именно в несовпадении кодировок, и её нужно устранить до начала слияния.

Чем трёхстороннее слияние лучше двустороннего для 1С?

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

Заменяет ли Araxis Merge хранилище конфигурации или Git?

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