Разработка и Конфигурация · 11 мин
Как работают расширения конфигурации в 1С
Как работают расширения конфигурации в 1С: механизм, подключение, обновление при смене релиза, типичные ошибки и ограничения механизма.
Расширение конфигурации — это механизм платформы 1С:Предприятие, который позволяет изменять поведение типовой конфигурации без её снятия с поддержки. Доработки хранятся отдельно от основного кода, поэтому при обновлении релиза изменения не теряются, а лишь требуют проверки совместимости.
Механизм работает по принципу наложения: платформа сначала загружает типовую конфигурацию, а затем применяет поверх неё объекты и методы из расширения. Изменённые процедуры выполняются вместо типовых либо до/после них, добавленные реквизиты и формы становятся частью интерфейса. При этом в базе данных физически хранятся и типовые метаданные, и данные расширения.
Расширения применяют для правки печатных форм, добавления реквизитов и отчётов, изменения логики проведения документов, подключения оборудования и интеграций. Понимание того, как именно платформа обрабатывает расширение, помогает избежать ошибок после обновления и конфликтов между несколькими доработками.
Как платформа применяет расширение
Расширение хранится в информационной базе как отдельный объект и подключается при старте сеанса. Платформа объединяет метаданные типовой конфигурации и расширения: заимствованные объекты дополняются новыми реквизитами, а изменённые методы заменяют или обрамляют типовые. Если включён безопасный режим, код расширения выполняется с ограничениями — без доступа к файловой системе и COM-объектам.
Ключевой механизм — аннотации перехвата методов. Разработчик указывает, как выполняется его процедура относительно типовой:
- &Вместо — типовой метод не выполняется, работает только код расширения. Самый рискованный вариант: при обновлении релиза изменения поставщика в этом методе будут проигнорированы.
- &Перед и &После — код расширения выполняется до или после типового метода. Безопаснее, так как типовая логика сохраняется.
- &ИзменениеИКонтроль — метод расширения включает копию типового кода с правками, а платформа при обновлении проверяет, совпадает ли типовой метод с тем, что был заимствован.
Если подключено несколько расширений, они применяются в порядке, заданном в списке. При пересечении одних и тех же методов приоритет имеет расширение, применённое последним, поэтому порядок в списке влияет на итоговое поведение системы.
Что можно и чего нельзя изменить расширением
Расширение покрывает большинство типовых задач доработки, но имеет жёсткие ограничения. Понимание границ механизма помогает сразу выбрать правильный инструмент и не тратить время на невозможный сценарий.
| Можно | Нельзя или ограничено |
|---|---|
| Добавлять реквизиты, табличные части, формы, команды | Изменять состав измерений и ресурсов регистров |
| Перехватывать и дополнять процедуры и функции | Изменять роли и права доступа типовой конфигурации |
| Добавлять собственные отчёты, обработки, подсистемы | Менять типы реквизитов и длину строк у заимствованных объектов |
| Изменять макеты печатных форм | Редактировать план обмена и состав подписок в части ограничений платформы |
| Создавать новые справочники и документы | Удалять типовые объекты и реквизиты |
Если задача выходит за рамки возможностей расширения — например, нужно поменять структуру регистра или типовую роль — остаются два пути: доработка основной конфигурации со снятием объектов с поддержки либо внешняя обработка с вызовом по расписанию. Выбор зависит от того, насколько критично сохранить полную поддержку конфигурации.
Способы доработки
Подходит для большинства доработок: формы, реквизиты, печать, логика. Сохраняет поддержку, но ограничено по структуре данных.
Подходят для разовых операций, загрузок, дополнительных отчётов. Не могут перехватывать типовые методы.
Без ограничений по структуре, но усложняет обновление: каждый релиз потребует сравнения и объединения.
Как подключить расширение в пользовательском режиме
Подключение готового расширения не требует конфигуратора и выполняется из интерфейса предприятия. В типовых конфигурациях путь обычно такой: «Администрирование» → «Печатные формы, отчёты и обработки» → «Расширения». В некоторых конфигурациях пункт находится в разделе «НСИ и администрирование».
- 1Откройте список расширений через «Администрирование» → «Расширения»
- 2Нажмите «Добавить из файла» и выберите файл с расширением (*.cfe)
- 3Снимите флажок «Безопасный режим» только если доверяете источнику расширения
- 4Перезапустите сеанс, если система запросит перезапуск
- 5Проверьте, что доработка появилась: новый реквизит, кнопка или печатная форма доступны
Файл расширения имеет расширение.cfe и получается выгрузкой из конфигуратора. При добавлении платформа проверяет, совместима ли версия расширения с текущей конфигурацией: если заимствованные объекты изменились или удалены, расширение подключится с ошибками либо откажется применяться.
После подключения расширение действует для всех пользователей базы. Если нужно ограничить действие, используют настройки области применения в самом расширении либо механизмы прав доступа к добавленным объектам.
Как создать расширение в конфигураторе
Создание начинается в конфигураторе: меню «Конфигурация» → «Расширения конфигурации» → «Создать». Новое расширение пустое — чтобы что-то изменить, нужно сначала заимствовать объект: в дереве конфигурации вызывают контекстное меню объекта и выбирают «Добавить в расширение».
Для изменения кода открывают модуль заимствованного объекта, находят нужную процедуру и через контекстное меню добавляют её в расширение с выбором аннотации. Рекомендуемый порядок выбора: сначала пробовать &Перед или &После, и только если этого недостаточно — &Вместо или &ИзменениеИКонтроль. Чем меньше перехвачено «вместо», тем легче жить с расширением при обновлениях.
Готовое расширение выгружается в файл через команду «Выгрузить в файл» в списке расширений. Перед передачей в рабочую базу его стоит проверить на копии: убедиться, что доработка работает и не ломает смежные сценарии — проведение документов, формирование отчётов, обмены.
Давайте расширениям говорящие имена и префиксы для добавляемых объектов, например префикс подразделения или проекта. Когда в базе накопится пять-десять расширений, по имени и префиксу будет сразу видно, откуда взялся реквизит и к кому идти с вопросом.
Что происходит с расширением при обновлении конфигурации
Обновление типового релиза не удаляет расширения — это главное преимущество механизма. Однако после обновления платформа проверяет каждое расширение на применимость: совпадают ли заимствованные объекты и методы с новыми версиями в конфигурации.
Возможны три исхода. Первый — расширение применяется без ошибок, ничего делать не нужно. Второй — расширение применяется, но отдельные методы с аннотацией &ИзменениеИКонтроль помечаются как требующие проверки: типовой метод изменился, и разработчик должен вручную перенести изменения поставщика в свой код. Третий — расширение неприменимо: заимствованный объект удалён или переименован. Тогда расширение отключается, и его нужно адаптировать в конфигураторе.
Практический порядок действий при обновлении: сначала обновить копию базы, проверить статус всех расширений в списке, исправить проблемные, выгрузить исправленные версии и только потом повторить процедуру на рабочей базе. Пропуск проверки на копии — самая частая причина аварийных ситуаций после обновления.
Как проверить расширение после обновления
«Подключено», без значков ошибок
«Отключено» или предупреждение о несовместимости
Все методы прошли контроль
Методы с отметкой о расхождении с типовым кодом
Печать, проведение, отчёты работают как раньше
Ошибки при вызове перехваченных процедур
Типичные ошибки и ограничения
Большинство проблем с расширениями связано не с самим механизмом, а с тем, как его используют. Перехват методов «вместо» без необходимости приводит к потере изменений поставщика. Подключение нескольких расширений, правящих один и тот же метод, даёт непредсказуемый результат, если не контролировать порядок применения.
Ещё одна группа проблем — производительность. Код расширения, выполняемый при каждом проведении массового документа или в обработчиках ожидания на форме, способен заметно замедлить работу. Перед внедрением такие доработки стоит замерить на копии с реальным объёмом данных.
Когда расширение не подходит
Есть сценарии, где расширение принципиально не справляется. Если нужно изменить структуру регистра накопления, добавить измерение, поменять типовую роль или состав плана обмена — придётся дорабатывать основную конфигурацию. То же относится к глубокой переработке типовых механизмов, где перехватом отдельных методов не обойтись.
Альтернативой в простых случаях служат дополнительные отчёты и обработки (механизм БСП), внешние печатные формы и регламентные задания, вызывающие внешние обработки. Они слабее расширений по возможностям, но ещё меньше влияют на конфигурацию и проще в сопровождении.
Как выбрать инструмент
Что важно запомнить
Расширение — слой доработок поверх типовой конфигурации, который не нарушает поддержку и переживает обновления. Используйте минимально необходимый уровень перехвата методов, проверяйте расширения на копии после каждого обновления и храните выгруженные файлы отдельно от базы.
Частые вопросы
Удалится ли расширение при обновлении конфигурации?
Нет, расширения хранятся отдельно и при обновлении не удаляются. Но платформа проверит их применимость: если заимствованные объекты изменились, расширение может отключиться до адаптации. Поэтому после каждого обновления нужно проверять статус расширений в списке.
Можно ли подключить несколько расширений одновременно?
Да, ограничений по количеству практически нет. Конфликтующие доработки лучше объединять в одно расширение.
Чем расширение отличается от внешней обработки?
Внешняя обработка запускается пользователем вручную или по расписанию и не может менять типовые формы и методы. Расширение встраивается в конфигурацию: перехватывает код, добавляет реквизиты и элементы интерфейса, работает постоянно для всех пользователей.
Что такое безопасный режим расширения и когда его отключать?
В безопасном режиме коду расширения запрещён доступ к файловой системе, COM-объектам и внешним компонентам. Отключать режим стоит только для расширений из доверенных источников, когда функциональность требует такого доступа — например, для работы с торговым оборудованием.
Как перенести расширение из тестовой базы в рабочую?
В конфигураторе или в списке расширений режима предприятия выгрузите расширение в файл.cfe, затем в рабочей базе добавьте его из файла. Если расширение уже существует в рабочей базе, используйте обновление из файла, чтобы сохранить его идентификатор и настройки.
Почему расширение отключилось после обновления и что делать?
Чаще всего причина в том, что заимствованный объект был переименован, удалён или изменён поставщиком. Откройте расширение в конфигураторе обновлённой базы, исправьте ссылки на объекты и методы с ошибками контроля, затем пересохраните и подключите расширение заново.