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