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