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

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

1С: как сделать расширение конфигурации

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

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

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

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

Когда расширение подходит, а когда нет

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

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

Сравнение вариантов доработки

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

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

Доработка основной конфигурации

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

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

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

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

Сначала убедитесь, что версия платформы поддерживает нужные возможности расширений. Механизм появился в платформе 8.3.6 и существенно расширялся в последующих релизах: возможность добавлять собственные объекты метаданных, изменять роли, работать с web-сервисами появлялась постепенно. Если база работает на старой платформе, часть функций будет недоступна.

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

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

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

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

Нажмите кнопку «Создать». Появится новое расширение с автоматическим именем. Сразу задайте осмысленные свойства: имя (латиницей, без пробелов, например ДоработкиПродаж), префикс (будет добавляться к новым объектам, например «Расш1_»), синоним и версию. Префикс важен: он предотвращает конфликты имён, если в базе работает несколько расширений.

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

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

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

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

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

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

bsl
&После("ПриСозданииНаСервере")
Процедура Расш1_ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
    // Скрываем типовое поле и выводим сообщение
    Элементы.Комментарий.Видимость = Ложь;
КонецПроцедуры

Добавление собственных объектов и печатных форм

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

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

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

Отладка и проверка работы расширения

Расширение отлаживается так же, как обычный код конфигурации. Запустите отладку из конфигуратора (F5), поставьте точки останова в модулях расширения. Если точка останова не срабатывает, проверьте: сохранено ли расширение, обновлена ли конфигурация базы данных, не снят ли флажок «Активно» у расширения в списке.

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

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

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

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

Расширение в списке
Норма

Флажок «Активно» установлен, статус без ошибок

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

Красный значок, сообщение о конфликте имён или несовместимости

Работа новой функции
Норма

Кнопка/поле/печатная форма появились и выполняют задуманное

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

Изменений не видно — расширение не сохранено или не обновлена база

Типовые сценарии
Норма

Проведение документов и отчёты работают как раньше

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

Ошибки в типовых операциях — конфликт переопределённых обработчиков

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

Штатное обновление релиза проходит без снятия расширения

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

Расширение отключается с ошибкой контроля — изменились типовые объекты

Перенос расширения в рабочую базу и обновление

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

Обратите внимание на настройки безопасности. В свойствах расширения есть флажки «Безопасный режим» и «Защита от опасных действий». Если расширение обращается к файловой системе или внешним ресурсам, безопасный режим может блокировать эти операции — для доверенных разработок его обычно отключают. Также учитывайте, что у пользователя должны быть права на работу с расширениями, если база настроена строго.

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

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

Ограничения механизма и альтернативы

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

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

Маршрут решения

Как выбрать действие

Нужно добавить кнопку, поле или изменить формуСоздайте расширение и заимствуйте форму
Нужен отчёт или печатная форма без изменения интерфейсаИспользуйте внешний отчёт/обработку через механизм дополнительных отчётов
Нужно изменить состав плана обмена или тип реквизитаРасширение не поможет — дорабатывайте конфигурацию с оценкой стоимости обновлений
Нужно изменить типовой алгоритм в одной точкеЗаимствуйте модуль и используйте аннотации &Перед, &После или &Вместо

FAQ: частые вопросы о расширениях конфигурации

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

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

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

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

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

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

Нужны ли пользователям специальные права для работы с расширением?

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

Работают ли расширения в файловой и клиент-серверной базе одинаково?

Да, механизм одинаков. Различие только в том, что в клиент-серверном варианте расширения хранятся в базе на сервере СУБД, а применение и обновление могут требовать монопольного доступа или блокировки сеансов при изменении структуры данных.

Итог

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

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