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

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

Как сравнить расширение с основной конфигурацией 1С

Пошаговая инструкция по сравнению расширения с основной конфигурацией 1С: инструменты конфигуратора, анализ изменённых объектов, поиск конфликтов и проверка после обновления.

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

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

Когда требуется сравнение расширения и основной конфигурации

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

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

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

Перед любыми манипуляциями с расширениями сделайте резервную копию информационной базы или выгрузку в файл dt. Сравнение само по себе безопасно, но следующие за ним действия — отключение, обновление, изменение расширения — способны нарушить работу пользователей.

Уточните версию основной конфигурации (Конфигурация → Поддержка → Настройка поддержки, либо сведения в разделе «О программе») и зафиксируйте список подключённых расширений с их версиями. Для файловой базы откройте конфигуратор монопольно; для клиент-серверной убедитесь, что у вас есть право администрирования и изменения расширений.

Способ 1. Просмотр заимствованных объектов в дереве расширения

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

Двойной клик по заимствованному объекту открывает его свойства. Для модулей и форм видно, какие процедуры переопределены: расширение хранит аннотации вида &Перед, &После или &Вместо перед именем переопределяемого метода. По этим аннотациям сразу понятно, в какие точки основной конфигурации встроено расширение.

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

Заимствованные объектыОбъекты основной конфигурации, которые расширение дорабатывает

Именно эти объекты проверяйте после обновления конфигурации

Собственные объектыОбъекты, добавленные расширением

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

Аннотации &Перед, &После, &ВместоТочки встраивания в методы основной конфигурации

Если метод переименован поставщиком, расширение перестанет применяться

Способ 2. Сравнение через механизм «Сравнить, объединить»

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

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

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

Порядок сравнения расширения с конфигурацией
  1. 1
    Сделайте резервную копию базы и выгрузите основную конфигурацию в файл cf
  2. 2
    Откройте конфигуратор и перейдите в «Конфигурация → Расширения конфигурации»
  3. 3
    Откройте нужное расширение двойным кликом
  4. 4
    Выберите «Конфигурация → Сравнить, объединить с конфигурацией из файла» и укажите cf-файл
  5. 5
    Изучите таблицу сопоставления: объекты с различиями, отсутствующие объекты
  6. 6
    Для каждого различающегося объекта откройте детальное сравнение и оцените влияние на логику расширения

Способ 3. Проверка применимости после обновления конфигурации

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

Если расширение не применяется, в журнале регистрации появятся события с описанием причины: чаще всего это «Метод не обнаружен» (поставщик переименовал или удалил переопределяемую процедуру) или «Объект не найден» (удалён заимствованный объект). По этим сообщениям можно точно определить конфликтные точки.

Для глубокой диагностики откройте расширение в конфигураторе и выполните «Конфигурация → Проверка конфигурации» с включённой проверкой расширения. Проверка выявит обращения к несуществующим объектам и методам основной конфигурации.

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

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

Статус расширения в списке
Норма

Расширение подключено и применено, ошибок нет

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

Расширение не применяется, в журнале регистрации ошибки

Переопределяемые методы
Норма

Все методы с аннотациями &Перед, &После, &Вместо существуют в основной конфигурации

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

Метод переименован или удалён поставщиком

Поведение прикладных форм
Норма

Доработанные формы открываются и работают как прежде

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

Ошибки при открытии формы, исчезнувшие элементы, неверные данные

Типичные конфликты и способы их устранения

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

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

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

Типичные ошибки при сравнении
01
Сравнивать расширение с устаревшим cf-файлом — выводы будут неверными; всегда выгружайте конфигурацию из актуальной базы
02
Игнорировать предупреждения проверки конфигурации — они указывают на будущие ошибки в режиме Предприятия
03
Обновлять рабочую базу без теста на копии — конфликт расширения обнаружат пользователи, а не администратор
04
Использовать &Вместо там, где достаточно &После — лишние переопределения увеличивают число точек конфликта при обновлениях

Альтернативные инструменты и автоматизация

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

В среде EDT сравнение расширения с проектом основной конфигурации выполняется штатными средствами сравнения проектов, а панель проблем сразу показывает битые ссылки на объекты конфигурации. Это удобнее для регулярной разработки, чем ручная работа в конфигураторе.

Сравнение подходов

Дерево расширения в конфигураторе

Быстрый обзор заимствованных объектов; не показывает различия внутри модулей

Сравнить, объединить с cf-файлом

Детальное построчное сравнение; требует актуального файла конфигурации

Выгрузка в XML + внешнее сравнение

Подходит для аудита и контроля версий; требует дополнительных инструментов

1С:EDT

Удобен при постоянной разработке; требует перехода проекта в EDT

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

Можно ли сравнить расширение с конфигурацией без конфигуратора?

Частично. В режиме Предприятия виден список расширений и статус их применимости, а ошибки фиксируются в журнале регистрации. Но детальное сравнение объектов и текстов модулей доступно только в конфигураторе, EDT или через выгрузку в файлы.

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

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

Как узнать, какие процедуры основной конфигурации переопределяет расширение?

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

Опасно ли обновлять конфигурацию, если подключены расширения?

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

Чем отличается сравнение расширения от сравнения двух конфигураций?

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

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

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

Итог

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

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