Сравнение конфигураций в конфигураторе 1С 8.3 и из командной строки
Содержание
Сравнить две конфигурации в 1С 8.3 можно тремя способами. Если обе конфигурации доступны в одном конфигураторе (основная, конфигурация базы данных, поставщика, хранилища), используйте Конфигурация → Сравнить конфигурации…. Если вторая конфигурация лежит в файле .cf из другой базы — Конфигурация → Сравнить, объединить с конфигурацией из файла…. Если сравнение нужно регулярно и без участия человека — запускайте 1cv8 DESIGNER с ключом /CompareCfg или выгружайте конфигурации в XML и сравнивайте их системой контроля версий.
Отдельная утилита не нужна: и интерактивное, и пакетное сравнение выполняет сам конфигуратор. Сравнение ничего не меняет в базе, пока вы не нажали «Выполнить» в режиме объединения.
Когда администратору нужно сравнение конфигураций
Типовые ситуации, в которых без сравнения не обойтись:
- 🔄 Перед обновлением доработанной базы. Нужно понять, какие типовые объекты изменены и где новая версия поставщика заденет доработки.
- 📦 Перенос доработок между базами. Программист сделал правки в копии, их нужно аккуратно перенести в рабочую базу, не затерев чужие изменения.
- 🕵️ Аудит базы, принятой от другого подрядчика. Сравнение с чистой типовой того же релиза показывает реальный объём доработок.
- ⚠️ Неприменённые изменения. Основная конфигурация отличается от конфигурации базы данных: кто-то правил и не обновил базу (F7).
- 🧩 Разбор расхождений между копиями. Тестовая и рабочая базы «должны быть одинаковыми», но ведут себя по-разному.
Главный практический вопрос всегда один: какие объекты отличаются и что именно в них отличается — реквизиты, формы, модули, макеты, права.
Подготовка: какие конфигурации можно сравнить и что сделать заранее
Что доступно для сравнения
В диалоге сравнения выбираются две конфигурации из списка:
| Тип | Что это | Когда выбирать |
|---|---|---|
| Основная конфигурация | То, что открыто в дереве конфигуратора | Почти всегда одна из двух |
| Конфигурация базы данных | То, по чему реально работают пользователи | Проверка неприменённых изменений |
| Конфигурация поставщика | Типовая, от которой взята доработанная | Оценка объёма доработок |
| Конфигурация из файла | Файл .cf | Сравнение с другой базой или релизом |
| Конфигурация хранилища | Версия из хранилища конфигурации | Групповая разработка |
Конфигурация поставщика есть в списке, только если основная стоит на поддержке. Конфигурация хранилища — только если база подключена к хранилищу.
Как получить .cf второй базы
- Откройте вторую базу в конфигураторе.
- Выберите
Конфигурация → Сохранить конфигурацию в файл…. - Укажите путь, например
D:\cmp\buh_test.cf.
Сохранение конфигурации в файл не требует монопольного доступа, пользователи могут продолжать работу.
Что сделать до объединения
Для простого сравнения достаточно открыть базу в конфигураторе. Если же после сравнения вы планируете объединять, сначала сделайте выгрузку информационной базы в .dt или резервную копию средствами СУБД. Объединение меняет основную конфигурацию, а откат «назад» после ошибки занимает больше времени, чем копия.
Сравнивайте копию рабочей базы, а не саму рабочую. Конфигуратор с открытым окном сравнения большой конфигурации (БП, ЗУП, ERP) занимает заметный объём памяти, на терминальном сервере с пользователями это лишняя нагрузка.
Конфигурация → Сравнить, объединить с конфигурацией из файла… в другой. Если объединять не нужно — закройте окно без выполнения.Конфигурация → Сравнить конфигурации…, слева конфигурация поставщика, справа основная. Если поддержка снята — сравнивайте с .cf типовой того же релиза.Конфигурация → Сравнить конфигурации…: основная и конфигурация базы данных.1cv8 DESIGNER /CompareCfg с отчётом в файл или выгрузка в XML и сравнение в Git.Сравнение конфигураций через конфигуратор пошагово
Шаг 1. Открыть диалог
Запустите базу в режиме «Конфигуратор» и откройте конфигурацию (Конфигурация → Открыть конфигурацию). Затем выберите Конфигурация → Сравнить конфигурации….
Шаг 2. Выбрать пару
В диалоге два поля: первая и вторая конфигурация. Для каждой выберите тип из списка выше. Если выбран файл — укажите путь к .cf. Для хранилища — номер версии.
Здесь же задаётся правило сопоставления объектов:
- по внутренним идентификаторам — для конфигураций одного происхождения (база и её копия, доработанная и её типовая);
- по именам — для конфигураций, созданных независимо, где одинаковые объекты имеют разные идентификаторы.
Если сравнить по идентификаторам две независимо созданные конфигурации, одинаковые по имени справочники попадут в отчёт как «есть только в одной». Это частая причина «огромного списка отличий», которого на деле нет.
Шаг 3. Работать с деревом отличий
После расчёта откроется окно с двумя деревьями объектов. Отличающиеся объекты подсвечены, у каждого видно, есть ли он в обеих конфигурациях или только в одной.
Что полезно сделать сразу:
- Включите фильтр, показывающий только отличия, — иначе в дереве останутся тысячи совпадающих объектов.
- Раскройте нужный объект до уровня свойств: реквизиты, табличные части, формы, модули, макеты.
- Для модулей откройте построчное сравнение — команда показа различий в модулях доступна из контекстного меню объекта и из меню «Действия» окна. Отличающиеся строки подсвечиваются в двух панелях.
- Формы сравниваются отдельно: открывается окно с элементами, реквизитами и командами формы, а модуль формы — как обычный модуль.
Частный случай: основная и конфигурация базы данных
Эта пара отвечает на вопрос «что применится при нажатии F7». В дереве будут только объекты, изменённые в конфигураторе после последнего обновления базы. Пустой список означает, что основная и конфигурация базы данных совпадают. Длинный список в рабочей базе — повод выяснить у разработчика, чьи это правки и готовы ли они к применению.
Внешняя программа сравнения
Встроенное сравнение модулей работает, но на длинных общих модулях неудобно. В Сервис → Параметры есть настройки сравнения и объединения, где можно подключить внешнюю программу (например, KDiff3 или WinMerge). Тогда построчное сравнение модулей откроется в ней.
Пакетное сравнение: 1cv8 DESIGNER /CompareCfg
Для регулярных проверок окно конфигуратора не нужно. Конфигуратор умеет сравнивать конфигурации в пакетном режиме и сохранять отчёт в файл:
"C:\Program Files\1cv8\8.3.24.1691\bin\1cv8.exe" DESIGNER ^
/F"D:\Bases\Buh" /N"Администратор" /P"" ^
/DisableStartupDialogs ^
/CompareCfg ^
-FirstConfigurationType MainConfiguration ^
-SecondConfigurationType File -SecondFile "D:\cmp\buh_test.cf" ^
-MappingRule ByObjectIDs ^
-ReportType Full -ReportFormat txt ^
-ReportFile "D:\cmp\diff_report.txt" ^
/Out "D:\cmp\designer.log"
Что здесь важно:
-FirstConfigurationTypeи-SecondConfigurationTypeпринимают типы, аналогичные диалогу: основная (MainConfiguration), базы данных (DBConfiguration), поставщика (VendorConfiguration), файл (File) и другие;-MappingRule— правило сопоставления:ByObjectIDsилиByObjectNames;-ReportType— краткий (Brief) или полный (Full) отчёт;/Out— лог конфигуратора: если отчёт не появился, причина будет там.
Путь к 1cv8.exe подставьте свой: номер версии в каталоге должен совпадать с установленной платформой. Полный перечень параметров /CompareCfg (в том числе для расширений и хранилища) приведён в документации к платформе, в разделе о параметрах командной строки конфигуратора.
Пароль в .bat-файле хранится открытым текстом. Для сервера сборки заведите отдельного пользователя базы только с правами администрирования конфигурации и ограничьте доступ к каталогу со скриптами.
Альтернатива: выгрузка в файлы и Git
Второй приём практиков — выгрузить обе конфигурации в XML и сравнить обычными средствами:
1cv8.exe DESIGNER /F"D:\Bases\Buh" /N"Администратор" /P"" /DumpConfigToFiles "D:\cmp\buh" -Format Hierarchical
1cv8.exe DESIGNER /F"D:\Bases\BuhTest" /N"Администратор" /P"" /DumpConfigToFiles "D:\cmp\buh_test" -Format Hierarchical
git diff --no-index --stat D:\cmp\buh D:\cmp\buh_test
Плюсы: модули выгружаются в .bsl, и отличия видны построчно в любой программе сравнения. Можно хранить историю в Git и видеть, кто и когда изменил объект. Минус: формы и метаданные лежат в XML, и часть отличий там технические — порядок элементов, служебные атрибуты.
Как читать отчёт о различиях
Отчёт строится из окна сравнения через меню «Действия» или сразу в файл в пакетном режиме. Он бывает кратким (список отличающихся объектов) и подробным (с перечнем отличающихся свойств и строк модулей). Формат — текст или табличный документ.
Читать отчёт удобно в таком порядке:
- Объекты, которые есть только в одной конфигурации. Это новые справочники, документы, регистры, общие модули. Добавленный регистр почти всегда означает доработку с собственными данными — его потерю при обновлении заметят пользователи.
- Изменённые типовые объекты. Смотрите, что изменено: реквизит, форма, модуль. Изменённый модуль менеджера или модуль объекта документа — зона риска при обновлении.
- Роли и права. Отличия в ролях легко пропустить, а именно они дают «у бухгалтера пропала кнопка» после обновления.
- Макеты и печатные формы. Изменённый макет типовой печатной формы при объединении проще перенести вручную, чем сливать.
Сохраните краткий отчёт по каждой базе после обновления. Через полгода он ответит на вопрос «что здесь доработано», когда разработчика уже не будет рядом.
Ложные отличия
Отличия, которые не являются доработками:
- 🔤 разный регистр или пробелы в модулях после правки в другом редакторе;
- 🧾 технические изменения форм после пересохранения в конфигураторе другой версии платформы;
- 🆔 объекты «есть только слева» и «только справа» с одинаковым именем — признак неверного правила сопоставления (см. шаг 2).
Конфликты и объединение конфигураций
Сравнение превращается в объединение, когда вы открываете Конфигурация → Сравнить, объединить с конфигурацией из файла…. Окно то же, но у каждого объекта появляется флажок: отмеченные будут перенесены из файла в основную конфигурацию.
Режимы объединения свойств
Для каждого отличающегося свойства можно выбрать, как его объединять:
| Режим | Что произойдёт | Когда выбирать |
|---|---|---|
| Взять из файла | Свойство заменится версией из .cf | Своих правок в объекте нет |
| Оставить основную | Флажок снят, свойство не меняется | Доработка важнее нового варианта |
| Объединить с приоритетом основной | Слияние, при конфликте строк остаётся основная | Модуль с небольшими правками с двух сторон |
| Объединить с приоритетом файла | Слияние, при конфликте берётся вариант из файла | Перенос свежих правок программиста |
Слияние с приоритетом работает по строкам модуля. На модулях, где одна и та же процедура переписана с двух сторон, результат нужно проверять глазами: код может собраться, но логика окажется смешанной.
Двойные изменения при обновлении
При обновлении доработанной конфигурации на поддержке самое ценное — фильтр, показывающий только дважды изменённые свойства. Это свойства, которые поменяли и вы, и поставщик. Остальное объединяется без вопросов, а дважды изменённые объекты разбираются по одному.
После объединения
- Нажмите «Выполнить» — изменится только основная конфигурация.
- Проверьте синтаксис:
Конфигурация → Проверка конфигурации…. - Примените изменения к базе:
Конфигурация → Обновить конфигурацию базы данных(F7).
Если изменения затрагивают структуру данных, на шаге 3 потребуется, чтобы пользователи вышли из базы. Предупредите пользователей заранее и обновляйте вне рабочего времени — при принудительном завершении сеансов несохранённые документы будут потеряны.
Как упростить себе сравнение в будущем
- 📁 Сохраняйте настройки объединения. В меню «Действия» окна объединения есть сохранение и восстановление настроек в файл. При повторном переносе тех же доработок не придётся заново расставлять флажки.
- 🧷 Не снимайте конфигурацию с поддержки без нужды. Пока поддержка включена, доступна конфигурация поставщика, и сравнение «что доработано» делается в два клика.
- 🧩 Выносите доработки в расширения. Расширение сравнивается отдельно и почти не мешает обновлению основной конфигурации.
- 🗂️ Держите .cf каждого релиза. Для аудита нужна чистая типовая именно того релиза, от которого взята база, иначе в отчёт попадут изменения самого поставщика.
- 🤖 Автоматизируйте контроль. Ночной запуск
/CompareCfgосновной и конфигурации базы данных покажет, если кто-то правит рабочую базу без согласования.