Разработка и Конфигурация · 10 мин
Как сравнить две конфигурации 1С
Как сравнить две конфигурации 1С через конфигуратор, внешние отчёты и выгрузку в XML. Настройка отборов, анализ отличий, типичные ошибки и проверка результата.
Сравнение конфигураций — стандартная задача при обновлении типовых решений, переносе доработок между базами и аудите чужих изменений. Встроенный механизм конфигуратора позволяет увидеть различия вплоть до отдельных строк модулей, форм и ролей, а сторонние инструменты помогают там, где штатных средств недостаточно.
Чаще всего сравнение требуется в трёх ситуациях: перед обновлением доработанной конфигурации, чтобы понять, что перезапишет поставщик; при поиске «самопальных» изменений в базе, которую вели разные подрядчики; при объединении доработок из двух веток разработки. От сценария зависит и выбор инструмента: штатное сравнение, выгрузка в файлы конфигурации или внешние утилиты анализа кода.
Важно понимать ограничение: сравнение показывает различия метаданных и кода, но не данных. Два одинаковых справочника в разных базах могут содержать разную информацию — для таких задач существуют отдельные механизмы сравнения данных, и путать их нельзя.
Когда нужно сравнение конфигураций, а когда — сравнение данных
Прежде чем запускать инструмент, определите, что именно вы ищете. Сравнение конфигураций отвечает на вопрос «чем отличается структура и логика программы»: добавленные реквизиты, изменённые модули, новые роли, доработанные формы. Сравнение данных отвечает на вопрос «чем отличается содержимое баз» — это совсем другая задача, решаемая обработками сопоставления объектов или средствами обмена.
Типичные задачи для сравнения конфигураций: оценка объёма доработок перед обновлением, поиск причины расхождения поведения двух «одинаковых» баз, аудит изменений после работы внешнего подрядчика, подготовка к объединению двух направлений разработки. Если же расходятся остатки, документы или элементы справочников — сравнение конфигураций ничего не даст.
Сравнение через конфигуратор: основной способ
Штатный механизм доступен в конфигураторе любой базы на платформе 8.3. Откройте конфигурацию для редактирования (меню «Конфигурация → Открыть конфигурацию»), затем выберите «Конфигурация → Сравнить, объединить с конфигурацией из файла…» и укажите файл .cf второй конфигурации. Платформа построит дерево объектов с отметками о различиях.
Если вторая конфигурация находится в другой базе, а не в файле, сначала выгрузите её: в конфигураторе той базы выполните «Конфигурация → Сохранить конфигурацию в файл». Убедитесь, что версии платформы обеих баз совместимы — при существенном расхождении релизов платформы файл может не открыться или сравнение пройдет с ошибками.
В окне сравнения различия показаны иерархически: сначала вид объекта (справочники, документы и т.д.), затем конкретный объект, затем его составляющие — реквизиты, формы, модули, макеты. Двойной щелчок по строке открывает детальное сравнение: для модулей — построчный diff кода, для форм — сопоставление элементов и реквизитов формы.
- 1Сделайте резервную копию рабочей базы через выгрузку .dt или средствами СУБД
- 2Откройте конфигуратор, снимите конфигурацию с замка при необходимости
- 3Выберите «Конфигурация → Сравнить, объединить с конфигурацией из файла» и укажите .cf второй конфигурации
- 4Дождитесь построения дерева сравнения и снимите все флажки объединения, если нужен только просмотр
- 5Изучите различия по веткам дерева, открывая детальное сравнение модулей и форм
- 6Закройте окно без нажатия «Выполнить», чтобы ничего не изменить
Настройка отборов и фильтров при сравнении
На больших конфигурациях дерево различий содержит тысячи строк, и без фильтрации в нём легко потеряться. Кнопка настройки позволяет ограничить состав сравниваемых объектов: например, оставить только справочники и документы или только общие модули. Это полезно, когда вы проверяете конкретную подсистему.
Отдельный приём — фильтрация по признаку «изменено». В окне сравнения можно скрыть неизменённые объекты и оставить только те, где есть расхождения. Также обращайте внимание на пиктограммы: они различают объекты, присутствующие только в одной из конфигураций, и объекты, изменённые в обеих.
При сравнении с конфигурацией поставщика (через «Поддержка → Настройка поддержки») платформа дополнительно показывает, какие объекты изменены относительно типовой поставки и стоят ли они на замке. Это самый быстрый способ получить список доработок типовой базы.
Сравнение через выгрузку в файлы конфигурации
Альтернативный подход — выгрузить обе конфигурации в набор XML-файлов («Конфигурация → Выгрузить конфигурацию в файлы») и сравнить каталоги любым инструментом сравнения файлов: KDiff3, WinMerge, Beyond Compare или встроенным сравнением в Git. Такой способ даёт полный контроль над тем, что и как сопоставляется.
Метод незаменим для код-ревью и хранения истории изменений: выгрузки можно помещать в систему контроля версий и сравнивать произвольные снимки. Кроме того, текстовый diff удобнее для анализа больших модулей — штатный построчный просмотр конфигуратора на модулях в несколько тысяч строк работает медленно.
Ограничение способа: файловая выгрузка большой конфигурации занимает заметное время и место на диске, а структура XML-файлов требует привыкания — метаданные и код разнесены по разным файлам и каталогам. Для разовой проверки пары объектов проще штатное сравнение.
Сравнение способов
Быстрый старт, наглядное дерево, детализация форм и ролей. Ограничение: неудобен для больших модулей и нет истории сравнений.
Подходит для код-ревью, Git и пакетного анализа. Ограничение: дольше готовится, нужно знать структуру выгрузки.
Мгновенно показывает доработки типовой базы. Ограничение: работает только для конфигураций на поддержке.
Удобен командной разработке, интеграция с Git. Ограничение: требует перехода на EDT и настройки проектов.
Как анализировать отдельные виды различий
Модули и код
Для модулей ключевой инструмент — построчное сравнение текстов. В штатном окне оно открывается двойным щелчком по строке модуля; изменённые строки подсвечиваются. Обращайте внимание не только на добавленный код, но и на удалённый: при обновлении именно удалённые доработки чаще всего становятся источником ошибок.
Формы
Сравнение форм показывает различия в элементах, реквизитах, командах и параметрах формы. Штатный просмотр форм менее нагляден, чем diff кода, поэтому сложные формы удобнее сравнивать через XML-выгрузку, где структура формы представлена текстом.
Роли и права
Различия в ролях критичны для безопасности: добавленное право на объект может открыть доступ туда, где его быть не должно. Проверяйте не только состав ролей, но и отличия внутри каждой роли — наборы прав на конкретные объекты.
Проверка результата и частые ошибки
После анализа зафиксируйте результат в виде списка: объект, вид отличия, влияние на обновление или перенос. Такой список — рабочий документ для оценки трудоёмкости обновления и для передачи коллегам. Не полагайтесь на память: на конфигурациях с сотнями отличий без списка легко потерять критичное изменение.
Если сравнение выполнялось перед обновлением, проверьте после обновления ключевые доработки из списка: откройте изменённые модули и убедитесь, что доработанный код на месте, пройдите по пользовательским сценариям, затронутым изменёнными объектами. Формальное совпадение деревьев не гарантирует работоспособность — проверяется поведение.
Как проверить результат
Открывается полная иерархия объектов обеих конфигураций
Ошибка загрузки файла или пустое дерево — проверьте версию платформы и целостность .cf
Все отличия из дерева внесены в список с указанием вида изменения
Отличия просмотрены «по памяти», фиксации нет
Изменённый код на месте, сценарии выполняются без ошибок
Доработанный код перезаписан типовым, появляются ошибки в изменённых объектах
FAQ
Можно ли сравнить две конфигурации без файла .cf?
Да, если обе базы доступны: выгрузите конфигурацию второй базы в файл командой «Сохранить конфигурацию в файл» — это и есть получение .cf. Полностью без файла обойтись нельзя: штатный механизм сравнивает текущую конфигурацию именно с файлом поставки или конфигурации.
Как быстро получить список всех доработок типовой базы?
Откройте «Поддержка → Настройка поддержки» и запустите сравнение с конфигурацией поставщика. Объекты, изменённые относительно типовой поставки, будут помечены в дереве — это и есть список доработок. Дополнительно проверьте объекты, снятые с поддержки полностью.
Почему объект помечен как изменённый, хотя код совпадает?
Различие может быть в любом свойстве объекта: синониме, комментарии, настройках нумерации, длине реквизита, составе подсистем или в форме. Откройте детальное сравнение объекта и разверните его составляющие — конкретный отличающийся элемент будет подсвечен.
Подходит ли штатное сравнение для больших модулей?
Работает, но неудобно: построчный просмотр на модулях в несколько тысяч строк открывается медленно и плохо читается. Для таких модулей практичнее выгрузить конфигурации в файлы и сравнить тексты модулей во внешнем diff-инструменте.
Можно ли сравнить конфигурации разных версий платформы?
Файл .cf, сохранённый на более новой платформе, может не открыться в старом конфигураторе. Приведите обе базы к одной версии платформы или выполняйте сравнение на той машине, где установлена более новая совместимая версия.
Что важно запомнить
Основной инструмент — «Сравнить, объединить с конфигурацией из файла» в конфигураторе; для кода и истории изменений используйте выгрузку в XML и внешний diff. Всегда делайте резервную копию, снимайте флажки при анализе без объединения и фиксируйте найденные отличия списком.