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