Разработка и Конфигурация · 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 это делается через контекстное меню проекта конфигурации или перетаскиванием объекта в проект расширения. Заимствованный объект отображается со специальной пометкой, и вы редактируете только изменяемые части: добавляете реквизиты, элементы формы, обработчики.
Для переопределения кода модулей используются аннотации. Метод «Вместо» полностью заменяет типовую процедуру, «Перед» и «После» добавляют логику до или после неё. Рекомендуется предпочитать «Перед» и «После»: они устойчивее к обновлениям, так как типовой код продолжает выполняться.
&Вместо("ПриСозданииНаСервере")
Процедура Расш1_ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
// Собственная логика
ПродолжитьВызов(Отказ, СтандартнаяОбработка);
КонецПроцедурыОбновление типовой конфигурации при наличии расширения
Главное преимущество расширения проявляется при обновлении: типовая конфигурация обновляется штатно, поскольку не снималась с поддержки. После обновления платформа проверяет применимость расширения — совместимость заимствованных объектов с новой версией.
Если поставщик переименовал или удалил заимствованный объект, расширение перестанет применяться и в списке расширений появится признак ошибки. В EDT такие проблемы видны заранее: после обновления проекта конфигурации валидация расширения покажет битые ссылки. Исправление обычно сводится к повторному заимствованию объекта или корректировке переопределённых методов.
Как проверить расширение после обновления
Применяется, ошибок нет
Отмечено как неприменимое, есть сообщения о конфликтах
Нет ошибок заимствования и битых ссылок
Ошибки на удалённые или переименованные объекты
Новые реквизиты и логика работают
Ошибки при открытии форм, код не выполняется
Типичные ошибки при работе с расширениями
Большинство проблем с расширениями связано не с самим механизмом, а с организацией процесса: несинхронизированный проект конфигурации в EDT, злоупотребление аннотацией «Вместо», игнорирование безопасного режима для пользовательских баз.
Расширение, внешняя обработка или изменение конфигурации: что выбрать
Выбор механизма зависит от характера доработки. Разовые сервисные функции без хранения данных удобнее держать во внешних обработках и отчётах. Доработки, встроенные в бизнес-процессы и хранящие данные, — кандидат на расширение. Изменение самой конфигурации оправдано только там, где возможностей расширения физически недостаточно.
Как выбрать механизм доработки
Держите проект основной конфигурации в EDT строго синхронизированным с рабочей базой. Рассинхронизация — самая частая причина ситуации, когда «в EDT всё зелёное, а в базе расширение не применяется». После каждого обновления релиза обновляйте и проект.
Частые вопросы
Расширение и дополнительные отчёты/обработки (БСП) — это одно и то же?
Нет. Подсистема «Дополнительные отчёты и обработки» из Библиотеки стандартных подсистем подключает внешние файлы .epf и .erf в безопасном режиме. Расширение конфигурации — механизм платформы, который меняет структуру метаданных и хранит данные. Они дополняют друг друга, но не заменяют.
Можно ли отключить расширение без потери данных?
Да. При отключении расширения в списке расширений конфигурации данные его собственных объектов (справочников, документов, добавленных реквизитов) физически остаются в базе. При повторном подключении они снова станут доступны. Удаление расширения с очисткой данных — отдельная операция, её стоит выполнять только после резервной копии.
Сколько расширений можно подключить к одной базе?
Жёсткого практического лимита для типовых сценариев нет, можно подключать несколько расширений. Но каждое расширение увеличивает время запуска и риск пересечений: два расширения, переопределяющие один и тот же метод «Вместо», могут конфликтовать. Разумно консолидировать доработки в одно-два расширения на базу.
Работает ли расширение в файловой базе?
Да, расширения поддерживаются и в файловом, и в клиент-серверном варианте. Отличий в механизме нет, но в файловой базе при обновлении потребуется монопольный доступ, как и для любого изменения структуры данных.
Нужна ли EDT, чтобы создавать расширения?
Нет. Расширения создаются и в обычном конфигураторе — механизм платформы одинаков. EDT даёт удобства разработки: Git, статический анализ, работу с проектами. Расширение, созданное в конфигураторе, можно импортировать в EDT и наоборот, через выгрузку в файлы.
Что важно запомнить
Расширение в 1C:EDT (DT) — это отдельный проект доработок, накладываемый на типовую конфигурацию без снятия её с поддержки. Создавайте расширение поверх актуального проекта конфигурации, предпочитайте аннотации «Перед» и «После», после каждого обновления релиза проверяйте применимость расширения и валидацию проекта.