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

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

Как сравнить расширения 1С: практическое руководство

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

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

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

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

Что именно можно сравнивать у расширений

Прежде чем выбирать инструмент, определите объект сравнения. Расширение состоит из заимствованных объектов (метаданных, взятых из основной конфигурации и изменённых), собственных добавленных объектов, модулей с кодом, ролей, форм и макетов. Сравнивать можно любой из этих слоёв.

Типовые задачи сравнения выглядят так:

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

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

Способ 1. Сравнение через выгрузку расширения в файл конфигурации

Наиболее наглядный способ — превратить расширение в конфигурацию и воспользоваться стандартным механизмом сравнения. В конфигураторе откройте список расширений (Конфигурация → Расширения конфигурации), выделите нужное расширение и используйте команду сохранения в файл — расширение выгружается в файл с расширением .cfe.

Далее есть два пути. Первый: создать пустую информационную базу, загрузить в неё файл расширения как конфигурацию (для этого потребуется преобразование, так как .cfe — не .cf), что не всегда удобно. Второй, более практичный: использовать возможность сравнения расширения с конфигурацией из файла, если ваша версия платформы это поддерживает, либо перейти к сравнению XML-выгрузок.

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

Сравнение двух версий расширения через XML-выгрузку
  1. 1
    Выгрузите первую версию расширения в XML-файлы в отдельный каталог
  2. 2
    Выгрузите вторую версию в другой каталог
  3. 3
    Откройте сравнение каталогов в WinMerge, KDiff3 или аналогичном инструменте
  4. 4
    Отфильтруйте служебные файлы и проанализируйте различия в модулях и формах
  5. 5
    Зафиксируйте изменённые объекты и проверьте критичные доработки вручную

Способ 2. Сравнение расширения с основной конфигурацией

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

Для детального анализа кода откройте заимствованный модуль: конфигуратор показывает разметку, где видно, какие методы переопределены, какие вызываются до, после или вместо типовых (аннотации &Перед, &После, &Вместо, &ИзменениеИКонтроль). Сравнение с типовым кодом выполняется визуально по этой разметке.

Для форм ситуация аналогична: расширенная форма показывает добавленные и изменённые элементы. Если доработок много, полезно выгрузить форму в XML и сравнить с типовой формой из выгрузки основной конфигурации.

Способ 3. Проверка конфликтов нескольких расширений

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

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

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

Сравнение расширений в 1С:EDT

Если разработка ведётся в 1C:Enterprise Development Tools, сравнение заметно удобнее. EDT хранит расширение как проект, и к нему применимы все возможности сравнения версий: встроенное сравнение с историей Git, сравнение двух проектов, сравнение с конфигурацией информационной базы.

Практический сценарий: импортируйте оба расширения как два проекта, затем используйте функцию сравнения проектов (Compare With → Each Other). EDT покажет структурное сравнение по объектам, модулям и формам с подсветкой различий — это самый полный штатный вариант для расширений.

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

Сравнение инструментов

Конфигуратор + XML-выгрузка

Подходит для разового сравнения версий без дополнительного ПО; требует внешней утилиты сравнения файлов

1C:EDT

Лучший вариант для регулярной работы и командной разработки; требует перехода на EDT и желательно Git

Внешние diff-инструменты (WinMerge, KDiff3)

Быстрое текстовое сравнение модулей; не понимают структуру метаданных, показывают только различия файлов

Как проверить результат сравнения и не ошибиться

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

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

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

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

Применимость расширения
Норма

В списке расширений нет пометок об ошибках, контроль проходит без сообщений

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

Ошибки применимости, ссылки на отсутствующие объекты конфигурации

Работа изменённых объектов
Норма

Документы проводятся, формы открываются, отчёты формируются

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

Ошибки вызова методов, падение форм, сообщения о ненайденных процедурах

Журнал регистрации
Норма

Нет новых ошибок после подключения расширения

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

Повторяющиеся ошибки в сеансах пользователей

Типичные ошибки при сравнении расширений

Первая ошибка — сравнение «в лоб» через бинарные файлы .cfe. Эти файлы не предназначены для текстового сравнения: различия в них нечитаемы. Всегда преобразуйте расширение в XML-выгрузку или проект EDT.

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

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

Типичные ошибки
01
Сравнение бинарных файлов .cfe — результат нечитаем, выводы недостоверны
02
Игнорирование версии основной конфигурации — расширение может быть неприменимо после обновления
03
Анализ только модулей без форм и ролей — пропускаются реальные конфликты
04
Проверка сразу на рабочей базе — риск остановки работы пользователей
Итог

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

Штатного пункта «сравнить два расширения» в конфигураторе нет. Рабочие подходы: выгрузка в XML и сравнение внешним инструментом, проекты и сравнение в EDT, анализ заимствованных объектов и контроль применимости. Любые проверки выполняйте на копии базы, обращая внимание на пересечения расширений по объектам.

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

Можно ли сравнить два расширения прямо в конфигураторе?

Нет, штатной команды сравнения двух расширений в конфигураторе нет. Обходные пути: выгрузить расширения в XML-файлы и сравнить внешним инструментом либо импортировать их в 1C:EDT и сравнить проекты между собой.

Чем открыть и сравнить файл расширения .cfe?

Файл .cfe — бинарный формат поставки расширения, текстово он не сравнивается. Загрузите его в тестовую базу через конфигуратор, затем выгрузите расширение в файлы конфигурации (XML) и сравнивайте уже их. Либо импортируйте расширение в проект EDT.

Как узнать, конфликтуют ли два расширения между собой?

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

Что делать, если после обновления конфигурации расширение перестало применяться?

Откройте расширение в конфигураторе и посмотрите ошибки применимости: обычно это переименованные или удалённые объекты и методы типовой конфигурации. Сравните заимствованные методы с новыми типовыми версиями (удобно через &ИзменениеИКонтроль) и актуализируйте код расширения.

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

Выгрузите обе версии в XML-файлы, найдите файлы модулей (обычно Module.bsl в каталогах соответствующих объектов) и сравните их пару за парой в WinMerge или аналогичном инструменте. Так видны точные изменения в процедурах и функциях.

Нужен ли Git для работы с расширениями?

Не обязателен, но сильно упрощает жизнь: при ведении расширения в EDT с Git сравнение любых версий сводится к стандартному diff, появляется история изменений и возможность отката. Для разовых задач достаточно XML-выгрузки и внешнего инструмента сравнения.