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

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

Расширения конфигурации в 1С: что это и зачем они нужны

Что такое расширения конфигурации в 1С, чем они отличаются от изменения типовой конфигурации, как создать, подключить и обновить расширение без риска для данных.

Расширение конфигурации в 1С — это механизм платформы, который позволяет добавлять и изменять функциональность прикладного решения, не затрагивая саму конфигурацию поставщика. Доработка хранится отдельным объектом в информационной базе, подключается при запуске и «накладывается» на типовую конфигурацию. Благодаря этому типовая конфигурация остаётся на полной поддержке и обновляется штатно, а все специфические изменения живут в расширении.

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

Механизм доступен в конфигурациях на управляемых формах и поддерживается платформой начиная с версии 8.3.6, при этом с каждым релизом платформы список того, что можно изменить через расширение, заметно расширяется. Сегодня через расширения можно дорабатывать формы, роли, отчёты, обработки, модули, печатные формы и значительную часть объектов метаданных.

Как расширение работает и чем отличается от изменения конфигурации

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

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

Доработка: расширение или изменение конфигурации

Расширение конфигурации

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

Изменение типовой конфигурации

Нужно, когда требуется правка структуры данных, которую расширение не поддерживает. Конфигурация снимается с поддержки, обновления становятся ручными и дорогими.

Внешние отчёты и обработки

Подходят, если доработка не требует изменения типовых объектов — например, отдельный отчёт или загрузка данных. Самый безопасный вариант, но с ограниченными возможностями.

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

Что можно изменить через расширение

Состав возможностей зависит от версии платформы, но в актуальных версиях список широкий. Через расширение можно заимствовать и дорабатывать формы объектов, добавлять собственные реквизиты на формы, переопределять обработчики событий модулей с помощью аннотаций &ИзменениеИКонтроль, &После, &Перед и &Вместо.

Кроме того, расширения позволяют:

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

Аннотации переопределения методов

Основной инструмент вмешательства в типовой код — аннотации. &Перед и &После выполняют дополнительный код до или после типовой процедуры, не ломая её логику. &Вместо полностью заменяет типовой метод — это мощный, но рискованный вариант: при обновлении типовой процедуры ваш код продолжит выполнять старую логику. Аннотация &ИзменениеИКонтроль позволяет аккуратно встроиться внутрь типового метода через директивы #Вставка и #Удаление, и платформа проконтролирует её применимость при обновлении.

Как создать и подключить расширение

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

Порядок создания расширения
  1. 1
    Откройте конфигуратор и в меню «Конфигурация» выберите «Расширения конфигурации».
  2. 2
    В открывшемся списке нажмите «Создать» и задайте имя, синоним и префикс расширения.
  3. 3
    Добавьте нужные объекты: заимствуйте типовые формы или модули через «Добавить в расширение» либо создайте собственные объекты.
  4. 4
    Внесите доработки: измените форму, добавьте обработчики с аннотациями, создайте печатную форму.
  5. 5
    Нажмите «Обновить конфигурацию базы данных» (F7) — расширение подключится к базе.
  6. 6
    Перезапустите сеанс пользователя и проверьте, что доработка работает в режиме 1С:Предприятие.

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

Расширение можно выгрузить в файл с расширением .cfe и перенести в другую базу — например, с тестовой на рабочую. Загрузка выполняется через тот же список расширений конфигурации либо через обработку «Функциональность → Расширения» в пользовательском режиме, если она предусмотрена конфигурацией.

Безопасный режим и контроль применимости

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

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

Обновление конфигурации с расширениями

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

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

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

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

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

Расширение подключено, ошибок применимости нет

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

Расширение отключено или помечено ошибкой контроля

Доработанные формы
Норма

Формы открываются, добавленные элементы на месте

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

Элементы пропали или форма не открывается

Переопределённые обработчики
Норма

Код выполняется, логика соответствует новому релизу

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

Выполняется устаревшая логика, особенно при использовании «&Вместо»

Журнал регистрации
Норма

Нет ошибок применения расширений

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

Есть записи об ошибках контроля применимости

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

Несмотря на простоту механизма, на практике встречаются повторяющиеся промахи, которые сводят на нет его преимущества.

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

Когда расширения недостаточно

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

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

Как выбрать способ доработки

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

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

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

Часто задаваемые вопросы

Теряется ли расширение при обновлении конфигурации?

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

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

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

Нужно ли снимать конфигурацию с поддержки для расширения?

Нет, в этом и состоит смысл механизма. Расширение работает с конфигурацией на полной поддержке, замок поставщика остаётся закрытым, а обновления проходят штатно.

Чем расширение отличается от внешней обработки?

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

Работают ли расширения в обычном приложении?

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

Как перенести расширение из тестовой базы в рабочую?

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