Сравнение конфигураций в конфигураторе 1С 8.3 и из командной строки

· 9 мин

Содержание

Сравнить две конфигурации в 1С 8.3 можно тремя способами. Если обе конфигурации доступны в одном конфигураторе (основная, конфигурация базы данных, поставщика, хранилища), используйте Конфигурация → Сравнить конфигурации…. Если вторая конфигурация лежит в файле .cf из другой базы — Конфигурация → Сравнить, объединить с конфигурацией из файла…. Если сравнение нужно регулярно и без участия человека — запускайте 1cv8 DESIGNER с ключом /CompareCfg или выгружайте конфигурации в XML и сравнивайте их системой контроля версий.

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

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

Типовые ситуации, в которых без сравнения не обойтись:

  • 🔄 Перед обновлением доработанной базы. Нужно понять, какие типовые объекты изменены и где новая версия поставщика заденет доработки.
  • 📦 Перенос доработок между базами. Программист сделал правки в копии, их нужно аккуратно перенести в рабочую базу, не затерев чужие изменения.
  • 🕵️ Аудит базы, принятой от другого подрядчика. Сравнение с чистой типовой того же релиза показывает реальный объём доработок.
  • ⚠️ Неприменённые изменения. Основная конфигурация отличается от конфигурации базы данных: кто-то правил и не обновил базу (F7).
  • 🧩 Разбор расхождений между копиями. Тестовая и рабочая базы «должны быть одинаковыми», но ведут себя по-разному.

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

Подготовка: какие конфигурации можно сравнить и что сделать заранее

Что доступно для сравнения

В диалоге сравнения выбираются две конфигурации из списка:

ТипЧто этоКогда выбирать
Основная конфигурацияТо, что открыто в дереве конфигуратораПочти всегда одна из двух
Конфигурация базы данныхТо, по чему реально работают пользователиПроверка неприменённых изменений
Конфигурация поставщикаТиповая, от которой взята доработаннаяОценка объёма доработок
Конфигурация из файлаФайл .cfСравнение с другой базой или релизом
Конфигурация хранилищаВерсия из хранилища конфигурацииГрупповая разработка

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

Как получить .cf второй базы

  1. Откройте вторую базу в конфигураторе.
  2. Выберите Конфигурация → Сохранить конфигурацию в файл….
  3. Укажите путь, например D:\cmp\buh_test.cf.

Сохранение конфигурации в файл не требует монопольного доступа, пользователи могут продолжать работу.

Что сделать до объединения

Для простого сравнения достаточно открыть базу в конфигураторе. Если же после сравнения вы планируете объединять, сначала сделайте выгрузку информационной базы в .dt или резервную копию средствами СУБД. Объединение меняет основную конфигурацию, а откат «назад» после ошибки занимает больше времени, чем копия.

Сравнивайте копию рабочей базы, а не саму рабочую. Конфигуратор с открытым окном сравнения большой конфигурации (БП, ЗУП, ERP) занимает заметный объём памяти, на терминальном сервере с пользователями это лишняя нагрузка.

Что именно вы хотите сравнить?

Сравнение конфигураций через конфигуратор пошагово

Шаг 1. Открыть диалог

Запустите базу в режиме «Конфигуратор» и откройте конфигурацию (Конфигурация → Открыть конфигурацию). Затем выберите Конфигурация → Сравнить конфигурации….

Шаг 2. Выбрать пару

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

Здесь же задаётся правило сопоставления объектов:

  • по внутренним идентификаторам — для конфигураций одного происхождения (база и её копия, доработанная и её типовая);
  • по именам — для конфигураций, созданных независимо, где одинаковые объекты имеют разные идентификаторы.

Если сравнить по идентификаторам две независимо созданные конфигурации, одинаковые по имени справочники попадут в отчёт как «есть только в одной». Это частая причина «огромного списка отличий», которого на деле нет.

Шаг 3. Работать с деревом отличий

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

Что полезно сделать сразу:

  1. Включите фильтр, показывающий только отличия, — иначе в дереве останутся тысячи совпадающих объектов.
  2. Раскройте нужный объект до уровня свойств: реквизиты, табличные части, формы, модули, макеты.
  3. Для модулей откройте построчное сравнение — команда показа различий в модулях доступна из контекстного меню объекта и из меню «Действия» окна. Отличающиеся строки подсвечиваются в двух панелях.
  4. Формы сравниваются отдельно: открывается окно с элементами, реквизитами и командами формы, а модуль формы — как обычный модуль.

Частный случай: основная и конфигурация базы данных

Эта пара отвечает на вопрос «что применится при нажатии 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, и часть отличий там технические — порядок элементов, служебные атрибуты.

