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

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

Как создать расширение в 1С: практическое руководство

Пошаговая инструкция по созданию расширения в 1С: подготовка конфигурации, заимствование объектов, изменение форм и кода, тестирование и обновление без снятия с поддержки.

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

Механизм подходит для большинства прикладных задач: добавления печатных форм, новых реквизитов в документы, доработки отчётов, изменения логики проведения, создания дополнительных ролей и регламентных заданий. Ограничения тоже есть — например, нельзя изменять состав типовых измерений регистров или удалять типовые объекты, но для 80–90% типовых доработок расширения достаточно.

Ниже разобран полный цикл работы: от подготовки конфигурации и создания расширения до заимствования объектов, написания кода, тестирования и переноса в рабочую базу. Материал ориентирован на конфигуратор 1С:Предприятие 8.3 с управляемыми формами.

Когда расширение подходит, а когда нужна доработка конфигурации

Прежде чем начинать, оцените задачу. Расширение удобно, когда нужно добавить новый объект (справочник, документ, отчёт, обработку), изменить форму типового объекта, дописать логику в обработчиках событий или переопределить поведение типовой процедуры через аннотации &ИзменениеИКонтроль и &После. Типовые механизмы при этом продолжают работать, а ваш код «оборачивает» их.

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

Расширение или снятие с поддержки

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

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

Снятие с поддержки

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

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

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

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

Первое действие перед любой доработкой — резервная копия базы. Для файловой базы достаточно скопировать файл 1Cv8.1CD или выполнить выгрузку в dt через конфигуратор («Администрирование → Выгрузить информационную базу»). Для клиент-серверной базы используйте средства СУБД или выгрузку dt. Без копии откатить неудачное расширение с данными будет сложно.

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

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

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

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

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

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

Заимствование объектов и изменение форм

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

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

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

Изменение кода: аннотации и порядок вызова

Код типовых модулей в расширении изменяется через механизм аннотаций. Заимствовав процедуру или функцию, вы выбираете способ подключения своего кода. Аннотация &После("ИмяПроцедуры") выполняет ваш код после типового, &Перед("ИмяПроцедуры") — до него. Это безопасные варианты: типовой код выполняется полностью, а вы лишь дополняете его.

Аннотация &ИзменениеИКонтроль("ИмяПроцедуры") позволяет полностью переопределить типовую процедуру: внутри вашей копии вы редактируете код, а вызов типовой реализации выполняется через специальную конструкцию. Этот вариант мощнее, но рискованнее — при обновлении релиза нужно вручную сверять, не изменилась ли типовая процедура, и переносить изменения поставщика в свою копию.

&После("ПриЗаписи")

Процедура Преф_ПриЗаписи(Отказ)

// Ваш код: выполнится после типового обработчика

Если Не Отказ Тогда

ЗаписатьДополнительныеДанные(Ссылка);

КонецЕсли;

КонецПроцедуры

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

Отдавайте предпочтение аннотациям «&После» и «&Перед», а «&ИзменениеИКонтроль» используйте только когда без переопределения не обойтись. Каждая процедура с «ИзменениеИКонтроль» — это обязательная ручная проверка при каждом обновлении типового релиза.
ПЗ
Практическое замечание

Тестирование и подключение в рабочей базе

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

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

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

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

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

Список расширений в режиме предприятия
Норма

Расширение видно, стоит флаг использования, нет отметки об ошибке

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

Расширение есть в списке, но неактивно или помечено как несовместимое

Изменённая форма объекта
Норма

Открывается, все типовые элементы на месте, новые элементы работают

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

Ошибка открытия формы, пропавшие типовые поля или кнопки

Проведение изменённого документа
Норма

Проводится штатно, движения корректны, ваш код срабатывает

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

Ошибки при проведении, отсутствие движений, дублирование записей

Журнал регистрации
Норма

Нет ошибок, связанных с расширением

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

Повторяющиеся ошибки вызова методов расширения

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

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

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

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

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

Можно ли создать расширение без конфигуратора?

Да, частично. В типовых конфигурациях на Библиотеке стандартных подсистем есть раздел «Расширения» в режиме предприятия, куда можно загрузить готовый файл расширения (.cfe). Но разработка расширения — создание объектов, изменение форм, написание кода — выполняется только в конфигураторе или в 1C:Enterprise Development Tools (EDT).

Чем расширение отличается от внешней обработки?

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

Слетит ли расширение при обновлении конфигурации?

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

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

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

Как отключить расширение, если оно вызывает ошибки?

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

Можно ли перенести расширение между разными конфигурациями?

Только если в целевой конфигурации существуют все заимствованные объекты с теми же именами и совместимой структурой. Расширение, написанное под конкретную типовую конфигурацию, на другую конфигурацию (например, с «Управления торговлей» на «Бухгалтерию») переносится не файлом, а переработкой кода.

Итог

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

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