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