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

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

Расширения в 1С: как делать доработки без изменения конфигурации

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

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

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

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

Что такое расширение и когда его применять

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

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

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

Способы доработки 1С

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

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

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

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

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

Даёт полный доступ ко всем объектам, но усложняет обновление: каждое изменение придётся сопоставлять при объединении с новым релизом.

Подготовка: что проверить перед созданием расширения

Перед началом работы убедитесь, что версия платформы поддерживает нужные возможности расширений. Механизм активно развивается: в ранних релизах 8.3 набор допустимых изменений был заметно уже, чем в актуальных версиях. Если проект требует, например, расширять роли или добавлять собственные таблицы, проверьте поддержку этих возможностей в установленной версии платформы по документации.

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

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

Создание расширения в конфигураторе: пошагово

Откройте конфигуратор и перейдите в меню «Конфигурация → Расширения конфигурации». В открывшемся окне нажмите «Создать» и заполните свойства: имя (латиницей, без пробелов), синоним (отображаемое название) и префикс — он добавляется к именам собственных объектов расширения, чтобы они не конфликтовали с типовыми. Префикс должен быть коротким и уникальным, например «РШ_» или код вашей организации.

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

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

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

Доработка модулей и форм: приёмы и ограничения

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

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

Расширение форм

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

Добавление реквизитов типовым объектам

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

bsl
&После("ОбработкаПроведения")
Процедура РШ_ОбработкаПроведения(Отказ, РежимПроведения)
	// Дополнительные проверки и движения
	Если Отказ Тогда
		Возврат;
	КонецЕсли;
КонецПроцедуры

Подключение расширения к информационной базе

Готовое расширение переносится в рабочую базу файлом с расширением .cfe. В рабочей базе откройте раздел администрирования: в типовых конфигурациях это «НСИ и администрирование → Печатные формы, отчеты и обработки → Расширения» либо через конфигуратор — «Конфигурация → Расширения конфигурации → Загрузить из файла». После загрузки расширение появится в списке, и его можно активировать.

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

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

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

Как проверить результат

Запуск сеанса после подключения
Норма

Сеанс открывается штатно, ошибок в журнале регистрации нет

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

Ошибка при запуске, сообщения о несовместимости расширения

Работа доработанного объекта
Норма

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

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

Типовое поведение без изменений или ошибка в перехваченном методе

Обновление типовой конфигурации
Норма

Релиз устанавливается штатно, расширение остаётся применимым

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

При обновлении появляются сообщения о несовместимости расширения

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

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

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

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

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

Хранение, перенос и командная работа

Расширение следует регулярно сохранять в файл (.cfe) и хранить вне базы — например, в системе контроля версий или хотя бы в выделенном каталоге с датами версий. Конфигуратор поддерживает выгрузку расширения в файлы конфигурации (XML), что позволяет использовать Git и сравнивать версии доработки между собой.

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

Удаление расширения из базы выполняется через тот же список расширений. Если расширение добавляло собственные объекты с данными (справочники, регистры), при удалении эти данные будут потеряны — платформа предупредит об этом, но предварительно убедитесь, что данные не нужны или выгружены.

Частые вопросы о расширениях 1С

Можно ли через расширение изменить типовой отчёт?

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

Что произойдёт с расширением при обновлении платформы?

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

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

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

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

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

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

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

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

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

Итог

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

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