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

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

Как работают расширения конфигурации в 1С

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

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

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

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

Как платформа применяет расширение

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

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

  • &Вместо — типовой метод не выполняется, работает только код расширения. Самый рискованный вариант: при обновлении релиза изменения поставщика в этом методе будут проигнорированы.
  • &Перед и &После — код расширения выполняется до или после типового метода. Безопаснее, так как типовая логика сохраняется.
  • &ИзменениеИКонтроль — метод расширения включает копию типового кода с правками, а платформа при обновлении проверяет, совпадает ли типовой метод с тем, что был заимствован.

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

Что можно и чего нельзя изменить расширением

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

МожноНельзя или ограничено
Добавлять реквизиты, табличные части, формы, командыИзменять состав измерений и ресурсов регистров
Перехватывать и дополнять процедуры и функцииИзменять роли и права доступа типовой конфигурации
Добавлять собственные отчёты, обработки, подсистемыМенять типы реквизитов и длину строк у заимствованных объектов
Изменять макеты печатных формРедактировать план обмена и состав подписок в части ограничений платформы
Создавать новые справочники и документыУдалять типовые объекты и реквизиты

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

Способы доработки

Расширение конфигурации

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

Внешние обработки и отчёты

Подходят для разовых операций, загрузок, дополнительных отчётов. Не могут перехватывать типовые методы.

Доработка основной конфигурации

Без ограничений по структуре, но усложняет обновление: каждый релиз потребует сравнения и объединения.

Как подключить расширение в пользовательском режиме

Подключение готового расширения не требует конфигуратора и выполняется из интерфейса предприятия. В типовых конфигурациях путь обычно такой: «Администрирование» → «Печатные формы, отчёты и обработки» → «Расширения». В некоторых конфигурациях пункт находится в разделе «НСИ и администрирование».

Порядок подключения
  1. 1
    Откройте список расширений через «Администрирование» → «Расширения»
  2. 2
    Нажмите «Добавить из файла» и выберите файл с расширением (*.cfe)
  3. 3
    Снимите флажок «Безопасный режим» только если доверяете источнику расширения
  4. 4
    Перезапустите сеанс, если система запросит перезапуск
  5. 5
    Проверьте, что доработка появилась: новый реквизит, кнопка или печатная форма доступны

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

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

Как создать расширение в конфигураторе

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

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

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

Давайте расширениям говорящие имена и префиксы для добавляемых объектов, например префикс подразделения или проекта. Когда в базе накопится пять-десять расширений, по имени и префиксу будет сразу видно, откуда взялся реквизит и к кому идти с вопросом.
ПЗ
Практическое замечание

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

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

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

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

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

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

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

«Подключено», без значков ошибок

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

«Отключено» или предупреждение о несовместимости

Методы с контролем изменений
Норма

Все методы прошли контроль

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

Методы с отметкой о расхождении с типовым кодом

Работа доработанных сценариев
Норма

Печать, проведение, отчёты работают как раньше

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

Ошибки при вызове перехваченных процедур

Типичные ошибки и ограничения

Большинство проблем с расширениями связано не с самим механизмом, а с тем, как его используют. Перехват методов «вместо» без необходимости приводит к потере изменений поставщика. Подключение нескольких расширений, правящих один и тот же метод, даёт непредсказуемый результат, если не контролировать порядок применения.

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

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

Когда расширение не подходит

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

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

Маршрут решения

Как выбрать инструмент

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

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

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

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

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

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

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

Да, ограничений по количеству практически нет. Конфликтующие доработки лучше объединять в одно расширение.

Чем расширение отличается от внешней обработки?

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

Что такое безопасный режим расширения и когда его отключать?

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

Как перенести расширение из тестовой базы в рабочую?

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

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

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