К статье
Практический материал

Разработка и Конфигурация · 11 мин

Как сравнивать конфигурации 1С

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

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

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

Ниже разобраны способы сравнения: через конфигуратор, через файлы выгрузки, через хранилище и сторонние средства, а также правила безопасного объединения и контроля результата.

Когда требуется сравнение конфигураций

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

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

Третий сценарий — аудит. Когда над базой работал внешний подрядчик или несколько разработчиков, сравнение текущей конфигурации с эталонной копией показывает, что именно было изменено. Это полезно и при приёмке работ, и при разборе инцидентов, когда после обновления «что-то сломалось».

Сравнение через конфигуратор: базовый способ

Встроенный механизм запускается из меню «Конфигурация». Доступны варианты: сравнить основную конфигурацию с конфигурацией базы данных, с конфигурацией поставщика, с конфигурацией из файла или с другой базой через файл выгрузки. Для сравнения двух независимых баз сначала выгружают одну из них в файл .cf («Конфигурация → Сохранить конфигурацию в файл»), затем во второй базе выбирают «Сравнить и объединить с конфигурацией из файла».

Результат отображается в виде дерева метаданных с отметками об отличиях. Двойной щелчок по объекту открывает детальное сравнение: для модулей — построчное сравнение кода, для форм — различия в структуре элементов, для макетов — различия областей. В окне сравнения видно, какие объекты добавлены, удалены или изменены в каждой из версий.

Порядок сравнения двух баз через файл
  1. 1
    Сделайте резервные копии обеих баз через выгрузку .dt или средствами СУБД
  2. 2
    В первой базе выполните «Конфигурация → Сохранить конфигурацию в файл» и сохраните .cf
  3. 3
    Во второй базе откройте «Конфигурация → Сравнить и объединить с конфигурацией из файла» и укажите сохранённый .cf
  4. 4
    Дождитесь построения дерева отличий и пройдите по изменённым объектам, открывая детальное сравнение
  5. 5
    Если цель — только анализ, закройте окно без нажатия «Выполнить»; изменения применятся только после явного объединения

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

Настройка правил объединения и приоритетов

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

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

Особого внимания требуют модули. Построчное сравнение показывает изменённые процедуры, и для каждого блока можно выбрать версию. Механическое «взять всё новое» в доработанном модуле почти гарантированно уничтожит свои изменения.

Сравнение через выгрузку в файлы конфигурации

Команда «Конфигурация → Выгрузить конфигурацию в файлы» сохраняет всю конфигурацию в виде дерева XML-файлов: отдельный файл для каждого объекта, модуля, формы. Если выгрузить так две версии в разные каталоги, их можно сравнить любым инструментом сравнения каталогов — от встроенных средств ОС до специализированных программ сравнения файлов.

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

Для управляемых форм выгрузка в файлы особенно полезна: в конфигураторе сравнение форм менее наглядно, чем сравнение их XML-представления, где видны изменения элементов, привязок данных и обработчиков.

Сравнение через хранилище конфигурации

Если разработка ведётся через хранилище конфигурации, сравнение встроено в рабочий процесс. Команда «Сравнить и объединить с конфигурацией из хранилища» показывает отличия локальной версии от выбранной версии в хранилище. История версий позволяет увидеть, кто и когда менял конкретный объект, и сравнить любые две версии между собой.

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

Сторонние инструменты и подходы

Для больших проектов применяют выгрузку в файлы формата EDT или XML с последующим хранением в Git. Тогда сравнение версий выполняется штатными средствами Git: diff, blame, просмотр истории по строкам. Это даёт полноценный код-ревью и ветвление, чего штатное хранилище не обеспечивает.

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

Способы сравнения конфигураций

Сравнить и объединить в конфигураторе

Подходит для обновлений и переноса доработок. Ограничение: ориентирован на объединение, а не на чистый анализ.

Выгрузка в файлы + внешнее сравнение

Подходит для аудита, поиска по коду и интеграции с Git. Ограничение: шум от служебных XML-атрибутов.

Хранилище конфигурации

Подходит для командной разработки и истории версий. Ограничение: сравнение на уровне объектов, а не строк.

1C:EDT с Git

Подходит для больших проектов с код-ревью и ветками. Ограничение: требует перестройки процесса разработки.

Проверка результата после объединения

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

Затем обновите конфигурацию базы данных на тестовой копии и проследите за реструктуризацией: добавление реквизитов, изменение типов, удаление объектов. Проверьте ключевые сценарии работы: проведение основных документов, формирование регламентированных отчётов, обмены с другими системами.

Контрольные точки

Как проверить результат объединения

Проверка конфигурации в конфигураторе
Норма

Нет ошибок компиляции модулей и битых ссылок на объекты

Тревожный признак

Ошибки в модулях, ссылки на удалённые объекты

Реструктуризация базы данных
Норма

Завершилась без ошибок, данные на месте

Тревожный признак

Ошибки преобразования типов, потеря данных в изменённых реквизитах

Доработанные объекты
Норма

Свои изменения сохранены и работают вместе с новыми механизмами поставщика

Тревожный признак

Доработки затёрты или конфликтуют с обновлённой логикой

Права и интерфейс
Норма

Пользователи видят нужные объекты, роли работают

Тревожный признак

Пропали права на новые объекты, ошибки доступа

Типичные ошибки при сравнении и объединении

Типичные ошибки
01
Объединение без резервной копии — при ошибке реструктуризации данные теряются безвозвратно
02
Режим «взять всё из файла» для доработанных объектов — собственные изменения затираются
03
Игнорирование связанных объектов — перенесён реквизит, но не перенесены форма, права и обмены, где он участвует
04
Сравнение выгрузок, сделанных разными версиями платформы — ложные отличия из-за формата файлов
05
Обновление конфигурации базы данных сразу после объединения без проверки конфигурации — ошибки обнаруживаются уже на этапе реструктуризации

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

Перед большим объединением полезно выгрузить обе конфигурации в файлы и сохранить каталоги как архив. Если после слияния что-то пойдёт не так, по этим снимкам легко восстановить, какой была каждая версия, и повторить разбор только проблемных объектов, а не всей конфигурации.
ПЗ
Практическое замечание

Частые вопросы

Можно ли сравнить конфигурации без объединения?

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

Чем сравнить модули построчно?

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

Как сравнить рабочую базу с типовой конфигурацией поставщика?

Используйте «Конфигурация → Поддержка → Настройка поддержки» и сравнение с конфигурацией поставщика. Если у вас есть файл новой версии от поставщика (.cf или .cfu), сравнивайте через «Сравнить и объединить с конфигурацией из файла».

Что делать, если объекты изменены с обеих сторон?

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

Можно ли сравнить только роли или только права?

Штатное дерево сравнения позволяет отфильтровать объекты по виду, включая роли. Для детального анализа прав по объектам используют выгрузку в файлы — права хранятся в XML-представлении ролей и сравниваются как текст.

Безопасно ли сравнение для данных в базе?

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

Итог

Что важно запомнить

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