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