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

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

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

Как сравнить две конфигурации 1С через конфигуратор, внешние отчёты и выгрузку в XML. Настройка отборов, анализ отличий, типичные ошибки и проверка результата.

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

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

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

Когда нужно сравнение конфигураций, а когда — сравнение данных

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

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

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

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

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

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

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

Настройка отборов и фильтров при сравнении

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

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

При сравнении с конфигурацией поставщика (через «Поддержка → Настройка поддержки») платформа дополнительно показывает, какие объекты изменены относительно типовой поставки и стоят ли они на замке. Это самый быстрый способ получить список доработок типовой базы.

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

Альтернативный подход — выгрузить обе конфигурации в набор XML-файлов («Конфигурация → Выгрузить конфигурацию в файлы») и сравнить каталоги любым инструментом сравнения файлов: KDiff3, WinMerge, Beyond Compare или встроенным сравнением в Git. Такой способ даёт полный контроль над тем, что и как сопоставляется.

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

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

Сравнение способов

Штатное «Сравнить, объединить»

Быстрый старт, наглядное дерево, детализация форм и ролей. Ограничение: неудобен для больших модулей и нет истории сравнений.

Выгрузка в XML + файловый diff

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

Сравнение с конфигурацией поставщика

Мгновенно показывает доработки типовой базы. Ограничение: работает только для конфигураций на поддержке.

EDT и сравнение проектов

Удобен командной разработке, интеграция с Git. Ограничение: требует перехода на EDT и настройки проектов.

Как анализировать отдельные виды различий

Модули и код

Для модулей ключевой инструмент — построчное сравнение текстов. В штатном окне оно открывается двойным щелчком по строке модуля; изменённые строки подсвечиваются. Обращайте внимание не только на добавленный код, но и на удалённый: при обновлении именно удалённые доработки чаще всего становятся источником ошибок.

Формы

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

Роли и права

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

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

Проверка результата и частые ошибки

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

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

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

Как проверить результат

Дерево сравнения построено без ошибок
Норма

Открывается полная иерархия объектов обеих конфигураций

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

Ошибка загрузки файла или пустое дерево — проверьте версию платформы и целостность .cf

Список доработок
Норма

Все отличия из дерева внесены в список с указанием вида изменения

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

Отличия просмотрены «по памяти», фиксации нет

Доработки после обновления
Норма

Изменённый код на месте, сценарии выполняются без ошибок

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

Доработанный код перезаписан типовым, появляются ошибки в изменённых объектах

FAQ

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

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

Как быстро получить список всех доработок типовой базы?

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

Почему объект помечен как изменённый, хотя код совпадает?

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

Подходит ли штатное сравнение для больших модулей?

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

Можно ли сравнить конфигурации разных версий платформы?

Файл .cf, сохранённый на более новой платформе, может не открыться в старом конфигураторе. Приведите обе базы к одной версии платформы или выполняйте сравнение на той машине, где установлена более новая совместимая версия.

Итог

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

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