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