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