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

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

Расширение в 1C:EDT (DT): что это и зачем оно нужно

Расширение конфигурации в 1C:EDT (DT): что это, чем отличается от изменения конфигурации, как создать, подключить и обновить расширение без снятия с поддержки.

Расширение в 1C:EDT (Enterprise Development Tools, сокращённо EDT или DT) — это механизм доработки прикладного решения без изменения самой конфигурации поставщика. Вместо того чтобы править типовые объекты и снимать конфигурацию с поддержки, разработчик создаёт отдельный проект расширения, который «накладывается» на основную конфигурацию в момент запуска и добавляет или переопределяет нужную функциональность.

Термин «расширение DT» обычно означает именно проект расширения в среде 1C:EDT — среде разработки на базе Eclipse, которую фирма «1С» позиционионирует как современную альтернативу конфигуратору. В EDT расширение существует как самостоятельный проект в рабочей области (workspace), хранится в файловой структуре и удобно версионируется через Git.

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

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

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

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

Чем расширение в EDT отличается от работы в конфигураторе

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

Такое устройство даёт преимущества: полноценная работа с Git, поиск и рефакторинг по всему проекту, статический анализ кода, параллельная разработка нескольких расширений. Обратная сторона — необходимость держать в рабочей области проект самой конфигурации (или её выгрузку) и синхронизировать его с базой, иначе EDT не сможет проверять заимствованные объекты.

КритерийРасширение в конфигуратореРасширение в EDT
ХранениеВнутри информационной базыПроект в файловой системе
ВерсионированиеОграниченное, через хранилищеПолноценный Git
Проверка кодаБазовая проверка модулейСтатический анализ, валидация проекта
Командная работаСложнее, через хранилищеСтандартные Git-процессы

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

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

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

Как создать проект расширения в 1C:EDT

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

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

Заимствование объектов и переопределение кода

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

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

bsl
&Вместо("ПриСозданииНаСервере")
Процедура Расш1_ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
	// Собственная логика
	ПродолжитьВызов(Отказ, СтандартнаяОбработка);
КонецПроцедуры

Обновление типовой конфигурации при наличии расширения

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

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

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

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

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

Применяется, ошибок нет

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

Отмечено как неприменимое, есть сообщения о конфликтах

Валидация проекта в EDT
Норма

Нет ошибок заимствования и битых ссылок

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

Ошибки на удалённые или переименованные объекты

Работа доработанных форм и документов
Норма

Новые реквизиты и логика работают

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

Ошибки при открытии форм, код не выполняется

Типичные ошибки при работе с расширениями

Большинство проблем с расширениями связано не с самим механизмом, а с организацией процесса: несинхронизированный проект конфигурации в EDT, злоупотребление аннотацией «Вместо», игнорирование безопасного режима для пользовательских баз.

Типичные ошибки
01
Проект конфигурации в EDT не обновлён до версии базы — проверка заимствований работает по устаревшим данным, ошибки всплывают только в базе.
02
Массовое использование «Вместо» без ПродолжитьВызов — после обновления типовой теряется новая логика поставщика.
03
Изменение заимствованных свойств, которые платформа не контролирует, — конфликты обнаруживаются только при обновлении релиза.
04
Расширение без префикса в именах объектов — коллизии имён с другими расширениями и будущими объектами поставщика.
05
Отключённый безопасный режим там, где расширение используют рядовые пользователи, — риск выполнения небезопасного кода.

Расширение, внешняя обработка или изменение конфигурации: что выбрать

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

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

Как выбрать механизм доработки

Нужен сервисный инструмент без хранения данных (загрузка, сверка, пакетная обработка)Используйте внешнюю обработку или отчёт — проще распространять и обновлять
Нужно добавить реквизиты, формы, отчёты, роли или изменить логику типовых операцийСоздайте расширение — конфигурация останется на поддержке
Требуется изменить типы реквизитов, удалить типовые объекты или перестроить структуру данныхРассмотрите изменение конфигурации с оценкой стоимости будущих обновлений
Доработка нужна в нескольких базах с разными конфигурациямиПроверьте совместимость: расширение привязано к конкретной конфигурации, универсальным оно не будет
Держите проект основной конфигурации в EDT строго синхронизированным с рабочей базой. Рассинхронизация — самая частая причина ситуации, когда «в EDT всё зелёное, а в базе расширение не применяется». После каждого обновления релиза обновляйте и проект.
ПЗ
Практическое замечание

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

Расширение и дополнительные отчёты/обработки (БСП) — это одно и то же?

Нет. Подсистема «Дополнительные отчёты и обработки» из Библиотеки стандартных подсистем подключает внешние файлы .epf и .erf в безопасном режиме. Расширение конфигурации — механизм платформы, который меняет структуру метаданных и хранит данные. Они дополняют друг друга, но не заменяют.

Можно ли отключить расширение без потери данных?

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

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

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

Работает ли расширение в файловой базе?

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

Нужна ли EDT, чтобы создавать расширения?

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

Итог

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

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