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

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

Расширения в 1С: что это, зачем нужны и как с ними работать

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

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

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

Механизм доступен в конфигурациях на управляемых формах, работающих в режиме совместимости с платформой 8.3.6 и выше. Фактически все современные типовые решения — «1С:Бухгалтерия», «1С:Управление торговлей», «1С:Зарплата и управление персоналом» — поддерживают расширения, и фирма «1С» рекомендует именно этот способ доработки как приоритетный.

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

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

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

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

Какие задачи решают расширения

Наиболее распространённый сценарий — дополнительные печатные формы и отчёты. Расширение позволяет добавить собственный макет счёта, акта или ТОРГ-12, подключить внешнюю печатную форму к документу и вывести её в стандартное меню «Печать» без изменения типовых модулей.

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

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

Печатные формы и отчётыПолностью поддерживаются

Можно добавлять собственные макеты, отчёты на СКД и внешние обработки

Формы и модулиПоддерживаются с ограничениями

Можно изменять формы и дополнять модули через аннотации Перед, После, Вместо

ДанныеДобавление, не изменение

Можно создавать новые реквизиты и объекты, но нельзя менять тип и состав существующих полей

Роли и праваПоддерживаются

Можно создавать собственные роли и расширять типовые

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

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

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

Ещё одно практическое ограничение — аннотация «Вместо» полностью подменяет типовой обработчик. Если в следующем релизе поставщик изменит этот обработчик, ваша подмена продолжит работать со старой логикой, и новые исправления поставщика применены не будут. Поэтому «Вместо» рекомендуется использовать только когда «Перед» и «После» задачу не решают.

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

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

Подключение готового расширения в пользовательском режиме выполняется через раздел «Администрирование — Печатные формы, отчеты и обработки — Расширения». Файл расширения имеет формат CFE. При добавлении система может потребовать перезапуск сеанса — это нормально, так как структура метаданных меняется.

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

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

Безопасный режим и расширения в типовых конфигурациях

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

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

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

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

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

Проблемы возникают, когда поставщик переименовал или удалил объект, который заимствован в расширении, либо существенно изменил процедуру, дополненную через «ИзменениеИКонтроль». В таком случае расширение откажется подключаться, и в журнале регистрации появится сообщение о несовместимости. Исправление обычно сводится к повторному заимствованию изменённого объекта и корректировке кода.

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

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

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

Подключение расширения в списке
Норма

Расширение активно, ошибок применимости нет

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

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

Заимствованные объекты
Норма

Все объекты существуют в новой версии конфигурации

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

В журнале регистрации ошибки о не найденных объектах

Ключевые сценарии
Норма

Документы проводятся, печатные формы формируются

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

Ошибки в переопределённых обработчиках

Проверка в конфигураторе
Норма

Проверка расширения завершается без ошибок

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

Сообщения о несоответствии контролируемых методов

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

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

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

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

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

Когда расширение не подходит: альтернативы

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

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

Сравнение вариантов доработки

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

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

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

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

Доработка конфигурации

Подходит для глубокой переработки процессов без ограничений. Усложняет и удорожает обновления, требует снятия с поддержки

Дополнительные реквизиты и сведения

Встроенный механизм типовых конфигураций для простых полей без программирования. Не подходит для сложной логики

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

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

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

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

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

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

Что произойдёт с данными, если удалить расширение?

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

Почему расширение не подключается после обновления конфигурации?

Чаще всего причина в том, что поставщик переименовал или удалил объект, заимствованный в расширении, либо изменил сигнатуру контролируемого метода. Откройте расширение в конфигураторе на новой версии, выполните проверку — она покажет конкретные несовместимости, которые нужно исправить.

Можно ли отлаживать код расширения?

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

Поддерживаются ли расширения в файловых базах?

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

Итог

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

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