Как найти различия между двумя конфигурациями 1С
Содержание
Две базы разошлись: где-то дорабатывали под клиента, где-то накатывали обновление, и теперь никто не помнит, чем конфигурации отличаются. Самый быстрый ответ — штатный инструмент: в Конфигураторе откройте Конфигурация → Сравнить конфигурации…, выберите две конфигурации (основную, базы данных, поставщика или из файла) и получите дерево различий. Если нужно сравнить два отдельных файла .cf или держать историю изменений — подойдут выгрузка в файлы с diff-утилитой и Git.
Ниже — четыре рабочих способа сравнить конфигурации 1С (от штатного отчёта до автоматизации), таблица, какой из них когда применять, и разбор того, что делать с макетами и внешними обработками. Всё для платформы 8.3 с интерфейсом «Такси».
Что именно сравнивают и что покажет результат
Сравнивать можно не любые «две базы», а конкретные конфигурации. В одной информационной базе их обычно несколько:
- 🗂️ Основная конфигурация — та, что вы правите в Конфигураторе.
- 💾 Конфигурация базы данных — активная, по которой реально работают пользователи. Расходится с основной, пока вы не нажали «Обновить конфигурацию базы данных».
- 🏭 Конфигурация поставщика — эталон от разработчика (типовая БП, ЗУП, УТ), если база на поддержке.
- 📄 Конфигурация из файла — выгрузка
.cf, присланная коллегой или снятая с другой базы.
Результат сравнения — это дерево объектов (справочники, документы, регистры, модули, формы, макеты, роли), в котором видно: объект есть только слева, только справа или отличается в обоих. Само по себе сравнение ничего не меняет в базе — это чтение. Опасно только соседнее действие «объединение», о нём ниже.
Сравнение штатными средствами Конфигуратора
Это основной способ, когда обе конфигурации доступны в одной базе или одна из них лежит в файле .cf.
Сравнить две конфигурации внутри базы
- Откройте базу в Конфигураторе (режим
Конфигуратор, а не1С:Предприятие). - Меню
Конфигурация → Сравнить конфигурации…. - В двух выпадающих списках выберите, что с чем сравнить. Типичный случай — «Основная конфигурация» и «Конфигурация базы данных»: так видно, что вы наменяли, но ещё не применили.
- Нажмите OK — откроется окно с деревом различий.
В дереве раскрывайте ветки: красным и значками помечены изменённые и отсутствующие объекты. Двойной щелчок по строке с модулем открывает построчное сравнение текста — слева одна редакция, справа другая.
Если конфигурации крупные, в настройках сравнения отберите только интересующие типы объектов (например, одни документы или одни общие модули) и скройте совпадающие — так в дереве останутся лишь реальные расхождения, и разбирать их быстрее.
Сравнить с конфигурацией из файла
Если вторая конфигурация пришла файлом .cf:
Конфигурация → Сравнить, объединить с конфигурацией из файла….- Укажите путь к
.cf. - Платформа построит то же дерево различий, но добавит галочки для объединения.
Из этого окна одной кнопкой «Выполнить» запускается объединение — оно перезапишет вашу конфигурацию. Если вы только смотрите различия, отчёт сформируйте и закройте окно, ничего не выполняя. Перед реальным объединением сделайте выгрузку базы в .dt.
Сравнить с конфигурацией поставщика
Когда база на поддержке, различия с типовой смотрят через Конфигурация → Поддержка → Настройка поддержки…. Напротив изменённых объектов стоит пометка «Изменён», по ней видно, что отступило от эталона. Это и есть ответ на вопрос «что у нас допилено относительно типовой».
Сохранить отчёт о сравнении
Чтобы отдать различия коллеге или приложить к задаче:
- В окне сравнения — команда формирования отчёта (в командной панели окна различий).
- Отчёт сохраняется как текст или табличный документ
.mxl. - В настройках отчёта можно оставить только изменённые объекты и выбрать уровень детализации — вплоть до построчных различий в модулях.
Для разовой передачи удобнее .mxl: он открывается и в 1С:Предприятии, и просмотрщиком, сохраняет структуру дерева.
Как сравнить два файла .cf между собой
Штатный диалог сравнивает текущую конфигурацию с файлом, но не два файла напрямую. Приём:
- Создайте пустую файловую базу .
Конфигурация → Загрузить конфигурацию из файла…— загрузите первый.cf.Конфигурация → Сравнить, объединить с конфигурацией из файла…— укажите второй.cf.- Смотрите дерево различий, объединение не выполняйте.
Пустая база играет роль нейтральной площадки, ваши рабочие базы при этом не затрагиваются.
Сравнение через выгрузку в файлы и diff-утилиты
Штатное дерево хорошо для одного взгляда, но его неудобно хранить, искать по нему и показывать в виде привычного diff. Для этого конфигурацию выгружают в набор текстовых файлов.
В Конфигураторе: Конфигурация → Выгрузить конфигурацию в файлы… — укажите пустой каталог. Платформа разложит объекты по папкам, модули — в .bsl (или .txt в старых релизах), формы и макеты — в XML.
Сделайте это для обеих конфигураций в два разных каталога и сравните их любой diff-утилитой для папок:
- KDiff3, WinMerge, Beyond Compare — сравнение каталогов целиком, с подсветкой изменённых строк в модулях.
- Результат читается как обычный diff: что добавлено, что удалено, что переписано.
Этот же приём лежит в основе «внешнего» сравнения, когда штатного отчёта не хватает: вся логика модулей оказывается в текстовом виде, и к ней применимы привычные инструменты сравнения кода.
Выгрузка в файлы долгая на крупной конфигурации (несколько минут и тысячи файлов). Выгружайте в пустой каталог и не кладите туда ничего лишнего — diff по папкам чувствителен к мусору.
Сравнение истории изменений через Git
Если сравнивать приходится регулярно — удобнее не ловить два состояния вручную, а хранить конфигурацию в системе контроля версий. Тогда «сравнить две версии» превращается в обычный git diff.
Схема рабочая такая:
- Выгружаете конфигурацию в файлы (вручную или командой пакетного режима — см. раздел про автоматизацию).
- Кладёте каталог выгрузки под Git и делаете коммит на каждую значимую правку.
- Любые две точки истории сравниваете командой
git diff <коммит1> <коммит2>или через графический клиент.
Для связки 1С и Git чаще всего берут gitsync и precommit1c (инструменты на OneScript): они приводят выгрузку к стабильному для diff виду и упрощают коммиты. Это сторонние проекты сообщества, не входят в поставку платформы.
Отдельно стоит 1C:Enterprise Development Tools (EDT) — среда разработки, где проект изначально хранится как текстовые файлы и дружит с Git «из коробки». В EDT сравнение и объединение версий встроены (Compare With на объекте или проекте), поэтому для Git-процесса EDT — самый естественный вариант.
Git сравнивает текстовую выгрузку, а не саму базу. Если выгрузки сделаны разными версиями платформы или с разными настройками, в diff попадут технические, а не смысловые различия. Фиксируйте способ выгрузки.
Какой способ выбрать: сравнение методов
Коротко — чем отличаются подходы и когда какой брать.
| Способ | Что показывает | Когда применять | Хранит историю |
|---|---|---|---|
| Отчёт Конфигуратора | Дерево различий, построчно в модулях | Разовый взгляд, передача коллеге, сравнение с поставщиком | Нет |
| Выгрузка в файлы + diff | Полный diff всех объектов как текст | Детальный разбор модулей, большие расхождения | Нет (только два снимка) |
| Git / EDT | Любые две версии из истории | Командная разработка, регулярные сравнения | Да |
| CI/CD-проверка | Автоотчёт при каждой сборке | Поток обновлений, контроль регрессий | Да |
На практике: один раз посмотреть — Конфигуратор; разобраться в коде по-крупному — выгрузка в файлы; вести разработку командой — Git или EDT.
Сравнение макетов и внешних обработок
С модулями и реквизитами всё наглядно, а вот два случая требуют отдельного подхода.
Макеты (табличные документы). В дереве различий платформа чаще показывает только факт «макет изменён», без детализации по ячейкам. Чтобы понять, что именно поправили в печатной форме, откройте макет в каждой конфигурации, сохраните как табличный документ .mxl в файл и сравните два файла визуально. Схемы компоновки данных в макетах лучше читаются через выгрузку в файлы — там СКД лежит отдельным XML.
Внешние отчёты и обработки (.erf, .epf). Это самостоятельные файлы, их нет в дереве конфигурации. Чтобы сравнить две версии обработки, выгрузите каждую в файлы (EDT умеет это для внешних отчётов и обработок) и сравните каталоги diff-утилитой. Если нужен только встроенный код — откройте обе обработки в Конфигураторе и сравните тексты модулей вручную или через выгрузку модуля в текст.
Если внешних обработок много и они часто меняются, храните их исходники (выгрузку в файлы) в том же Git, что и конфигурацию, — тогда отдельная процедура сравнения не нужна.
Сравнение расширений конфигурации
Расширения (появились в платформе 8.3.6, хранятся в файлах .cfe) — отдельные от основной конфигурации объекты, и сравнивают их своими путями.
Открыть список расширений: Конфигурация → Расширения конфигурации. Каждое расширение — это самостоятельная конфигурация со своим деревом объектов. Два частых сравнения:
- Расширение против основной конфигурации — чтобы понять, какие объекты расширение заимствует и что в них переопределяет. Заимствованные объекты в дереве расширения помечены особым значком.
- Две версии одного расширения (например, до и после доработки) — выгрузите каждую в файлы через тот же
Выгрузить конфигурацию в файлы…, предварительно сделав расширение активным, и сравните каталоги diff-утилитой.
Чтобы сравнить два файла .cfe между собой, загрузите их в тестовую базу (Загрузить конфигурацию из файла… в контексте расширения) и действуйте как с обычными конфигурациями — через дерево различий.
Расширения удобно вести в Git наравне с основной конфигурацией: их выгрузка в файлы ложится в тот же репозиторий, и сравнение версий сводится к git diff.
Автоматизация сравнения в CI/CD
Когда обновления идут потоком, сравнение встраивают в сборочный конвейер, чтобы различия формировались сами при каждом изменении.
Опора — пакетный режим Конфигуратора. Основные команды:
"C:\Program Files\1cv8\<версия>\bin\1cv8.exe" DESIGNER /F "C:\base" ^
/DumpConfigToFiles "C:\out\base_A"
"...\1cv8.exe" DESIGNER /F "C:\base" /DumpCfg "C:\out\base.cf"
/DumpConfigToFiles— выгрузка конфигурации в каталог текстовых файлов./DumpCfg— выгрузка в единый файл.cf.- Обратная загрузка —
/LoadConfigFromFilesи/LoadCfgсоответственно.
Типовой конвейер в Jenkins или GitLab CI выглядит так:
- Шаг выгружает конфигурацию каждой базы в файлы командой
DESIGNER /DumpConfigToFiles. - Выгрузка коммитится в Git.
git diffили отдельный шаг сравнения формирует отчёт о различиях между веткой и эталоном.- Отчёт прикладывается к сборке; при расхождениях вне ожидаемого сборка помечается как требующая внимания.
Пакетный запуск Конфигуратора берёт лицензию и может требовать монопольного доступа к базе при некоторых операциях. На рабочей базе запускайте выгрузку в окно, когда пользователи не работают, либо выгружайте из копии.
Для оркестрации этих шагов сообщество использует те же gitsync и связку с Vanessa Automation (для тестов), но ядро — всегда пакетные команды платформы, показанные выше.
Частые вопросы
Можно ли сравнить конфигурации без объединения, ничего не меняя в базе?
Конфигурация → Сравнить конфигурации… строит дерево различий и не трогает базу. Диалог «Сравнить, объединить…» тоже показывает различия; просто не нажимайте «Выполнить» — закройте окно после просмотра или отчёта.Как сравнить конфигурацию базы данных с основной?
Сравнить конфигурации… выберите в одном списке «Основная конфигурация», в другом — «Конфигурация базы данных». Различия есть всегда, пока вы правите основную и не нажали «Обновить конфигурацию базы данных».Почему в сравнении куча различий, хотя конфигурации «одинаковые»?
.cf). Приведите обе к одной версии и одному формату выгрузки — технические различия уйдут.