Как читать отчёт о различиях

Отчёт строится из окна сравнения через меню «Действия» или сразу в файл в пакетном режиме. Он бывает кратким (список отличающихся объектов) и подробным (с перечнем отличающихся свойств и строк модулей). Формат — текст или табличный документ.

Читать отчёт удобно в таком порядке:

  1. Объекты, которые есть только в одной конфигурации. Это новые справочники, документы, регистры, общие модули. Добавленный регистр почти всегда означает доработку с собственными данными — его потерю при обновлении заметят пользователи.
  2. Изменённые типовые объекты. Смотрите, что изменено: реквизит, форма, модуль. Изменённый модуль менеджера или модуль объекта документа — зона риска при обновлении.
  3. Роли и права. Отличия в ролях легко пропустить, а именно они дают «у бухгалтера пропала кнопка» после обновления.
  4. Макеты и печатные формы. Изменённый макет типовой печатной формы при объединении проще перенести вручную, чем сливать.

Сохраните краткий отчёт по каждой базе после обновления. Через полгода он ответит на вопрос «что здесь доработано», когда разработчика уже не будет рядом.

Ложные отличия

Отличия, которые не являются доработками:

  • 🔤 разный регистр или пробелы в модулях после правки в другом редакторе;
  • 🧾 технические изменения форм после пересохранения в конфигураторе другой версии платформы;
  • 🆔 объекты «есть только слева» и «только справа» с одинаковым именем — признак неверного правила сопоставления (см. шаг 2).

Конфликты и объединение конфигураций

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

Режимы объединения свойств

Для каждого отличающегося свойства можно выбрать, как его объединять:

РежимЧто произойдётКогда выбирать
Взять из файлаСвойство заменится версией из .cfСвоих правок в объекте нет
Оставить основнуюФлажок снят, свойство не меняетсяДоработка важнее нового варианта
Объединить с приоритетом основнойСлияние, при конфликте строк остаётся основнаяМодуль с небольшими правками с двух сторон
Объединить с приоритетом файлаСлияние, при конфликте берётся вариант из файлаПеренос свежих правок программиста

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

Двойные изменения при обновлении

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

После объединения

  1. Нажмите «Выполнить» — изменится только основная конфигурация.
  2. Проверьте синтаксис: Конфигурация → Проверка конфигурации….
  3. Примените изменения к базе: Конфигурация → Обновить конфигурацию базы данных (F7).

Если изменения затрагивают структуру данных, на шаге 3 потребуется, чтобы пользователи вышли из базы. Предупредите пользователей заранее и обновляйте вне рабочего времени — при принудительном завершении сеансов несохранённые документы будут потеряны.

Перед нажатием «Выполнить»
Выполнено: 0 / 5

Как упростить себе сравнение в будущем

  • 📁 Сохраняйте настройки объединения. В меню «Действия» окна объединения есть сохранение и восстановление настроек в файл. При повторном переносе тех же доработок не придётся заново расставлять флажки.
  • 🧷 Не снимайте конфигурацию с поддержки без нужды. Пока поддержка включена, доступна конфигурация поставщика, и сравнение «что доработано» делается в два клика.
  • 🧩 Выносите доработки в расширения. Расширение сравнивается отдельно и почти не мешает обновлению основной конфигурации.
  • 🗂️ Держите .cf каждого релиза. Для аудита нужна чистая типовая именно того релиза, от которого взята база, иначе в отчёт попадут изменения самого поставщика.
  • 🤖 Автоматизируйте контроль. Ночной запуск /CompareCfg основной и конфигурации базы данных покажет, если кто-то правит рабочую базу без согласования.

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

Нужен ли монопольный доступ для сравнения конфигураций?
Нет. Сравнение только читает конфигурации, пользователи могут работать. Монопольный режим может понадобиться позже — при обновлении конфигурации базы данных, если меняется структура.
Можно ли сравнить две базы без выгрузки .cf?
Напрямую из интерфейса — нет: одна конфигурация должна быть открыта, вторая взята из файла или хранилища. Сохранение .cf занимает минуту и не мешает пользователям.
Как сравнить с конкретной версией в хранилище?
Откройте историю хранилища, выберите версию и вызовите сравнение с основной конфигурацией. Либо укажите тип «конфигурация хранилища» и номер версии в диалоге сравнения.
Почему при сравнении с типовой отличается почти всё?
Чаще всего типовая взята другого релиза. Сравнивайте с .cf ровно того релиза, на котором стоит база, — его номер виден в окне «О программе».
Можно ли сравнить расширение конфигурации?
Да. В диалоге сравнения расширение выбирается отдельным типом, а в пакетном режиме для него есть свои значения типа конфигурации.