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

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

Как написать расширение в 1С 8.3

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

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

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

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

Когда использовать расширение, а когда — другой инструмент

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

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

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

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

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

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

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

Прямая доработка конфигурации

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

Если доработка касается только дополнительной печатной формы или отчёта, часто достаточно механизма «Дополнительные отчеты и обработки» из Библиотеки стандартных подсистем — он вообще не требует конфигуратора. Расширение оправдано, когда нужно менять логику проведения, формы или добавлять данные в структуру базы.

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

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

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

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

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

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

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

Порядок создания расширения
  1. 1
    Сделайте резервную копию базы
  2. 2
    Откройте конфигуратор, меню «Конфигурация — Расширения конфигурации»
  3. 3
    Нажмите «Создать», заполните Имя, Синоним и Префикс
  4. 4
    Убедитесь, что назначение — «Дополнение»
  5. 5
    Сохраните расширение и откройте его дерево конфигурации

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

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

Изменение модуля объекта или менеджера

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

&После("ОбработкаПроведения")

Процедура Расш1_ОбработкаПроведения(Отказ, РежимПроведения)

// Дополнительная проверка заполнения

Если Не ЗначениеЗаполнено(ЭтотОбъект.Расш1_Ответственный) Тогда

Отказ = Истина;

Сообщить("Не заполнен ответственный");

КонецЕсли;

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

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

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

Сохранение, проверка и отладка расширения

Сохраните расширение (Ctrl+S в окне расширения). Если вы добавляли реквизиты или объекты, платформа предложит обновить конфигурацию базы данных — согласитесь и дождитесь реструктуризации. Затем запустите базу в режиме «Предприятие» и проверьте работу доработки: форма должна открываться, реквизит — сохраняться, изменённая логика — срабатывать.

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

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

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

Расширение в списке подключённых
Норма

Расширение видно, статус активен, версия актуальна

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

Расширение отсутствует или отключено — изменения не применяются

Новый реквизит в документе
Норма

Реквизит отображается на форме, значение сохраняется после записи

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

Реквизит не виден или значение пропадает — проверьте реструктуризацию и форму

Изменённая процедура
Норма

Код расширения выполняется, типовая логика не нарушена

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

Типовая проверка перестала работать — вероятно, использована аннотация &Вместо

Перенос расширения в другую базу

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

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

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

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

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

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

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

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

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

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

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

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

Почему расширение не загружается в другую базу?

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

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

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

Итог

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

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